Initialize Tizen 2.3 2.3a_release submit/tizen_2.3/20140531.102520
authorSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 03:55:17 +0000 (12:55 +0900)
committerSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 03:55:17 +0000 (12:55 +0900)
48 files changed:
mobile/AUTHORS [new file with mode: 0644]
mobile/CMakeLists.txt [new file with mode: 0644]
mobile/LICENSE.Flora [new file with mode: 0644]
mobile/NOTICE [new file with mode: 0644]
mobile/data/00_search_edit_field_bg.png [new file with mode: 0644]
mobile/data/bt-syspopup.ini [new file with mode: 0644]
mobile/data/custom_popup.edc [new file with mode: 0644]
mobile/data/org.tizen.bt-syspopup.png [new file with mode: 0644]
mobile/data/org.tizen.bt-syspopup.rule [new file with mode: 0644]
mobile/data/org.tizen.bt-syspopup.xml [new file with mode: 0644]
mobile/debian/changelog [new file with mode: 0644]
mobile/debian/compat [new file with mode: 0644]
mobile/debian/control [new file with mode: 0644]
mobile/debian/dirs [new file with mode: 0644]
mobile/debian/docs [new file with mode: 0644]
mobile/debian/org.tizen.bt-syspopup.install.in [new file with mode: 0644]
mobile/debian/rules [new file with mode: 0644]
mobile/org.tizen.bt-syspopup.manifest [new file with mode: 0644]
mobile/src/bt-syspopup.c [new file with mode: 0644]
mobile/src/bt-syspopup.h [new file with mode: 0644]
packaging/org.tizen.bt-syspopup.spec [new file with mode: 0644]
wearable/AUTHORS [new file with mode: 0644]
wearable/CMakeLists.txt [new file with mode: 0644]
wearable/LICENSE.Flora [new file with mode: 0644]
wearable/NOTICE [new file with mode: 0644]
wearable/data/bt-syspopup.ini [new file with mode: 0644]
wearable/data/custom_popup.edc [new file with mode: 0644]
wearable/data/groups/auth_popup.edc [new file with mode: 0644]
wearable/data/groups/passkey_confirm.edc [new file with mode: 0644]
wearable/data/groups/passkey_confirm_popup.edc [new file with mode: 0644]
wearable/data/groups/passwd_popup.edc [new file with mode: 0644]
wearable/data/images/b_setup_wizard_bluetooth_pairing.png [new file with mode: 0644]
wearable/data/images/b_setup_wizard_device_01.png [new file with mode: 0644]
wearable/data/images/b_setup_wizard_pairing_01.png [new file with mode: 0644]
wearable/data/images/b_setup_wizard_watch_01.png [new file with mode: 0644]
wearable/data/org.tizen.bt-syspopup.png [new file with mode: 0644]
wearable/data/org.tizen.bt-syspopup.rule [new file with mode: 0644]
wearable/data/org.tizen.bt-syspopup.xml [new file with mode: 0644]
wearable/debian/changelog [new file with mode: 0644]
wearable/debian/compat [new file with mode: 0644]
wearable/debian/control [new file with mode: 0644]
wearable/debian/dirs [new file with mode: 0644]
wearable/debian/docs [new file with mode: 0644]
wearable/debian/org.tizen.bt-syspopup.install.in [new file with mode: 0644]
wearable/debian/rules [new file with mode: 0644]
wearable/org.tizen.bt-syspopup.manifest [new file with mode: 0644]
wearable/src/bt-syspopup.c [new file with mode: 0755]
wearable/src/bt-syspopup.h [new file with mode: 0644]

diff --git a/mobile/AUTHORS b/mobile/AUTHORS
new file mode 100644 (file)
index 0000000..46d1687
--- /dev/null
@@ -0,0 +1,2 @@
+Jinmin Jung <jinmin@samsung.com>
+DoHyun Pyun <dh79.pyun@samsung.com>
diff --git a/mobile/CMakeLists.txt b/mobile/CMakeLists.txt
new file mode 100644 (file)
index 0000000..18a3959
--- /dev/null
@@ -0,0 +1,81 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(bt-syspopup C)
+
+SET(SRCS ${CMAKE_SOURCE_DIR}/src/bt-syspopup.c)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       appcore-efl
+       bundle
+       devman
+       devman_haptic
+       dlog
+       dbus-glib-1
+       ecore
+       ecore-input
+       ecore-imf
+       edbus
+       edje
+       elementary
+       evas
+       gobject-2.0
+       pmapi
+       syspopup
+       utilX
+       bluetooth-api
+       feedback
+       aul)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -Wall -g")
+ENDFOREACH(flag)
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+#This is flag for Gprof
+#SET(CMAKE_C_FLAGS_RELEASE "-pg")
+
+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("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+
+ADD_CUSTOM_TARGET(custom_popup.edj
+COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/data
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edc
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edj DEPENDS
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} custom_popup.edj)
+
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /opt/apps/org.tizen.bt-syspopup/bin)
+
+# install desktop file & icon
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/data/org.tizen.bt-syspopup.xml DESTINATION /usr/share/packages/)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/data/org.tizen.bt-syspopup.rule DESTINATION /opt/etc/smack/accesses.d)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/org.tizen.bt-syspopup.png DESTINATION /opt/share/icons/default/small)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edj DESTINATION /opt/apps/org.tizen.bt-syspopup/res/edje)
diff --git a/mobile/LICENSE.Flora b/mobile/LICENSE.Flora
new file mode 100644 (file)
index 0000000..64b1c1e
--- /dev/null
@@ -0,0 +1,205 @@
+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.
+
+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/mobile/NOTICE b/mobile/NOTICE
new file mode 100644 (file)
index 0000000..3969942
--- /dev/null
@@ -0,0 +1,4 @@
+Copyright (c) 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/mobile/data/00_search_edit_field_bg.png b/mobile/data/00_search_edit_field_bg.png
new file mode 100644 (file)
index 0000000..8424339
Binary files /dev/null and b/mobile/data/00_search_edit_field_bg.png differ
diff --git a/mobile/data/bt-syspopup.ini b/mobile/data/bt-syspopup.ini
new file mode 100644 (file)
index 0000000..5abbace
--- /dev/null
@@ -0,0 +1,2 @@
+[ProcessSetting]
+BG_SCHEDULE=true
diff --git a/mobile/data/custom_popup.edc b/mobile/data/custom_popup.edc
new file mode 100644 (file)
index 0000000..a671f03
--- /dev/null
@@ -0,0 +1,284 @@
+collections {
+       group {
+               name: "passwd_popup";
+               images {
+                       image: "00_search_edit_field_bg.png" COMP;
+               }
+               parts {
+                       part {
+                               name: "pad_t";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 0.0;to_x: "pad_l";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;to_x: "pad_r";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "pad_l";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       max: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "pad_r";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       max: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+
+                       part { name: "label";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "pad_l";
+                                               to_y: "pad_t";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "pad_r";
+                                               to_y: "label_space";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "label_space";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "pad_l";
+                                               to_y: "label";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "pad_r";
+                                               to_y: "entry";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "entry";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "pad_l";
+                                               to_y: "label";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "pad_r";
+                                               to_y: "pad_b";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "pad_b";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 1.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "auth_popup";
+               parts {
+                       part {
+                               name: "pad_t";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "pad_l";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "pad_r";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "pad_l";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 26 0;
+                                       max: 26 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "pad_r";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 26 0;
+                                       max: 26 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "popup_title";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "pad_l";
+                                               to_y: "pad_t";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "pad_r";
+                                               to_y: "pad_b";
+                                       }
+                               }
+                       }
+                       part { name: "bottom_pad";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 1.0;
+                                       min: 0 32;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "pad_l";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "pad_r";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "pad_b";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 1.0;
+                                       min: 0 84;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "bottom_pad";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "bottom_pad";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "end_field";
+                               type: SPACER;
+                               scale: 1;
+                                description {
+                                        state: "default" 0.0;
+                                        align: 0.5 1.0;
+                                        min: 0 63;
+                                        fixed: 0 1;
+                                        rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "pad_b";
+                                        }
+                                        rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "pad_b";
+                                        }
+                                }
+                       }
+                       part {
+                               name: "check";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.5;
+                                       fixed: 1 1;
+                                       rel1.to: "end_field";
+                                       rel2.to: "end_field";
+                               }
+                       }
+               }
+       }
+}
diff --git a/mobile/data/org.tizen.bt-syspopup.png b/mobile/data/org.tizen.bt-syspopup.png
new file mode 100644 (file)
index 0000000..74ada1c
Binary files /dev/null and b/mobile/data/org.tizen.bt-syspopup.png differ
diff --git a/mobile/data/org.tizen.bt-syspopup.rule b/mobile/data/org.tizen.bt-syspopup.rule
new file mode 100644 (file)
index 0000000..9ecea79
--- /dev/null
@@ -0,0 +1,22 @@
+org.tizen.bt-syspopup system::homedir rwxat
+org.tizen.bt-syspopup system::vconf rwxat
+org.tizen.bt-syspopup system::media rwxat
+org.tizen.bt-syspopup system::share rwxat
+org.tizen.app-tray org.tizen.bt-syspopup r-x--
+org.tizen.bt-syspopup pulseaudio rwxat
+org.tizen.bt-syspopup sys-assert::core rwxat
+e17 org.tizen.bt-syspopup rwx--
+org.tizen.bt-syspopup ug_bluetooth r----
+org.tizen.bt-syspopup system::use_internet r----
+org.tizen.bt-syspopup xorg rw---
+org.tizen.bt-syspopup isf rwx--
+org.tizen.bt-syspopup ail::db rw---
+org.tizen.bt-syspopup syspopup::db rwx--
+org.tizen.bt-syspopup dbus rw---
+org.tizen.bt-syspopup sound_server rw---
+org.tizen.bt-syspopup power_manager -w---
+org.tizen.bt-syspopup immvibed rw---
+org.tizen.bt-syspopup svi-data r-x--
+org.tizen.bt-syspopup ui-gadget::client rw---
+org.tizen.bt-syspopup deviced rwx--
+deviced org.tizen.bt-syspopup rwx--
diff --git a/mobile/data/org.tizen.bt-syspopup.xml b/mobile/data/org.tizen.bt-syspopup.xml
new file mode 100644 (file)
index 0000000..bff80c9
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.bt-syspopup" version="2.0.25" install-location="internal-only">
+       <label>Bluetooth System Popup</label>
+       <author email="dh79.pyun@samsung.com" href="www.samsung.com">DoHyun Pyun</author>
+       <description>Bluetooth System Popup</description>
+       <ui-application appid="org.tizen.bt-syspopup" exec="/opt/apps/org.tizen.bt-syspopup/bin/bt-syspopup" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+               <label>Bluetooth System Popup</label>
+               <icon>org.tizen.bt-syspopup.png</icon>
+       </ui-application>
+</manifest>
diff --git a/mobile/debian/changelog b/mobile/debian/changelog
new file mode 100644 (file)
index 0000000..fd2dd06
--- /dev/null
@@ -0,0 +1,535 @@
+bt-syspopup (0.2.51) unstable; urgency=low
+
+  * Change the button theme to popop style
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.51
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 02 Aug 2012 13:49:22 +0900
+
+bt-syspopup (0.2.50) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.50
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 01 Aug 2012 15:48:03 +0900
+
+bt-syspopup (0.2.49) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.49
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Sat, 28 Jul 2012 10:20:27 +0900
+
+bt-syspopup (0.2.48) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.48
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 27 Jul 2012 15:03:06 +0900
+
+bt-syspopup (0.2.47) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.47
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 12 Jun 2012 08:44:35 +0900
+
+bt-syspopup (0.2.46) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.46
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 04 Jun 2012 12:45:57 +0530
+
+bt-syspopup (0.2.45) unstable; urgency=low
+
+  * Change the pairing messagef as UX guideline
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.45
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 04 Jun 2012 09:01:59 +0900
+
+bt-syspopup (0.2.44) unstable; urgency=low
+
+  * Change the pairing messagef as UX guideline
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.44
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 31 May 2012 15:56:50 +0900
+
+bt-syspopup (0.2.43) unstable; urgency=low
+
+  * Covert the pin code input view to popup
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.43
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 29 May 2012 16:12:38 +0900
+
+bt-syspopup (0.2.42) unstable; urgency=low
+
+  * Upload packagefor changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.42
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 May 2012 13:26:09 +0900
+
+bt-syspopup (0.2.41) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.41
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 May 2012 10:51:08 +0900
+
+bt-syspopup (0.2.40) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.40
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 18 May 2012 10:22:03 +0900
+
+bt-syspopup (0.2.39) unstable; urgency=low
+
+  * Upload package for changes.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.39
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 14 May 2012 16:24:38 +0530
+
+bt-syspopup (0.2.38) unstable; urgency=low
+
+  * Remove the codes about the MDM popup
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.38
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 08 May 2012 09:01:38 +0900
+
+bt-syspopup (0.2.37) unstable; urgency=low
+
+  * SLP prefix is changed
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.37
+
+ -- InJun Yang <injun.yang@samsung.com>  Thu, 15 Mar 2012 18:58:24 +0900
+
+bt-syspopup (0.2.36) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.36
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 15 Mar 2012 11:30:53 +0900
+
+bt-syspopup (0.2.35) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.35
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 14 Mar 2012 17:05:52 +0900
+
+bt-syspopup (0.2.34) unstable; urgency=low
+
+  * Modify and upload for elementary changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.34
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Tue, 13 Mar 2012 17:55:50 +0530
+
+bt-syspopup (0.2.33) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.33
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 12 Mar 2012 11:15:11 +0900
+
+bt-syspopup (0.2.32) unstable; urgency=low
+
+  * Change the code about editfield
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.32
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 29 Feb 2012 15:58:27 +0900
+
+bt-syspopup (0.2.31) unstable; urgency=low
+
+  * Apply the winset changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.31
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 16 Feb 2012 10:01:12 +0900
+
+bt-syspopup (0.2.30) unstable; urgency=low
+
+  * Add the popup for MDM service
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.30
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 01 Feb 2012 09:40:35 +0900
+
+bt-syspopup (0.2.29) unstable; urgency=low
+
+  * Remove the package dependency of devman / sysman
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.29
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 06 Dec 2011 16:45:07 +0900
+
+bt-syspopup (0.2.28) unstable; urgency=low
+
+  * Add new design ID to support multi-language
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.28
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 Nov 2011 13:37:08 +0900
+
+bt-syspopup (0.2.27) unstable; urgency=low
+
+  * Fix the display bug about input view
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.27
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 14 Nov 2011 17:02:17 +0900
+
+bt-syspopup (0.2.26) unstable; urgency=low
+
+  * Fix the bug about editfield focus
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.26
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 11 Nov 2011 11:07:09 +0900
+
+bt-syspopup (0.2.25) unstable; urgency=low
+
+  * Adjust the position of the naviframe to bottom
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.25
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 09 Nov 2011 09:00:14 +0900
+
+bt-syspopup (0.2.24) unstable; urgency=low
+
+  * Change the focus method of editfield as new policy
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.24
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 03 Nov 2011 08:51:42 +0900
+
+bt-syspopup (0.2.23) unstable; urgency=low
+
+  * Add the code to display the indicator (H0100135960)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.23
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 27 Oct 2011 11:22:14 +0900
+
+bt-syspopup (0.2.22) unstable; urgency=low
+
+  * Remove the deprecated IME API (ecore_imf_context_input_panel_reset)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.22
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 26 Oct 2011 17:31:24 +0900
+
+bt-syspopup (0.2.21) unstable; urgency=low
+
+  * Modify the desktop file for Manage applications
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.21
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 24 Oct 2011 11:20:33 +0900
+
+bt-syspopup (0.2.20) unstable; urgency=low
+
+  * Add the baselayout size in desktop file
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.20
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 10 Oct 2011 11:14:26 +0900
+
+bt-syspopup (0.2.19) unstable; urgency=low
+
+  * Apply the naviframe patch
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.19
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 05 Oct 2011 09:23:35 +0900
+
+bt-syspopup (0.2.18) unstable; urgency=low
+
+  * Upload the packages
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.18
+
+ -- Chethan T N <chethan.tn@samsung.com>  Fri, 30 Sep 2011 18:34:32 +0530
+
+bt-syspopup (0.2.17) unstable; urgency=low
+
+  * Remove the dependency of libui-bgimage-dev
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.17
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 29 Sep 2011 08:38:38 +0900
+
+bt-syspopup (0.2.16) unstable; urgency=low
+
+  * Upload package for changee
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.16
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 29 Aug 2011 19:23:14 +0900
+
+bt-syspopup (0.2.15) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.15
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 11 Aug 2011 08:29:37 +0900
+
+bt-syspopup (0.2.14) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.14
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 09 Aug 2011 08:29:51 +0900
+
+bt-syspopup (0.2.13) unstable; urgency=low
+
+  * Apply the changed layout style & elm_bg
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.13
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 03 Aug 2011 18:42:59 +0900
+
+bt-syspopup (0.2.12) unstable; urgency=low
+
+  * Remove the system popup when the remote device cancel the event (H0100131180)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.12
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 01 Aug 2011 08:24:54 +0900
+
+bt-syspopup (0.2.11) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.11
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 21 Jul 2011 11:11:18 +0900
+
+bt-syspopup (0.2.10) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.10
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Thu, 07 Jul 2011 17:47:11 +0530
+
+bt-syspopup (0.2.9) unstable; urgency=low
+
+  * Remove 'ReplyPinCode' event when the timeout occured about keyboard. (H0100129046)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.9
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 30 Jun 2011 11:43:31 +0900
+
+bt-syspopup (0.2.8) unstable; urgency=low
+
+  * Change the button align to center
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.8
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 29 Jun 2011 14:56:34 +0900
+
+bt-syspopup (0.2.7) unstable; urgency=low
+
+  * Apply the landscape mode
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.7
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 10 Jun 2011 11:50:13 +0900
+
+bt-syspopup (0.2.6) unstable; urgency=low
+
+  * Upload packages for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.6
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Thu, 09 Jun 2011 15:05:15 +0530
+
+bt-syspopup (0.2.5) unstable; urgency=low
+
+  * Add the icon in navigation bar (Defect H0100127548)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.5
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 31 May 2011 16:08:49 +0900
+
+bt-syspopup (0.2.4) unstable; urgency=low
+
+  * Add the dbus name to broadcast the dbus message
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.4
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 25 May 2011 17:24:31 +0900
+
+bt-syspopup (0.2.3) unstable; urgency=low
+
+  * Replace the dialogue group API to genlist dialogue group
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.3
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 16 May 2011 09:54:35 +0900
+
+bt-syspopup (0.2.2) unstable; urgency=low
+
+  * Show the ticker noti when the file recieved (Defect H0100126544)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.2
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 13 May 2011 17:27:36 +0900
+
+bt-syspopup (0.2.1) unstable; urgency=low
+
+  * Upload package for changes.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.1
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 09 May 2011 17:03:49 +0530
+
+bt-syspopup (0.2.0) unstable; urgency=low
+
+  * Release ug-obexd init dpkg
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.0
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 27 Apr 2011 18:25:30 +0900
+
+bt-syspopup (0.1.14) unstable; urgency=low
+
+  * Change package name
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.1.14
+
+ -- InJun Yang <injun.yang@samsung.com>  Mon, 11 Apr 2011 20:53:33 +0900
+
+deb.com.samsung.bt-syspopup (0.1.13) unstable; urgency=low
+
+  * Add the dependency of the development package about dbus-glib-1 and gobject-2.0 in control file
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.13
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 07 Apr 2011 16:49:40 +0900
+
+deb.com.samsung.bt-syspopup (0.1.12) unstable; urgency=low
+
+  * Remove dependency of the imlib package
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.12
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 29 Mar 2011 20:20:03 +0900
+
+deb.com.samsung.bt-syspopup (0.1.11) unstable; urgency=low
+
+  * Apply N-beat UX
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.11
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 22 Mar 2011 16:56:59 +0900
+
+deb.com.samsung.bt-syspopup (0.1.10) unstable; urgency=low
+
+  * New popup for applcation usage.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.10
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Fri, 25 Feb 2011 12:29:26 +0530
+
+deb.com.samsung.bt-syspopup (0.1.9) unstable; urgency=low
+
+  * Remove the unnecessary NULL pointer check
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.9
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 Feb 2011 20:44:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.8) unstable; urgency=low
+
+  * Corrected IME appearance
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.8
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 18 Feb 2011 18:50:52 +0900
+
+deb.com.samsung.bt-syspopup (0.1.7) unstable; urgency=low
+
+  * Modify the desktop path to intall
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.7
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 17 Feb 2011 19:17:32 +0900
+
+deb.com.samsung.bt-syspopup (0.1.6) unstable; urgency=low
+
+  * Change the desktop path to install, name of the icon
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.6
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 14 Feb 2011 17:09:22 +0900
+
+deb.com.samsung.bt-syspopup (0.1.5) unstable; urgency=low
+
+  * hide bt-syspopup in task manager
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.5
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 08 Feb 2011 15:16:03 +0900
+
+deb.com.samsung.bt-syspopup (0.1.4) unstable; urgency=low
+
+  * Fix the build break (libslp-pm-dev)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.4
+
+ -- Hyeongbae Park <jupio.park@samsung.com>  Mon, 07 Feb 2011 18:02:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.3) unstable; urgency=low
+
+  * Fix the BS when try to pair with the Arabic name's device
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.3
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 07 Feb 2011 11:26:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.2) unstable; urgency=low
+
+  * Add the code to avoid the BS
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.2
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 19 Jan 2011 20:33:48 +0900
+
+deb.com.samsung.bt-syspopup (0.1.1) unstable; urgency=low
+
+  * Show the IME after displaying the main layout
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.1
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 07 Jan 2011 13:50:37 +0900
+
+deb.com.samsung.bt-syspopup (0.1.0) unstable; urgency=low
+
+  * Initial Release.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.0
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 28 Dec 2010 16:31:28 +0900
diff --git a/mobile/debian/compat b/mobile/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/mobile/debian/control b/mobile/debian/control
new file mode 100644 (file)
index 0000000..03bb1c1
--- /dev/null
@@ -0,0 +1,19 @@
+Source: bt-syspopup
+Section: main
+Priority: extra
+Maintainer: Hocheol Seo <hocheol.seo@samsung.com>, DoHyun Pyun <dh79.pyun@samsung.com>, InJun Yang <injun.yang@samsung.com>, Chanyeol Park <chanyeol.park@samsung.com>
+Uploaders: Sunil Behera <sunil.behera@samsung.com>, Syam Sidhardhan <s.syam@samsung.com>
+Build-Depends: debhelper (>= 5),libevas-dev,libecore-dev,libethumb-dev,libelm-dev,libefreet-dev, libslp-sensor-dev,libappcore-efl-dev,libdevman-dev, libslp-utilx-dev, syspopup-dev, dlog-dev, libslp-pm-dev, libdbus-glib-1-dev, libglib2.0-dev, libaul-1-dev
+Standards-Version: 0.1.0 
+
+Package: org.tizen.bt-syspopup
+Section: main
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libslp-utilx-0, libdlog-0
+Description: bluetooth system-popup application (bluetooth system popup)
+
+Package: org.tizen.bt-syspopup-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: bluetooth system-popup application (unstripped)
diff --git a/mobile/debian/dirs b/mobile/debian/dirs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/mobile/debian/docs b/mobile/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/mobile/debian/org.tizen.bt-syspopup.install.in b/mobile/debian/org.tizen.bt-syspopup.install.in
new file mode 100644 (file)
index 0000000..37fa72f
--- /dev/null
@@ -0,0 +1,3 @@
+/opt/apps/org.tizen.bt-syspopup/bin/bt-syspopup
+/opt/share/icons/*
+/opt/share/process-info/bt-syspopup.ini
diff --git a/mobile/debian/rules b/mobile/debian/rules
new file mode 100644 (file)
index 0000000..00c3f0d
--- /dev/null
@@ -0,0 +1,140 @@
+#!/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
+
+PREFIX ?= /opt/apps/org.tizen.bluetooth
+CFLAGS ?= -Wall -g
+CXXFLAGS ?=  -Wall -g
+LDFLAGS ?=
+DATADIR ?= /opt
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+       CXXFLAGS += -O0
+else
+       CFLAGS += -O2
+       CXXFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+#CMAKE_TMP_DIR = $(CURDIR)/cmake_tmp
+
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+#      mkdir -p $(CMAKE_TMP_DIR);
+       CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" 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.
+       $(MAKE)
+       #docbook-to-man debian/wavplayer.sgml > wavplayer.1
+
+       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#@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.
+       -$(MAKE) clean
+       #rm -rf $(CMAKE_TMP_DIR)
+
+       for f in `find $(CURDIR)/ -name "CMakeCache.txt"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "CMakeFiles"`; do \
+               rm -rf $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "cmake_install.cmake"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "Makefile"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "install_manifest.txt"`; do \
+               rm -f $${f}; \
+       done
+       
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+       rm -f data/*.desktop
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/wavplayer.
+       $(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.bt-syspopup-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/mobile/org.tizen.bt-syspopup.manifest b/mobile/org.tizen.bt-syspopup.manifest
new file mode 100644 (file)
index 0000000..199a75a
--- /dev/null
@@ -0,0 +1,12 @@
+<manifest>
+    <define>
+        <domain name="org.tizen.bt-syspopup"/>
+    </define>
+    <assign>
+        <filesystem path="/usr/share/applications/org.tizen.bt-syspopup.desktop" label="_"/>
+       <filesystem path="/opt/share/icons/default/small/org.tizen.bt-syspopup.png" label="_"/>
+    </assign>
+    <request>
+        <domain name="org.tizen.bt-syspopup"/>
+    </request>
+</manifest>
diff --git a/mobile/src/bt-syspopup.c b/mobile/src/bt-syspopup.c
new file mode 100644 (file)
index 0000000..25f7815
--- /dev/null
@@ -0,0 +1,1593 @@
+/*
+ * Copyright (c) 2012-2013 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 <pmapi.h>
+#include <appcore-efl.h>
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <syspopup.h>
+#include <E_DBus.h>
+#include <aul.h>
+#include <bluetooth-api.h>
+#include <feedback.h>
+
+#include "bt-syspopup.h"
+
+static void __bluetooth_delete_input_view(struct bt_popup_appdata *ad);
+static void __bluetooth_win_del(void *data);
+
+static void __bluetooth_input_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_input_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_keyback_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_mouseup_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+static int __bluetooth_terminate(void *data);
+
+static int __bluetooth_term(bundle *b, void *data)
+{
+       BT_DBG("System-popup: terminate");
+       __bluetooth_terminate(data);
+       return 0;
+}
+
+static int __bluetooth_timeout(bundle *b, void *data)
+{
+       BT_DBG("System-popup: timeout");
+       return 0;
+}
+
+syspopup_handler handler = {
+       .def_term_fn = __bluetooth_term,
+       .def_timeout_fn = __bluetooth_timeout
+};
+
+/* Cleanup objects to avoid mem-leak */
+static void __bluetooth_cleanup(struct bt_popup_appdata *ad)
+{
+       if (ad == NULL)
+               return;
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       if (ad->win_main) {
+               evas_object_del(ad->win_main);
+               ad->win_main = NULL;
+       }
+
+       if (ad->agent_proxy) {
+               g_object_unref(ad->agent_proxy);
+               ad->agent_proxy = NULL;
+       }
+}
+
+static void __bluetooth_notify_event(void)
+{
+       int result;
+
+       BT_DBG("Notify event");
+
+       result = feedback_initialize();
+       if (result != FEEDBACK_ERROR_NONE) {
+               BT_ERR("feedback_initialize error : %d", result);
+               return;
+       }
+
+       result = feedback_play(FEEDBACK_PATTERN_GENERAL);
+       BT_DBG("ret value : %d", result);
+
+       result = feedback_deinitialize();
+       if (result != FEEDBACK_ERROR_NONE) {
+               BT_DBG("feedback_initialize error : %d", result);
+               return;
+       }
+}
+
+static void __bluetooth_parse_event(struct bt_popup_appdata *ad, const char *event_type)
+{
+       if (!strcasecmp(event_type, "pin-request"))
+               ad->event_type = BT_EVENT_PIN_REQUEST;
+       else if (!strcasecmp(event_type, "passkey-confirm-request"))
+               ad->event_type = BT_EVENT_PASSKEY_CONFIRM_REQUEST;
+       else if (!strcasecmp(event_type, "passkey-request"))
+               ad->event_type = BT_EVENT_PASSKEY_REQUEST;
+       else if (!strcasecmp(event_type, "authorize-request"))
+               ad->event_type = BT_EVENT_AUTHORIZE_REQUEST;
+       else if (!strcasecmp(event_type, "app-confirm-request"))
+               ad->event_type = BT_EVENT_APP_CONFIRM_REQUEST;
+       else if (!strcasecmp(event_type, "push-authorize-request"))
+               ad->event_type = BT_EVENT_PUSH_AUTHORIZE_REQUEST;
+       else if (!strcasecmp(event_type, "confirm-overwrite-request"))
+               ad->event_type = BT_EVENT_CONFIRM_OVERWRITE_REQUEST;
+       else if (!strcasecmp(event_type, "keyboard-passkey-request"))
+               ad->event_type = BT_EVENT_KEYBOARD_PASSKEY_REQUEST;
+       else if (!strcasecmp(event_type, "bt-information"))
+               ad->event_type = BT_EVENT_INFORMATION;
+       else if (!strcasecmp(event_type, "exchange-request"))
+               ad->event_type = BT_EVENT_EXCHANGE_REQUEST;
+       else if (!strcasecmp(event_type, "phonebook-request"))
+               ad->event_type = BT_EVENT_PHONEBOOK_REQUEST;
+       else if (!strcasecmp(event_type, "message-request"))
+               ad->event_type = BT_EVENT_MESSAGE_REQUEST;
+       else if (!strcasecmp(event_type, "pairing-retry-request"))
+               ad->event_type = BT_EVENT_RETRY_PAIR_REQUEST;
+       else
+               ad->event_type = 0x0000;
+               return;
+}
+
+static void __bluetooth_request_to_cancel(void)
+{
+       bluetooth_cancel_bonding();
+}
+
+static void __bluetooth_remove_all_event(struct bt_popup_appdata *ad)
+{
+       BT_DBG("Remove event 0X%X", ad->event_type);
+       switch (ad->event_type) {
+       case BT_EVENT_PIN_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_STRING, "", G_TYPE_INVALID,
+                                          G_TYPE_INVALID);
+
+               break;
+
+
+       case BT_EVENT_KEYBOARD_PASSKEY_REQUEST:
+
+               __bluetooth_request_to_cancel();
+
+               break;
+
+       case BT_EVENT_PASSKEY_CONFIRM_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_PASSKEY_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_STRING, "", G_TYPE_INVALID,
+                                          G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_PASSKEY_DISPLAY_REQUEST:
+               /* Nothing to do */
+               break;
+
+       case BT_EVENT_AUTHORIZE_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_APP_CONFIRM_REQUEST:
+               {
+                       DBusMessage *msg;
+                       int response;
+
+                       msg = dbus_message_new_signal(
+                                       BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                       BT_SYS_POPUP_INTERFACE,
+                                       BT_SYS_POPUP_METHOD_RESPONSE);
+
+                       /* For timeout rejection is sent to  be handled in
+                          application */
+                       response = BT_AGENT_REJECT;
+
+                       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response,
+                                DBUS_TYPE_INVALID);
+
+                       e_dbus_message_send(ad->EDBusHandle,
+                               msg, NULL, -1, NULL);
+
+                       dbus_message_unref(msg);
+               }
+               break;
+
+       case BT_EVENT_PUSH_AUTHORIZE_REQUEST:
+       case BT_EVENT_EXCHANGE_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_CONFIRM_OVERWRITE_REQUEST: {
+               DBusMessage *msg;
+               int response = BT_AGENT_REJECT;
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                               BT_SYS_POPUP_INTERFACE,
+                                               BT_SYS_POPUP_METHOD_RESPONSE);
+               if (msg == NULL) {
+                       BT_ERR("msg == NULL, Allocation failed");
+                       break;
+               }
+
+               dbus_message_append_args(msg, DBUS_TYPE_INT32,
+                                               &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               break;
+       }
+
+       case BT_EVENT_RETRY_PAIR_REQUEST: {
+               DBusMessage *msg = NULL;
+               int response = BT_AGENT_REJECT;
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                             BT_SYS_POPUP_INTERFACE,
+                             BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg,
+                        DBUS_TYPE_INT32, &response,
+                        DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               break;
+       }
+
+       default:
+               break;
+       }
+
+       __bluetooth_win_del(ad);
+}
+static void __bluetooth_retry_pairing_cb(void *data,
+                                    Evas_Object *obj, void *event_info)
+{
+       BT_DBG("+ ");
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       DBusMessage *msg = NULL;
+       int response;
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+        else
+               response = BT_AGENT_REJECT;
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response,
+                                DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+
+       dbus_message_unref(msg);
+
+       evas_object_del(obj);
+
+       __bluetooth_win_del(ad);
+       BT_DBG("-");
+}
+
+static int __bluetooth_request_timeout_cb(void *data)
+{
+       struct bt_popup_appdata *ad;
+
+       if (data == NULL)
+               return 0;
+
+       ad = (struct bt_popup_appdata *)data;
+
+       BT_DBG("Request time out, Canceling reqeust");
+
+       /* Destory UI and timer */
+       if (ad->timer) {
+               ecore_timer_del(ad->timer);
+               ad->timer = NULL;
+       }
+
+       __bluetooth_remove_all_event(ad);
+       return 0;
+}
+
+static void __bluetooth_input_request_cb(void *data,
+                                      Evas_Object *obj, void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+       int response;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+
+       if (ad == NULL)
+               return;
+
+       /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+
+       input_text = (char *)elm_entry_entry_get(ad->entry);
+
+       if (input_text) {
+               convert_input_text =
+                   elm_entry_markup_to_utf8(input_text);
+       }
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+       else
+               response = BT_AGENT_CANCEL;
+
+       if (convert_input_text == NULL)
+               return;
+
+       BT_DBG("PIN/Passkey[%s] event[%d] response[%d - %s]",
+                    convert_input_text, ad->event_type, response,
+                    (response == BT_AGENT_ACCEPT) ? "Accept" : "Cancel");
+
+       if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                  "ReplyPinCode", G_TYPE_UINT, response,
+                                  G_TYPE_STRING, convert_input_text,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+       } else {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                  "ReplyPasskey", G_TYPE_UINT, response,
+                                  G_TYPE_STRING, convert_input_text,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+       }
+       __bluetooth_delete_input_view(ad);
+
+       free(convert_input_text);
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_input_cancel_cb(void *data,
+                                      Evas_Object *obj, void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+
+       bluetooth_cancel_bonding();
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_passkey_confirm_cb(void *data,
+                                        Evas_Object *obj, void *event_info)
+{
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK)) {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_ACCEPT,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       } else {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       }
+
+       evas_object_del(obj);
+
+       __bluetooth_win_del(ad);
+}
+
+static int __bluetooth_init_app_signal(struct bt_popup_appdata *ad)
+{
+       if (NULL == ad)
+               return FALSE;
+
+       e_dbus_init();
+       ad->EDBusHandle = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (!ad->EDBusHandle) {
+               BT_ERR("e_dbus_bus_get failed  \n ");
+               return FALSE;
+       } else {
+               BT_DBG("e_dbus_bus_get success \n ");
+               e_dbus_request_name(ad->EDBusHandle,
+                                   BT_SYS_POPUP_IPC_NAME, 0, NULL, NULL);
+       }
+       return TRUE;
+}
+
+static void __bluetooth_app_confirm_cb(void *data,
+                                    Evas_Object *obj, void *event_info)
+{
+       BT_DBG("__bluetooth_app_confirm_cb ");
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       DBusMessage *msg = NULL;
+       int response;
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+       else
+               response = BT_AGENT_REJECT;
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+       dbus_message_unref(msg);
+
+       evas_object_del(obj);
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_authorization_request_cb(void *data,
+                                              Evas_Object *obj,
+                                              void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       guint reply_val;
+
+       if (obj == NULL || ad == NULL)
+               return;
+
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK)) {
+               reply_val = (ad->make_trusted == TRUE) ?
+                               BT_AGENT_ACCEPT_ALWAYS : BT_AGENT_ACCEPT;
+       } else {
+               reply_val = BT_AGENT_CANCEL;
+       }
+
+       dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyAuthorize",
+               G_TYPE_UINT, reply_val,
+               G_TYPE_INVALID, G_TYPE_INVALID);
+
+       ad->make_trusted = FALSE;
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_push_authorization_request_cb(void *data,
+                                                   Evas_Object *obj,
+                                                   void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       if (obj == NULL || ad == NULL)
+               return;
+
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               dbus_g_proxy_call_no_reply(ad->obex_proxy, "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_ACCEPT,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       else
+               dbus_g_proxy_call_no_reply(ad->obex_proxy, "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_ime_hide(void)
+{
+       Ecore_IMF_Context *imf_context = NULL;
+       imf_context = ecore_imf_context_add(ecore_imf_context_default_id_get());
+       if (imf_context)
+               ecore_imf_context_input_panel_hide(imf_context);
+}
+
+static void __bluetooth_entry_change_cb(void *data, Evas_Object *obj,
+                                     void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+       char *output_text = NULL;
+       int text_length = 0;
+
+       input_text = (char *)elm_entry_entry_get(obj);
+
+       if (input_text) {
+               convert_input_text = elm_entry_markup_to_utf8(input_text);
+               if (convert_input_text) {
+                       text_length = strlen(convert_input_text);
+
+                       if (text_length == 0) {
+                               elm_object_disabled_set(ad->edit_field_save_btn,
+                                                       EINA_TRUE);
+                       } else {
+                               elm_object_disabled_set(ad->edit_field_save_btn,
+                                                       EINA_FALSE);
+                       }
+
+                       if (ad->event_type == BT_EVENT_PASSKEY_REQUEST) {
+                               if (text_length > BT_PK_MLEN) {
+                                       convert_input_text[BT_PK_MLEN] = '\0';
+                                       output_text = elm_entry_utf8_to_markup(
+                                                       convert_input_text);
+
+                                       elm_entry_entry_set(obj, output_text);
+                                       elm_entry_cursor_end_set(obj);
+                                       free(output_text);
+                               }
+                       } else {
+                               if (text_length > BT_PIN_MLEN) {
+                                       convert_input_text[BT_PIN_MLEN] = '\0';
+                                       output_text = elm_entry_utf8_to_markup(
+                                                       convert_input_text);
+
+                                       elm_entry_entry_set(obj, output_text);
+                                       elm_entry_cursor_end_set(obj);
+                                       free(output_text);
+                               }
+                       }
+                       free(convert_input_text);
+               }
+       }
+}
+
+static void __bluetooth_auth_check_clicked_cb(void *data, Evas_Object *obj,
+                                                       void *event_info)
+{
+       struct bt_popup_appdata *ad = data;
+       Eina_Bool state = elm_check_state_get(obj);
+
+       BT_DBG("Check %d", state);
+       ad->make_trusted = state;
+}
+
+static void __bluetooth_mouseup_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       DBusMessage *msg = NULL;
+       int response = BT_AGENT_REJECT;
+
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_auth_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_auth_cb);
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg,
+                                        DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_keyback_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       DBusMessage *msg = NULL;
+       int response = BT_AGENT_REJECT;
+
+       BT_DBG("Keyboard event callback function is called + \n");
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_auth_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_auth_cb);
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg,
+                                        DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+static void __bluetooth_draw_auth_popup(struct bt_popup_appdata *ad,
+                       const char *title, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char temp_str[BT_TITLE_STR_MAX_LEN + BT_TEXT_EXTRA_LEN] = { 0 };
+       Evas_Object *btn1 = NULL;
+       Evas_Object *btn2 = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *check = NULL;
+
+       BT_DBG("+");
+
+       ad->make_trusted = TRUE;
+
+       ad->popup = elm_popup_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND,
+                                               EVAS_HINT_EXPAND);
+
+       elm_object_style_set(ad->popup, "transparent");
+
+       layout = elm_layout_add(ad->popup);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "auth_popup");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+
+       if (title != NULL) {
+               snprintf(temp_str, BT_TITLE_STR_MAX_LEN + BT_TEXT_EXTRA_LEN,
+                                       "%s", title);
+
+               label = elm_label_add(ad->popup);
+               elm_object_style_set(label, "popup/default");
+               elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+               elm_object_text_set(label, temp_str);
+               evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+               evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               elm_object_part_content_set(layout, "popup_title", label);
+               evas_object_show(label);
+       }
+
+       check = elm_check_add(ad->popup);
+       elm_check_state_set(check, EINA_TRUE);
+       elm_object_text_set(check, BT_STR_DONT_ASK_AGAIN);
+       evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(check);
+       evas_object_smart_callback_add(check, "changed",
+                                       __bluetooth_auth_check_clicked_cb, ad);
+       elm_object_part_content_set(layout, "check", check);
+
+       evas_object_show(layout);
+       elm_object_content_set(ad->popup, layout);
+
+       btn1 = elm_button_add(ad->popup);
+       elm_object_style_set(btn1, "popup");
+       elm_object_text_set(btn1, btn1_text);
+       elm_object_part_content_set(ad->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+       btn2 = elm_button_add(ad->popup);
+       elm_object_style_set(btn2, "popup");
+       elm_object_text_set(btn2, btn2_text);
+       elm_object_part_content_set(ad->popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", func, ad);
+
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_mouseup_auth_cb, ad);
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_keyback_auth_cb, ad);
+
+       evas_object_show(ad->popup);
+       evas_object_show(ad->win_main);
+
+       BT_DBG("-");
+}
+
+static void __bluetooth_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_cb);
+               __bluetooth_remove_all_event(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+
+       BT_DBG("Keyboard event callback function is called %s+ \n", ev->keyname);
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_cb);
+               __bluetooth_remove_all_event(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+static void __bluetooth_draw_popup(struct bt_popup_appdata *ad,
+                       const char *title, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char temp_str[BT_TITLE_STR_MAX_LEN+BT_TEXT_EXTRA_LEN] = { 0 };
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+
+       BT_DBG("__bluetooth_draw_popup");
+
+       ad->popup = elm_popup_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       elm_object_style_set(ad->popup, "transparent");
+
+       if (title != NULL) {
+               snprintf(temp_str, BT_TITLE_STR_MAX_LEN+BT_TEXT_EXTRA_LEN,
+                       "<align=center>%s</align>", title);
+               elm_object_text_set(ad->popup, temp_str);
+       }
+
+       if ((btn1_text != NULL) && (btn2_text != NULL)) {
+               btn1 = elm_button_add(ad->popup);
+               elm_object_style_set(btn1, "popup");
+               elm_object_text_set(btn1, btn1_text);
+               elm_object_part_content_set(ad->popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+               btn2 = elm_button_add(ad->popup);
+               elm_object_style_set(btn2, "popup");
+               elm_object_text_set(btn2, btn2_text);
+               elm_object_part_content_set(ad->popup, "button2", btn2);
+               evas_object_smart_callback_add(btn2, "clicked", func, ad);
+       } else if (btn1_text != NULL) {
+               btn1 = elm_button_add(ad->popup);
+               elm_object_style_set(btn1, "popup");
+               elm_object_text_set(btn1, btn1_text);
+               elm_object_part_content_set(ad->popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", func, ad);
+       }
+
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_mouseup_cb, ad);
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_keyback_cb, ad);
+
+       evas_object_show(ad->popup);
+       evas_object_show(ad->win_main);
+       elm_object_focus_set(ad->popup, EINA_TRUE);
+
+       BT_DBG("__bluetooth_draw_popup END");
+}
+
+static void __bluetooth_input_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       int response = BT_AGENT_CANCEL;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               if (ad == NULL)
+                       return;
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+
+               /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+               input_text = (char *)elm_entry_entry_get(ad->entry);
+               if (input_text) {
+                       convert_input_text =
+                               elm_entry_markup_to_utf8(input_text);
+               }
+               if (convert_input_text == NULL)
+                       return;
+
+               if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               } else {
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               }
+               __bluetooth_delete_input_view(ad);
+               free(convert_input_text);
+               if (ad->entry) {
+                       evas_object_del(ad->entry);
+                       ad->entry = NULL;
+               }
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_input_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       int response = BT_AGENT_CANCEL;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+
+
+       BT_DBG("Keyboard event callback function is called + \n");
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+               if (ad == NULL)
+                       return;
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+               input_text = (char *)elm_entry_entry_get(ad->entry);
+               if (input_text) {
+                       convert_input_text =
+                               elm_entry_markup_to_utf8(input_text);
+               }
+               if (convert_input_text == NULL)
+                       return;
+
+               if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+                       BT_DBG("It is PIN Request event \n");
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               } else {
+                       BT_DBG("It is PASSKEYRequest event \n");
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               }
+               __bluetooth_delete_input_view(ad);
+               free(convert_input_text);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+static void __bluetooth_draw_input_view(struct bt_popup_appdata *ad,
+                       const char *title, const char *text,
+                       void (*func)
+                       (void *data, Evas_Object *obj, void *event_info))
+{
+       Evas_Object *conformant = NULL;
+       Evas_Object *content = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *passpopup = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *l_button = NULL;
+       Evas_Object *r_button = NULL;
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+       if (ad == NULL || ad->win_main == NULL) {
+               BT_ERR("Invalid parameter");
+               return;
+       }
+
+       evas_object_show(ad->win_main);
+
+       conformant = elm_conformant_add(ad->win_main);
+       if (conformant == NULL) {
+               BT_ERR("conformant is NULL");
+               return;
+       }
+       ad->popup = conformant;
+
+       elm_win_conformant_set(ad->win_main, EINA_TRUE);
+       elm_win_resize_object_add(ad->win_main, conformant);
+       evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(conformant);
+
+       content = elm_layout_add(conformant);
+       elm_object_content_set(conformant, content);
+
+       passpopup = elm_popup_add(content);
+       elm_object_part_text_set(passpopup, "title,text", title);
+
+       elm_object_style_set(passpopup, "transparent");
+
+       layout = elm_layout_add(passpopup);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "passwd_popup");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       label = elm_label_add(passpopup);
+       elm_object_style_set(label, "popup/default");
+       elm_label_line_wrap_set(label, ELM_WRAP_WORD);
+       elm_object_text_set(label, text);
+       evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(label);
+
+       entry = elm_entry_add(layout);
+       elm_object_style_set(entry, "editfield/password/popup");
+       /* As per specs PIN codes may be up to 16 characters*/
+       limit_filter_data.max_char_count = 16;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
+                                    &limit_filter_data);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_object_signal_emit(entry, "elm,state,focus,on", "");
+       elm_object_signal_emit(entry, "elm,action,hide,search_icon", "");
+       elm_entry_prediction_allow_set(entry, EINA_FALSE);
+       elm_entry_password_set(entry, EINA_TRUE);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+       evas_object_show(entry);
+       ad->entry = entry;
+
+       evas_object_smart_callback_add(entry, "changed",
+                               __bluetooth_entry_change_cb,
+                               ad);
+
+       l_button = elm_button_add(ad->win_main);
+       elm_object_style_set(l_button, "popup");
+       elm_object_text_set(l_button, BT_STR_CANCEL);
+       elm_object_part_content_set(passpopup, "button1", l_button);
+       evas_object_smart_callback_add(l_button, "clicked", func, ad);
+
+       r_button = elm_button_add(ad->win_main);
+       elm_object_style_set(r_button, "popup");
+       elm_object_text_set(r_button, BT_STR_OK);
+       elm_object_part_content_set(passpopup, "button2", r_button);
+       evas_object_smart_callback_add(r_button, "clicked", func, ad);
+       elm_object_disabled_set(r_button, EINA_TRUE);
+       ad->edit_field_save_btn = r_button;
+
+       evas_object_event_callback_add(entry, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(r_button, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(r_button, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(l_button, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(l_button, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+
+       elm_object_part_content_set(layout, "entry", entry);
+       elm_object_part_content_set(layout, "label", label);
+
+       elm_object_part_text_set(entry, "elm.guide", BT_STR_TAP_TO_ENTER);
+
+       evas_object_show(layout);
+       evas_object_show(content);
+       evas_object_show(passpopup);
+       elm_object_content_set(passpopup, layout);
+       elm_object_focus_set(entry, EINA_TRUE);
+}
+
+static void __bluetooth_delete_input_view(struct bt_popup_appdata *ad)
+{
+       __bluetooth_ime_hide();
+}
+
+static DBusGProxy* __bluetooth_create_agent_proxy(DBusGConnection *conn,
+                                                               const char *path)
+{
+       return dbus_g_proxy_new_for_name(conn, "org.projectx.bt", path,
+                                                       "org.bluez.Agent");
+}
+
+/* AUL bundle handler */
+static int __bluetooth_launch_handler(struct bt_popup_appdata *ad,
+                            void *reset_data, const char *event_type)
+{
+       bundle *kb = (bundle *) reset_data;
+       char view_title[BT_TITLE_STR_MAX_LEN] = { 0 };
+       char text[BT_GLOBALIZATION_STR_LENGTH] = { 0 };
+       int timeout = 0;
+       const char *device_name = NULL;
+       const char *passkey = NULL;
+       const char *file = NULL;
+       const char *agent_path;
+       char *conv_str = NULL;
+
+       BT_DBG("+");
+
+       if (!reset_data || !event_type)
+               return -1;
+
+       BT_DBG("Event Type = %s[0X%X]", event_type, ad->event_type);
+
+       if (!strcasecmp(event_type, "pin-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        "%s", BT_STR_BLUETOOTH_PAIRING_REQUEST);
+
+               snprintf(text, BT_GLOBALIZATION_STR_LENGTH,
+                        BT_STR_ENTER_PIN_TO_PAIR, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               /* Request user inputted PIN for basic pairing */
+               __bluetooth_draw_input_view(ad, view_title, text,
+                                         __bluetooth_input_request_cb);
+       } else if (!strcasecmp(event_type, "passkey-confirm-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                            BT_STR_CONFIRM_PASSKEY_PS_TO_PAIR_WITH_PS,
+                            conv_str, passkey);
+
+                       BT_DBG("title: %s", view_title);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_popup(ad, view_title,
+                                       BT_STR_CANCEL, BT_STR_OK,
+                                       __bluetooth_passkey_confirm_cb);
+               } else {
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "passkey-request")) {
+               const char *device_name = NULL;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        "%s", BT_STR_BLUETOOTH_PAIRING_REQUEST);
+
+               snprintf(text, BT_GLOBALIZATION_STR_LENGTH,
+                        BT_STR_ENTER_PIN_TO_PAIR, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               /* Request user inputted Passkey for basic pairing */
+               __bluetooth_draw_input_view(ad, view_title, text,
+                                         __bluetooth_input_request_cb);
+
+       } else if (!strcasecmp(event_type, "passkey-display-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                            BT_STR_ENTER_PS_ON_PS_TO_PAIR, passkey, conv_str);
+
+                       BT_DBG("title: %s", view_title);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_popup(ad, view_title,
+                                               BT_STR_CANCEL, NULL,
+                                               __bluetooth_input_cancel_cb);
+               } else {
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "authorize-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_TO_CONNECT_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "app-confirm-request")) {
+               BT_DBG("app-confirm-request");
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               const char *title = NULL;
+               const char *type = NULL;
+
+               title = bundle_get_val(kb, "title");
+               type = bundle_get_val(kb, "type");
+
+               if (!title)
+                       return -1;
+
+               if (strcasecmp(type, "twobtn") == 0) {
+                       __bluetooth_draw_popup(ad, title, BT_STR_CANCEL, BT_STR_OK,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "onebtn") == 0) {
+                       timeout = BT_NOTIFICATION_TIMEOUT;
+                       __bluetooth_draw_popup(ad, title, BT_STR_OK, NULL,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "none") == 0) {
+                       timeout = BT_NOTIFICATION_TIMEOUT;
+                       __bluetooth_draw_popup(ad, title, NULL, NULL,
+                                            __bluetooth_app_confirm_cb);
+               }
+       } else if (!strcasecmp(event_type, "push-authorize-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               file = bundle_get_val(kb, "file");
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_RECEIVE_PS_FROM_PS_Q, file, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                               __bluetooth_push_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "confirm-overwrite-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               file = bundle_get_val(kb, "file");
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_OVERWRITE_FILE_Q, file);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                               __bluetooth_app_confirm_cb);
+       } else if (!strcasecmp(event_type, "keyboard-passkey-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                            BT_STR_ENTER_PS_ON_PS_TO_PAIR, passkey, conv_str);
+
+                       BT_DBG("title: %s", view_title);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_popup(ad, view_title,
+                                               BT_STR_CANCEL, NULL,
+                                               __bluetooth_input_cancel_cb);
+               } else {
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "bt-information")) {
+               BT_DBG("bt-information");
+               timeout = BT_NOTIFICATION_TIMEOUT;
+
+               const char *title = NULL;
+               const char *type = NULL;
+
+               title = bundle_get_val(kb, "title");
+               type = bundle_get_val(kb, "type");
+
+               if (title != NULL) {
+                       if (strlen(title) > 255)
+                               return -1;
+               } else
+                       return -1;
+
+               if (strcasecmp(type, "onebtn") == 0) {
+                       __bluetooth_draw_popup(ad, title, BT_STR_OK, NULL,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "none") == 0) {
+                       __bluetooth_draw_popup(ad, title, NULL, NULL,
+                                            __bluetooth_app_confirm_cb);
+               }
+       } else if (!strcasecmp(event_type, "exchange-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_RECEIVE_FILE_FROM_PS_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "phonebook-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_PHONEBOOK_ACCESS_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "message-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_TO_ACCESS_MESSAGES_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "pairing-retry-request")) {
+
+               const char *err =  bundle_get_val(kb, "error");
+               if (!strcasecmp(err, "timeout"))
+                       __bluetooth_draw_popup(ad, BT_STR_TIMEOUT_TRY_AGAIN_Q,
+                                       BT_STR_CANCEL, BT_STR_OK,
+                                       __bluetooth_retry_pairing_cb);
+               else if (!strcasecmp(err, "authfailed"))
+                       __bluetooth_draw_popup(ad, BT_STR_PIN_ERROR_TRY_AGAIN_Q,
+                                       BT_STR_CANCEL, BT_STR_OK,
+                                       __bluetooth_retry_pairing_cb);
+               else
+                       __bluetooth_draw_popup(ad, BT_STR_BLUETOOTH_ERROR_TRY_AGAIN_Q,
+                                       BT_STR_CANCEL, BT_STR_OK,
+                                       __bluetooth_retry_pairing_cb);
+
+       } else {
+               return -1;
+       }
+
+       if (ad->event_type != BT_EVENT_FILE_RECEIVED && timeout != 0) {
+               ad->timer = ecore_timer_add(timeout, (Ecore_Task_Cb)
+                                       __bluetooth_request_timeout_cb, ad);
+       }
+       BT_DBG("-");
+       return 0;
+}
+
+static Eina_Bool __exit_idler_cb(void *data)
+{
+       elm_exit();
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __popup_terminate(void)
+{
+       if (ecore_idler_add(__exit_idler_cb, NULL))
+               return;
+
+       __exit_idler_cb(NULL);
+}
+
+static void __bluetooth_win_del(void *data)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+
+       __bluetooth_cleanup(ad);
+       __popup_terminate();
+}
+
+static Evas_Object *__bluetooth_create_win(const char *name)
+{
+       Evas_Object *eo;
+       int w;
+       int h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+static void __bluetooth_session_init(struct bt_popup_appdata *ad)
+{
+       DBusGConnection *conn = NULL;
+       GError *err = NULL;
+
+       g_type_init();
+
+       conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, &err);
+
+       if (!conn) {
+               BT_ERR("ERROR: Can't get on system bus [%s]",
+                            err->message);
+               g_error_free(err);
+               return;
+       }
+
+       ad->conn = conn;
+
+       ad->obex_proxy = dbus_g_proxy_new_for_name(conn,
+                                                  "org.bluez.frwk_agent",
+                                                  "/org/obex/ops_agent",
+                                                  "org.openobex.Agent");
+       if (!ad->obex_proxy)
+               BT_ERR("Could not create obex dbus proxy");
+
+       if (!__bluetooth_init_app_signal(ad))
+               BT_ERR("__bt_syspopup_init_app_signal failed");
+}
+
+static int __bluetooth_create(void *data)
+{
+       struct bt_popup_appdata *ad = data;
+       Evas_Object *win = NULL;
+
+       BT_DBG("__bluetooth_create() start.\n");
+
+       /* create window */
+       win = __bluetooth_create_win(PACKAGE);
+       if (win == NULL)
+               return -1;
+       ad->win_main = win;
+
+       /* init internationalization */
+       if (appcore_set_i18n(BT_COMMON_PKG, BT_COMMON_RES) < 0)
+               return -1;
+
+       ecore_imf_init();
+
+       __bluetooth_session_init(ad);
+
+       return 0;
+}
+
+static int __bluetooth_terminate(void *data)
+{
+       struct bt_popup_appdata *ad = data;
+
+       __bluetooth_ime_hide();
+
+       if (ad->conn) {
+               dbus_g_connection_unref(ad->conn);
+               ad->conn = NULL;
+       }
+
+       if (ad->popup)
+               evas_object_del(ad->popup);
+
+       if (ad->win_main)
+               evas_object_del(ad->win_main);
+
+       ad->popup = NULL;
+       ad->win_main = NULL;
+
+       return 0;
+}
+
+static int __bluetooth_pause(void *data)
+{
+
+       return 0;
+}
+
+static int __bluetooth_resume(void *data)
+{
+
+       return 0;
+}
+
+static int __bluetooth_reset(bundle *b, void *data)
+{
+       struct bt_popup_appdata *ad = data;
+       const char *event_type = NULL;
+       int ret = 0;
+
+       BT_DBG("__bluetooth_reset()\n");
+
+       if (ad == NULL) {
+               BT_ERR("App data is NULL\n");
+               return -1;
+       }
+
+       /* Start Main UI */
+       event_type = bundle_get_val(b, "event-type");
+
+       if (event_type != NULL) {
+               if (!strcasecmp(event_type, "terminate")) {
+                       __bluetooth_win_del(ad);
+                       return 0;
+               }
+
+               if (syspopup_has_popup(b)) {
+                       /* Destroy the existing popup*/
+                       __bluetooth_cleanup(ad);
+                       /* create window */
+                       ad->win_main = __bluetooth_create_win(PACKAGE);
+                       if (ad->win_main == NULL)
+                               return -1;
+               }
+
+               __bluetooth_parse_event(ad, event_type);
+
+               elm_win_alpha_set(ad->win_main, EINA_TRUE);
+
+               ret = syspopup_create(b, &handler, ad->win_main, ad);
+               if (ret == -1) {
+                       BT_ERR("syspopup_create err");
+                       __bluetooth_remove_all_event(ad);
+               } else {
+                       ret = __bluetooth_launch_handler(ad,
+                                                      b, event_type);
+
+                       if (ret != 0)
+                               __bluetooth_remove_all_event(ad);
+
+                       __bluetooth_notify_event();
+
+                       /* Change LCD brightness */
+                       ret = pm_change_state(LCD_NORMAL);
+                       if (ret != 0)
+                               BT_ERR("Fail to change LCD");
+               }
+       } else {
+               BT_ERR("event type is NULL \n");
+       }
+
+       return 0;
+}
+
+EXPORT int main(int argc, char *argv[])
+{
+       struct bt_popup_appdata ad;
+       struct appcore_ops ops = {
+               .create = __bluetooth_create,
+               .terminate = __bluetooth_terminate,
+               .pause = __bluetooth_pause,
+               .resume = __bluetooth_resume,
+               .reset = __bluetooth_reset,
+       };
+
+       memset(&ad, 0x0, sizeof(struct bt_popup_appdata));
+       ops.data = &ad;
+
+       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+}
+
diff --git a/mobile/src/bt-syspopup.h b/mobile/src/bt-syspopup.h
new file mode 100644 (file)
index 0000000..cc8a009
--- /dev/null
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2012-2013 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 __DEF_BT_SYSPOPUP_H_
+#define __DEF_BT_SYSPOPUP_H_
+
+#include <Elementary.h>
+#include <dlog.h>
+#include <glib.h>
+#include <dbus/dbus-glib.h>
+
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME "org.tizen.bt-syspopup"
+#endif
+
+#ifndef PREFIX
+#define PREFIX "/opt/apps"PACKAGE_NAME
+#endif
+
+#define EXPORT __attribute__((visibility("default")))
+
+#define TEMP_DIR       "/tmp"
+
+#define PACKAGE                "bt-syspopup"
+#define APPNAME                "bt-syspopup"
+#define ICON_DIR       PREFIX"/res/default/small/icon"
+
+#define CUSTOM_POPUP_PATH PREFIX"/res/edje/custom_popup.edj"
+
+#define BT_COMMON_PKG          "ug-setting-bluetooth-efl"
+#define BT_COMMON_RES          "/usr/ug/res/locale"
+
+#define _EDJ(obj) elm_layout_edje_get(obj)
+
+#define BT_AUTHENTICATION_TIMEOUT              35
+#define BT_AUTHORIZATION_TIMEOUT               25
+#define BT_NOTIFICATION_TIMEOUT                2
+#define BT_ERROR_TIMEOUT                       1
+
+#define BT_PIN_MLEN 16         /* Pin key max length */
+#define BT_PK_MLEN 6           /* Passkey max length */
+#define BT_CONTROLBAR_MAX_LENGTH 3
+
+#define BT_GLOBALIZATION_STR_LENGTH 256
+#define BT_DEVICE_NAME_LENGTH_MAX 256
+#define BT_FILE_NAME_LENGTH_MAX 256
+#define BT_TEXT_EXTRA_LEN 20
+
+#define BT_TITLE_STR_MAX_LEN \
+       (BT_GLOBALIZATION_STR_LENGTH+BT_DEVICE_NAME_LENGTH_MAX+BT_FILE_NAME_LENGTH_MAX)
+
+#define BT_MESSAGE_STRING_SIZE 256*2+1
+
+#undef LOG_TAG
+#define LOG_TAG "BT_SYSPOPUP"
+
+#define BT_DBG(format, args...) SLOGD(format, ##args)
+#define BT_ERR(format, args...) SLOGE(format, ##args)
+
+#define BT_DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args)
+#define BT_ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args)
+
+#define BT_SYS_POPUP_IPC_NAME "org.projectx"
+#define BT_SYS_POPUP_IPC_RESPONSE_OBJECT "/org/projectx/bt_syspopup_res"
+#define BT_SYS_POPUP_INTERFACE "User.Bluetooth.syspopup"
+#define BT_SYS_POPUP_METHOD_RESPONSE "Response"
+
+/* String defines to support multi-languages */
+#define BT_STR_ENTER_PIN       \
+       dgettext(BT_COMMON_PKG, "IDS_BT_HEADER_ENTERPIN")
+#define BT_STR_ALLOW_PS_TO_CONNECT_Q   \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ALLOW_PS_TO_CONNECT_Q")
+
+#define BT_STR_RECEIVE_PS_FROM_PS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_RECEIVE_PS_FROM_PS_Q")
+
+#define BT_STR_PASSKEY_MATCH_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_MATCH_PASSKEYS_ON_PS_Q")
+
+#define BT_STR_OVERWRITE_FILE_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_PS_ALREADY_EXISTS_OVERWRITE_Q")
+
+#define BT_STR_ENTER_PS_ON_PS_TO_PAIR \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_ENTER_P1SS_ON_P2SS_TO_PAIR_THEN_TAP_RETURN_OR_ENTER")
+
+#define BT_STR_RECEIVE_FILE_FROM_PS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_RECEIVE_FILE_FROM_PS_Q")
+
+/* Need to convert the design ID */
+#define BT_STR_BLUETOOTH_PAIRING_REQUEST \
+       dgettext(BT_COMMON_PKG, "IDS_BT_HEADER_BLUETOOTH_PAIRING_REQUEST")
+
+#define BT_STR_ENTER_PIN_TO_PAIR \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ENTER_PIN_TO_PAIR_WITH_PS_HTRY_0000_OR_1234")
+
+#define BT_STR_SHOW_PASSWORD \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_SHOW_PASSWORD")
+
+#define BT_STR_CONFIRM_PASSKEY_PS_TO_PAIR_WITH_PS \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_CONFIRM_PASSKEY_IS_P2SS_TO_PAIR_WITH_P1SS")
+
+#define BT_STR_ALLOW_PS_PHONEBOOK_ACCESS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_ALLOW_PS_PHONEBOOK_ACCESS")
+
+#define BT_STR_ALLOW_PS_TO_ACCESS_MESSAGES_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ALLOW_PS_TO_ACCESS_MESSAGES_Q")
+
+#define BT_STR_DONT_ASK_AGAIN \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_DONT_ASK_AGAIN")
+
+#define BT_STR_PIN_ERROR_TRY_AGAIN_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_INCORRECT_PIN_TRY_AGAIN_Q")
+
+#define BT_STR_TIMEOUT_TRY_AGAIN_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_BLUETOOTH_TIMEOUT_TRY_AGAIN_Q")
+
+#define BT_STR_BLUETOOTH_ERROR_TRY_AGAIN_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_BLUETOOTH_ERROR_TRY_AGAIN_Q")
+#define BT_STR_TAP_TO_ENTER \
+       dgettext(BT_COMMON_PKG, "IDS_SIM_BODY_TAP_TO_ENTER_ABB")
+
+#define BT_STR_OK dgettext("sys_string", "IDS_COM_SK_OK")
+#define BT_STR_YES dgettext("sys_string", "IDS_COM_SK_YES")
+#define BT_STR_NO dgettext("sys_string", "IDS_COM_SK_NO")
+#define BT_STR_DONE dgettext("sys_string", "IDS_COM_SK_DONE")
+#define BT_STR_CANCEL dgettext("sys_string", "IDS_COM_SK_CANCEL")
+
+
+typedef enum {
+       BT_CHANGED_MODE_ENABLE,
+       BT_CHANGED_MODE_DISABLE,
+} bt_changed_mode_type_t;
+
+typedef enum {
+       BT_EVENT_PIN_REQUEST = 0x0001,
+       BT_EVENT_PASSKEY_CONFIRM_REQUEST = 0x0002,
+       BT_EVENT_PASSKEY_REQUEST = 0x0004,
+       BT_EVENT_PASSKEY_DISPLAY_REQUEST = 0x0008,
+       BT_EVENT_AUTHORIZE_REQUEST = 0x0010,
+       BT_EVENT_APP_CONFIRM_REQUEST = 0x0020,
+       BT_EVENT_PUSH_AUTHORIZE_REQUEST = 0x0040,
+       BT_EVENT_CONFIRM_OVERWRITE_REQUEST = 0x0080,
+       BT_EVENT_FILE_RECEIVED = 0x0100,
+       BT_EVENT_KEYBOARD_PASSKEY_REQUEST = 0x0200,
+       BT_EVENT_INFORMATION = 0x0400,
+       BT_EVENT_TERMINATE = 0x0800,
+       BT_EVENT_EXCHANGE_REQUEST = 0x1000,
+       BT_EVENT_PHONEBOOK_REQUEST = 0x2000,
+       BT_EVENT_MESSAGE_REQUEST = 0x4000,
+       BT_EVENT_RETRY_PAIR_REQUEST = 0x8000,
+} bt_popup_event_type_t;
+
+typedef enum {
+       BT_AGENT_ACCEPT,
+       BT_AGENT_REJECT,
+       BT_AGENT_CANCEL,
+       BT_CORE_AGENT_TIMEOUT,
+       BT_AGENT_ACCEPT_ALWAYS,
+} bt_agent_accept_type_t;
+
+struct bt_popup_appdata {
+       Evas *evas;
+       Evas_Object *win_main;
+       Evas_Object *popup;
+
+       /* Passkey layout objects */
+       Evas_Object *entry;
+       Evas_Object *edit_field_save_btn;
+       Evas_Object *ticker_noti;
+
+       Ecore_Timer *timer;
+
+       DBusGProxy *agent_proxy;
+       DBusGProxy *obex_proxy;
+       E_DBus_Connection *EDBusHandle;
+       DBusGConnection *conn;
+
+       int changed_mode;
+       gboolean make_trusted;
+       bt_popup_event_type_t event_type;
+};
+
+#endif                         /* __DEF_BT_SYSPOPUP_H_ */
diff --git a/packaging/org.tizen.bt-syspopup.spec b/packaging/org.tizen.bt-syspopup.spec
new file mode 100644 (file)
index 0000000..3fec787
--- /dev/null
@@ -0,0 +1,121 @@
+%if %{_repository} == "wearable"
+%define _usrdir /usr
+%define _appdir %{_usrdir}/apps
+%elseif %{_repository} == "mobile"
+%define _optdir /opt
+%define _usrdir /usr
+%define _appdir %{_optdir}/apps
+%endif
+
+Name:       org.tizen.bt-syspopup
+Summary:    bluetooth system-popup application (bluetooth system popup)
+Version: 0.2.56
+Release:    1
+Group:      main
+License:    Flora Software License, Version 1.1
+Source0:    %{name}-%{version}.tar.gz
+Requires(post): sys-assert
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(ecore-input)
+BuildRequires:  pkgconfig(ethumb)
+BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(efreet)
+BuildRequires:  pkgconfig(sensor)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(syspopup)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(dbus-glib-1)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(aul)
+BuildRequires:  pkgconfig(feedback)
+BuildRequires:  edje-tools
+BuildRequires:  cmake
+BuildRequires:  gettext-devel
+%if %{_repository} == "wearable"
+BuildRequires:  efl-assist-devel
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(deviced)
+BuildRequires:  pkgconfig(capi-network-bluetooth)
+BuildRequires:  pkgconfig(deviced)
+BuildRequires:  hash-signer
+%endif
+%if %{_repository} == "mobile"
+BuildRequires:  pkgconfig(sysman)
+BuildRequires:  pkgconfig(appcore-efl)
+BuildRequires:  pkgconfig(devman)
+BuildRequires:  pkgconfig(pmapi)
+BuildRequires:  pkgconfig(devman_haptic)
+BuildRequires:  pkgconfig(bluetooth-api)
+BuildRequires:  sysman-internal-devel
+%endif
+
+%description
+bluetooth system-popup application (bluetooth system popup).
+
+%prep
+%setup -q
+
+
+%build
+%if %{_repository} == "wearable"
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
+export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
+%endif
+%endif
+export CFLAGS+=" -fpie -fvisibility=hidden"
+export LDFLAGS+=" -Wl,--rpath=/usr/lib -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs -pie"
+
+%if %{_repository} == "wearable"
+cd wearable
+%elseif %{_repository} == "mobile"
+cd mobile
+%endif
+cmake . -DCMAKE_INSTALL_PREFIX=%{_appdir}/%{name}
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+
+%if %{_repository} == "wearable"
+cd wearable
+%make_install
+PKG_ID=org.tizen.bt-syspopup
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/${PKG_ID}
+%define tizen_sign_level platform
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+
+install -D -m 0644 LICENSE.Flora %{buildroot}%{_datadir}/license/org.tizen.bt-syspopup
+%elseif %{_repository} == "mobile"
+cd mobile
+%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE.Flora %{buildroot}/usr/share/license/%{name}
+%endif
+
+%files
+%if %{_repository} == "wearable"
+%manifest wearable/org.tizen.bt-syspopup.manifest
+/etc/smack/accesses2.d/org.tizen.bt-syspopup.rule
+%defattr(-,root,root,-)
+%{_usrdir}/share/packages/org.tizen.bt-syspopup.xml
+%{_appdir}/org.tizen.bt-syspopup/bin/bt-syspopup
+%{_appdir}/org.tizen.bt-syspopup/res/edje/*.edj
+%{_appdir}/org.tizen.bt-syspopup/res/images/*.png
+%{_appdir}/org.tizen.bt-syspopup/author-signature.xml
+%{_appdir}/org.tizen.bt-syspopup/signature1.xml
+%{_usrdir}/share/icons/default/small/org.tizen.bt-syspopup.png
+%{_datadir}/license/org.tizen.bt-syspopup
+%elseif %{_repository} == "mobile"
+%manifest mobile/org.tizen.bt-syspopup.manifest
+/opt/etc/smack/accesses.d/org.tizen.bt-syspopup.rule
+%defattr(-,root,root,-)
+%{_usrdir}/share/packages/org.tizen.bt-syspopup.xml
+%{_appdir}/org.tizen.bt-syspopup/bin/bt-syspopup
+%{_appdir}/org.tizen.bt-syspopup/res/edje/*.edj
+%{_optdir}/share/icons/default/small/org.tizen.bt-syspopup.png
+/usr/share/license/%{name}
+%endif
diff --git a/wearable/AUTHORS b/wearable/AUTHORS
new file mode 100644 (file)
index 0000000..1a599df
--- /dev/null
@@ -0,0 +1,4 @@
+Hocheol Seo <hocheol.seo@samsung.com>
+Girish Ashok Joshi <girish.joshi@samsung.com>
+Chanyeol Park <chanyeol.park@samsung.com>
+DoHyun Pyun <dh79.pyun@samsung.com>
diff --git a/wearable/CMakeLists.txt b/wearable/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bb24406
--- /dev/null
@@ -0,0 +1,81 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(bt-syspopup C)
+
+SET(SRCS ${CMAKE_SOURCE_DIR}/src/bt-syspopup.c)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       capi-appfw-application
+       bundle
+       deviced
+       dlog
+       dbus-glib-1
+       ecore
+       ecore-input
+       ecore-imf
+       edbus
+       edje
+       elementary
+       evas
+       gobject-2.0
+       syspopup
+       utilX
+       capi-network-bluetooth
+       feedback
+       aul
+       efl-assist)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -Wall -g")
+ENDFOREACH(flag)
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+#This is flag for Gprof
+#SET(CMAKE_C_FLAGS_RELEASE "-pg")
+
+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("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+
+# Edje
+ADD_CUSTOM_TARGET(custom_popup.edj
+COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/data/images
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edc
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edj DEPENDS
+${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} custom_popup.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/apps/org.tizen.bt-syspopup/bin)
+
+# install desktop file & icon
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/data/org.tizen.bt-syspopup.xml DESTINATION /usr/share/packages/)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/data/org.tizen.bt-syspopup.rule DESTINATION /etc/smack/accesses2.d)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/org.tizen.bt-syspopup.png DESTINATION /usr/share/icons/default/small)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/custom_popup.edj DESTINATION /usr/apps/org.tizen.bt-syspopup/res/edje)
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/images/ DESTINATION /usr/apps/org.tizen.bt-syspopup/res/images)
diff --git a/wearable/LICENSE.Flora b/wearable/LICENSE.Flora
new file mode 100644 (file)
index 0000000..64b1c1e
--- /dev/null
@@ -0,0 +1,205 @@
+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.
+
+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/wearable/NOTICE b/wearable/NOTICE
new file mode 100644 (file)
index 0000000..3969942
--- /dev/null
@@ -0,0 +1,4 @@
+Copyright (c) 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/wearable/data/bt-syspopup.ini b/wearable/data/bt-syspopup.ini
new file mode 100644 (file)
index 0000000..5abbace
--- /dev/null
@@ -0,0 +1,2 @@
+[ProcessSetting]
+BG_SCHEDULE=true
diff --git a/wearable/data/custom_popup.edc b/wearable/data/custom_popup.edc
new file mode 100644 (file)
index 0000000..26e9571
--- /dev/null
@@ -0,0 +1,48 @@
+#define FONT_BLD       "Tizen:style=Bold"
+#define FONT_MED       "Tizen:style=Medium"
+#define FONT_ROM       "Tizen:style=Roman"
+#define FONT_LIG       "Tizen:style=Roman"
+
+#define RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            repeat_events: 1; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 0 0; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define IMAGE_ROTATE_DESCRIPTION(STATE_NAME, ANGLE) \
+       description { \
+               state: STATE_NAME 0.0; \
+               inherit: "show" 0.0; \
+               map { \
+                       on: 1; \
+                       perspective_on: 1; \
+                       smooth: 1; \
+                       rotation { \
+                               z: ANGLE; \
+                       } \
+               } \
+       } \
+
+
+collections {
+#include "groups/passkey_confirm.edc"
+#include "groups/auth_popup.edc"
+#include "groups/passwd_popup.edc"
+#include "groups/passkey_confirm_popup.edc"
+}
+
+#define HOR_SIZE 320
+#define VER_SIZE 320
+#define BUTTON_HEIGHT 76
+
diff --git a/wearable/data/groups/auth_popup.edc b/wearable/data/groups/auth_popup.edc
new file mode 100644 (file)
index 0000000..5bb7dba
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+group {
+       name: "auth_popup";
+       parts {
+               part {
+                       name: "pad_t";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.5 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 1.0 0.0;to_x: "pad_l";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;to_x: "pad_r";
+                               }
+                       }
+               }
+               part {
+                       name: "pad_l";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "pad_r";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "popup_title";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_l";
+                                       to_y: "pad_t";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "pad_r";
+                                       to_y: "pad_b";
+                               }
+                       }
+               }
+               part {
+                       name: "pad_b";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.5 1.0;
+                               min: 400 84;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.5 1.0;
+                               }
+                               rel2 {
+                                       relative: 0.5 1.0;
+                               }
+                       }
+               }
+               part {
+                       name: "check";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 1.0;
+                               min: 63 63;
+                               max: 63 63;
+                               fixed: 1 1;
+                               rel1.to: "pad_b";
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to: "pad_b";
+                               }
+                       }
+               }
+               part {
+                       name: "pad_after_check";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               min: 16 63;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 1.0 0.0;to: "check";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;to: "check";
+                               }
+                       }
+               }
+               part {
+                       name: "check_label";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to_x: "pad_after_check";
+                                       to_y: "check";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_b";
+                                       to_y: "check";
+                               }
+                       }
+               }
+       }
+}
diff --git a/wearable/data/groups/passkey_confirm.edc b/wearable/data/groups/passkey_confirm.edc
new file mode 100644 (file)
index 0000000..f2b6909
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+RESOURCE_IMAGE("b_setup_wizard_watch_01.png");
+RESOURCE_IMAGE("b_setup_wizard_device_01.png");
+RESOURCE_IMAGE("b_setup_wizard_pairing_01.png");
+
+
+#define BG_COLOR       0 0 0 255
+#define FONT_COLOR     255 144 0 255
+#define HOR_SIZE 320
+#define VER_SIZE 320
+#define BUTTON_HEIGHT 76
+
+#define WTCH_PAD_LEFT 59
+#define WTCH_PAD_TOP 13
+#define PHN_PAD_LEFT 320-66-60
+#define PHN_PAD_TOP 9
+#define ICON_PAD_LEFT 59+54+17-7
+#define ICON_PAD_TOP 9+26
+
+#define W_W 47
+#define W_H 93
+#define P_W 66
+#define P_H 105
+#define L_W 54
+#define L_H 54
+
+
+group { name: "passkey_confirm";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: HOR_SIZE VER_SIZE;
+                               color: BG_COLOR;
+                       }
+               }
+
+               part {
+                       name: "scroller";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to:"bg";
+                               }
+                               rel2 {
+                                       relative: 1.0 (VER_SIZE-BUTTON_HEIGHT)/VER_SIZE;
+                                       to:"bg";
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+
+               part { name: "btn1";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding";
+                                       relative: 0.0 1.0;
+                               }
+                               min: 0 BUTTON_HEIGHT;
+                               align: 0.5 1;
+                       }
+               }
+               part { name: "padding";
+                       type: SPACER;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.5 1.0;
+                               }
+                               rel2 {
+                                       relative: 0.5 1.0;
+                               }
+                               align: 0.5 1.0;
+                               min: 1 0;
+                               max: 1 0;
+                               fixed: 1 0;
+                       }
+               }
+               part { name: "btn2";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               min: 0 BUTTON_HEIGHT;
+                               align: 0.5 1;
+                       }
+               }
+       }
+}
+
+group { name: "passkey_confirm_scroller";
+       parts{
+               part {
+                       name: "background";
+                       type: RECT;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0;
+                               color: 0 0 0 255;
+                       }
+               }
+               part {
+                       name: "elm.swallow.img.watch";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0;
+                               visible: 1;
+                               fixed: 1 1;
+                               min: W_W W_H;
+                               max: W_W W_H;
+                               rel1 {
+                                       relative: 0 0;
+                                       offset: WTCH_PAD_LEFT WTCH_PAD_TOP;
+                                       to:"background";
+                               }
+                               rel2 {
+                                       relative: 0 0;
+                                       offset: (WTCH_PAD_LEFT+W_W) (WTCH_PAD_TOP+W_H);
+                                       to:"background";
+                               }
+                       }
+               }
+               part {
+                       name: "elm.swallow.img.phone";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0;
+                               visible: 1;
+                               fixed: 1 1;
+                               min: P_W P_H;
+                               max: P_W P_H;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       offset: PHN_PAD_LEFT PHN_PAD_TOP;
+                                       to:"background";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       offset: (PHN_PAD_LEFT+P_W) (PHN_PAD_TOP+P_H);
+                                       to:"background";
+                               }
+                       }
+               }
+               part {
+                       name: "elm.swallow.img.icon";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               min: L_W L_H;
+                               max: L_W L_H;
+                               image.normal: "b_setup_wizard_pairing_01.png";
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       offset: ICON_PAD_LEFT ICON_PAD_TOP;
+                                       to:"background";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       offset: (ICON_PAD_LEFT+L_W) (ICON_PAD_TOP+L_H);
+                                       to:"background";
+                               }
+                               map {
+                                       on: 1;
+                                       smooth: 0;
+                                       rotation {
+                                               z:0;
+                                       }
+                               }
+                       }
+                       description {
+                               state: "state1" 0.1;
+                               inherit: "default" 0.0;
+                               map {
+                                       on: 1;
+                                       smooth: 0;
+                                       rotation {
+                                               z:180;
+                                       }
+                               }
+                       }
+                       description {
+                               state: "state2" 0.2;
+                               inherit: "default" 0.0;
+                               map {
+                                       on: 1;
+                                       smooth: 0;
+                                       rotation {
+                                               z:360;
+                                       }
+                               }
+                       }
+               }
+               part {
+                       name: "elm.text.block";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       offset: 0 9+P_H+18;
+                                       to:"background";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to:"background";
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+       }
+       programs {
+               program {
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       after: "animation";
+               }
+               program {
+                       name: "animation";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.swallow.img.icon";
+                       transition: LINEAR 0.0;
+                       after: "animation1";
+               }
+               program {
+                       name: "animation1";
+                       action: STATE_SET "state1" 0.1;
+                       target: "elm.swallow.img.icon";
+                       transition: LINEAR 0.7;
+                       after: "animation2";
+               }
+               program {
+                       name: "animation2";
+                       action: STATE_SET "state2" 0.2;
+                       target: "elm.swallow.img.icon";
+                       transition: LINEAR 0.7;
+                       after: "animation";
+               }
+       }
+}
+
+
diff --git a/wearable/data/groups/passkey_confirm_popup.edc b/wearable/data/groups/passkey_confirm_popup.edc
new file mode 100644 (file)
index 0000000..531a173
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+images {
+       image: "b_setup_wizard_bluetooth_pairing.png" COMP;
+}
+
+#define BG_COLOR       0 0 0 255
+#define HOR_SIZE 320
+#define VER_SIZE 320
+#define BUTTON_HEIGHT 76
+
+group { name: "passkey_confirm_popup";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: HOR_SIZE VER_SIZE;
+                               color: BG_COLOR;
+                       }
+               }
+
+               part {
+                       name: "scroller";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to:"bg";
+                               }
+                               rel2 {
+                                       relative: 1.0 (VER_SIZE-BUTTON_HEIGHT)/VER_SIZE;
+                                       to:"bg";
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+
+               part { name: "btn1";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding";
+                                       relative: 0.0 1.0;
+                               }
+                               min: 0 BUTTON_HEIGHT;
+                               align: 0.5 1;
+                       }
+               }
+               part { name: "padding";
+                       type: SPACER;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.5 1.0;
+                               }
+                               rel2 {
+                                       relative: 0.5 1.0;
+                               }
+                               align: 0.5 1.0;
+                               min: 1 0;
+                               max: 1 0;
+                               fixed: 1 0;
+                       }
+               }
+               part { name: "btn2";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               min: 0 BUTTON_HEIGHT;
+                               align: 0.5 1;
+                       }
+               }
+       }
+}
+
+group { name: "passkey_confirm_popup_scroller";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: BG_COLOR;
+                       }
+               }
+               part {
+                       name: "elm.image";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0 0;
+                                       to: "bg";
+                                       offset: 39 0;
+                               }
+                               rel2 {
+                                       relative: 0 0;
+                                       to: "bg";
+                                       offset: (39+242) 124;
+                               }
+                               visible: 1;
+                               image {
+                                       normal: "b_setup_wizard_bluetooth_pairing.png";
+                               }
+                               align: 0.5 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "elm.text.block";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "bg";
+                                       offset: 0 124;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       offset: -16 0;
+                               }
+                       }
+               }
+       }
+}
diff --git a/wearable/data/groups/passwd_popup.edc b/wearable/data/groups/passwd_popup.edc
new file mode 100644 (file)
index 0000000..6dd8015
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+group {
+       name: "passwd_popup";
+       images {
+               image: "00_search_edit_field_bg.png" COMP;
+       }
+       parts {
+               part {
+                       name: "pad_t";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.5 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 1.0 0.0;to_x: "pad_l";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;to_x: "pad_r";
+                               }
+                       }
+               }
+               part {
+                       name: "pad_l";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "pad_r";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+
+               part { name: "label";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_l";
+                                       to_y: "pad_t";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "pad_r";
+                                       to_y: "label_space";
+                               }
+                       }
+               }
+
+               part { name: "label_space";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_l";
+                                       to_y: "label";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "pad_r";
+                                       to_y: "entry";
+                               }
+                       }
+               }
+
+               part {
+                       name: "entry";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_l";
+                                       to_y: "label";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "pad_r";
+                                       to_y: "pad_b";
+                               }
+                       }
+               }
+               part {
+                       name: "pad_b";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 1.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/wearable/data/images/b_setup_wizard_bluetooth_pairing.png b/wearable/data/images/b_setup_wizard_bluetooth_pairing.png
new file mode 100644 (file)
index 0000000..e997528
Binary files /dev/null and b/wearable/data/images/b_setup_wizard_bluetooth_pairing.png differ
diff --git a/wearable/data/images/b_setup_wizard_device_01.png b/wearable/data/images/b_setup_wizard_device_01.png
new file mode 100644 (file)
index 0000000..15defda
Binary files /dev/null and b/wearable/data/images/b_setup_wizard_device_01.png differ
diff --git a/wearable/data/images/b_setup_wizard_pairing_01.png b/wearable/data/images/b_setup_wizard_pairing_01.png
new file mode 100644 (file)
index 0000000..0502431
Binary files /dev/null and b/wearable/data/images/b_setup_wizard_pairing_01.png differ
diff --git a/wearable/data/images/b_setup_wizard_watch_01.png b/wearable/data/images/b_setup_wizard_watch_01.png
new file mode 100644 (file)
index 0000000..5e87f59
Binary files /dev/null and b/wearable/data/images/b_setup_wizard_watch_01.png differ
diff --git a/wearable/data/org.tizen.bt-syspopup.png b/wearable/data/org.tizen.bt-syspopup.png
new file mode 100644 (file)
index 0000000..74ada1c
Binary files /dev/null and b/wearable/data/org.tizen.bt-syspopup.png differ
diff --git a/wearable/data/org.tizen.bt-syspopup.rule b/wearable/data/org.tizen.bt-syspopup.rule
new file mode 100644 (file)
index 0000000..77674df
--- /dev/null
@@ -0,0 +1,31 @@
+# Request
+org.tizen.bt-syspopup ug_bluetooth r
+org.tizen.bt-syspopup system::use_internet r
+org.tizen.bt-syspopup xorg rw
+org.tizen.bt-syspopup isf rwx
+org.tizen.bt-syspopup ail::db rw
+org.tizen.bt-syspopup syspopup::db rwx
+org.tizen.bt-syspopup dbus rw
+org.tizen.bt-syspopup sound_server rw
+org.tizen.bt-syspopup power_manager w
+org.tizen.bt-syspopup immvibed rw
+org.tizen.bt-syspopup svi-data rx
+org.tizen.bt-syspopup ui-gadget::client rw
+org.tizen.bt-syspopup deviced rwx
+org.tizen.bt-syspopup deviced::display rw
+org.tizen.bt-syspopup org.tizen.b2-setup-wizard rw
+org.tizen.bt-syspopup factory-reset rx
+
+org.tizen.bt-syspopup sap x
+org.tizen.bt-syspopup org.tizen.clocksetting rwx
+
+# Permit
+deviced org.tizen.bt-syspopup rwx
+org.tizen.app-tray org.tizen.bt-syspopup rx
+e17 org.tizen.bt-syspopup w
+
+# default include
+org.tizen.bt-syspopup app.default include
+
+org.tizen.bt-syspopup org.tizen.setting::system rxl
+org.tizen.bt-syspopup org.tizen.bt-connection-popup x
diff --git a/wearable/data/org.tizen.bt-syspopup.xml b/wearable/data/org.tizen.bt-syspopup.xml
new file mode 100644 (file)
index 0000000..62baa0f
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.bt-syspopup" version="2.0.25" install-location="internal-only">
+       <label>Bluetooth System Popup</label>
+       <author email="dh79.pyun@samsung.com" href="www.samsung.com">DoHyun Pyun</author>
+       <description>Bluetooth System Popup</description>
+       <ui-application appid="org.tizen.bt-syspopup" exec="/usr/apps/org.tizen.bt-syspopup/bin/bt-syspopup" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+               <label>Bluetooth System Popup</label>
+               <icon>org.tizen.bt-syspopup.png</icon>
+       </ui-application>
+</manifest>
diff --git a/wearable/debian/changelog b/wearable/debian/changelog
new file mode 100644 (file)
index 0000000..2d8bc5c
--- /dev/null
@@ -0,0 +1,735 @@
+bt-syspopup (0.2.81) unstable; urgency=low
+
+  * Update version
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.81
+
+ -- InJun Yang <injun.yang@samsung.com>  Sat, 20 Apr 2013 11:49:01 +0900
+
+bt-syspopup (0.2.79) unstable; urgency=low
+
+  * Add smack rule
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.79
+
+ -- InJun Yang <injun.yang@samsung.com>  Tue, 19 Mar 2013 11:49:01 +0900
+
+bt-syspopup (0.2.78) unstable; urgency=low
+
+  * Tagging and package upload
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.78
+
+ -- Chethan T N <chethan.tn@samsung.com>  Mon, 18 Feb 2013 09:17:18 +0530
+
+bt-syspopup (0.2.77) unstable; urgency=low
+
+  * Fixed passkey reply
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.77
+
+ -- Chethan T N <chethan.tn@samsung.com>  Thu, 07 Feb 2013 16:56:14 +0530
+
+bt-syspopup (0.2.74) unstable; urgency=low
+
+  * Apply the visibility hidden option
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.74
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 05 Feb 2013 19:29:44 +0900
+
+bt-syspopup (0.2.73) unstable; urgency=low
+
+  * Apply smack rule
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.73
+
+ -- InJun Yang <injun.yang@samsung.com>  Mon, 04 Feb 2013 19:06:06 +0900
+
+bt-syspopup (0.2.72) unstable; urgency=low
+
+  * Apply smack rule
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.72
+
+ -- InJun Yang <injun.yang@samsung.com>  Fri, 01 Feb 2013 20:14:04 +0900
+
+bt-syspopup (0.2.71) unstable; urgency=low
+
+  * Fix the PLM issue
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.71
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 Jan 2013 18:03:37 +0900
+
+bt-syspopup (0.2.69) unstable; urgency=low
+
+  * Fix the PLM issue
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.69
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 20 Dec 2012 15:34:26 +0900
+
+bt-syspopup (0.2.68) unstable; urgency=low
+
+  * Disable Quickpanel, and spelling correction
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.68
+
+ -- Divya yadav <divya.yadav@samsung.com>  Wed, 12 Dec 2012 11:47:55 +0530
+
+bt-syspopup (0.2.66) unstable; urgency=low
+
+  * Adjust the popup layout
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.66
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 03 Dec 2012 19:10:29 +0900
+
+bt-syspopup (0.2.65) unstable; urgency=low
+
+  * Adjust the popup layout
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.65
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 19 Nov 2012 18:12:20 +0900
+
+bt-syspopup (0.2.64) unstable; urgency=low
+
+  * Add the agent proxy information
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.64
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 16 Nov 2012 16:43:02 +0900
+
+bt-syspopup (0.2.63) unstable; urgency=low
+
+  * Change the callback function of the overwrite popup
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.63
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 15 Nov 2012 14:24:52 +0900
+
+bt-syspopup (0.2.62) unstable; urgency=low
+
+  * Add the popup to access the contact and message
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.62
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 13 Nov 2012 10:41:50 +0900
+
+bt-syspopup (0.2.61) unstable; urgency=low
+
+  * Changes for new BT Service agent
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.61
+
+ -- Divya yadav <divya.yadav@samsung.com>  Sat, 03 Nov 2012 11:15:41 +0530
+
+bt-syspopup (0.2.60) unstable; urgency=low
+
+  * Changes for new BT Service agent
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.60
+
+ -- Jaganath K <jaganath.k@samsung.com>  Fri, 02 Nov 2012 17:05:16 +0530
+
+bt-syspopup (0.2.59) unstable; urgency=low
+
+  * Change directory path
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.59
+
+ -- InJun Yang <injun.yang@samsung.com>  Thu, 25 Oct 2012 13:59:55 +0900
+
+bt-syspopup (0.2.58) unstable; urgency=low
+
+  * Copy the license file in target
+  * Git: magnolia/apps/home/bt-syspopup
+  * Tag: bt-syspopup_0.2.58
+
+ -- Jaekyun Lee <jkyun.lee@samsung.com>  Thu, 11 Oct 2012 16:07:36 +0900
+
+bt-syspopup (0.2.57) unstable; urgency=low
+
+  * Remove the timer
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.57
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 09 Oct 2012 14:31:00 +0900
+
+bt-syspopup (0.2.56) unstable; urgency=low
+
+  * Change SMACK domain name
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.56
+
+ -- Sangki Park <sangki79.park@samsung.com>  Tue, 25 Sep 2012 11:02:08 +0900
+
+bt-syspopup (0.2.55) unstable; urgency=low
+
+  * Reupload the package
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.55
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 24 Sep 2012 14:20:38 +0900
+
+bt-syspopup (0.2.54) unstable; urgency=low
+
+  * Show the passkey notification popup
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.54
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 21 Sep 2012 20:30:09 +0900
+
+bt-syspopup (0.2.53) unstable; urgency=low
+
+  * Apply smack manifest file
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.53
+
+ -- Sangki Park <sangki79.park@samsung.com>  Fri, 21 Sep 2012 09:25:27 +0900
+
+bt-syspopup (0.2.52) unstable; urgency=low
+
+  * Set the transparent in popup UI
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.52
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 17 Sep 2012 14:58:53 +0900
+
+bt-syspopup (0.2.51) unstable; urgency=low
+
+  * Change the button theme to popop style
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.51
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 02 Aug 2012 13:49:22 +0900
+
+bt-syspopup (0.2.50) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.50
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 01 Aug 2012 15:48:03 +0900
+
+bt-syspopup (0.2.49) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.49
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Sat, 28 Jul 2012 10:20:27 +0900
+
+bt-syspopup (0.2.48) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.48
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 27 Jul 2012 15:03:06 +0900
+
+bt-syspopup (0.2.47) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.47
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 12 Jun 2012 08:44:35 +0900
+
+bt-syspopup (0.2.46) unstable; urgency=low
+
+  * Increase version number for upload.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.46
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 04 Jun 2012 12:45:57 +0530
+
+bt-syspopup (0.2.45) unstable; urgency=low
+
+  * Change the pairing messagef as UX guideline
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.45
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 04 Jun 2012 09:01:59 +0900
+
+bt-syspopup (0.2.44) unstable; urgency=low
+
+  * Change the pairing messagef as UX guideline
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.44
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 31 May 2012 15:56:50 +0900
+
+bt-syspopup (0.2.43) unstable; urgency=low
+
+  * Covert the pin code input view to popup
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.43
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 29 May 2012 16:12:38 +0900
+
+bt-syspopup (0.2.42) unstable; urgency=low
+
+  * Upload packagefor changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.42
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 May 2012 13:26:09 +0900
+
+bt-syspopup (0.2.41) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.41
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 May 2012 10:51:08 +0900
+
+bt-syspopup (0.2.40) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.40
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 18 May 2012 10:22:03 +0900
+
+bt-syspopup (0.2.39) unstable; urgency=low
+
+  * Upload package for changes.
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.39
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 14 May 2012 16:24:38 +0530
+
+bt-syspopup (0.2.38) unstable; urgency=low
+
+  * Remove the codes about the MDM popup
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.38
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 08 May 2012 09:01:38 +0900
+
+bt-syspopup (0.2.37) unstable; urgency=low
+
+  * SLP prefix is changed
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.37
+
+ -- InJun Yang <injun.yang@samsung.com>  Thu, 15 Mar 2012 18:58:24 +0900
+
+bt-syspopup (0.2.36) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.36
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 15 Mar 2012 11:30:53 +0900
+
+bt-syspopup (0.2.35) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.35
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 14 Mar 2012 17:05:52 +0900
+
+bt-syspopup (0.2.34) unstable; urgency=low
+
+  * Modify and upload for elementary changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.34
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Tue, 13 Mar 2012 17:55:50 +0530
+
+bt-syspopup (0.2.33) unstable; urgency=low
+
+  * Upload the changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.33
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 12 Mar 2012 11:15:11 +0900
+
+bt-syspopup (0.2.32) unstable; urgency=low
+
+  * Change the code about editfield
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.32
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 29 Feb 2012 15:58:27 +0900
+
+bt-syspopup (0.2.31) unstable; urgency=low
+
+  * Apply the winset changes
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.31
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 16 Feb 2012 10:01:12 +0900
+
+bt-syspopup (0.2.30) unstable; urgency=low
+
+  * Add the popup for MDM service
+  * Git: slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.30
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 01 Feb 2012 09:40:35 +0900
+
+bt-syspopup (0.2.29) unstable; urgency=low
+
+  * Remove the package dependency of devman / sysman
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.29
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 06 Dec 2011 16:45:07 +0900
+
+bt-syspopup (0.2.28) unstable; urgency=low
+
+  * Add new design ID to support multi-language
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.28
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 Nov 2011 13:37:08 +0900
+
+bt-syspopup (0.2.27) unstable; urgency=low
+
+  * Fix the display bug about input view
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.27
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 14 Nov 2011 17:02:17 +0900
+
+bt-syspopup (0.2.26) unstable; urgency=low
+
+  * Fix the bug about editfield focus
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.26
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 11 Nov 2011 11:07:09 +0900
+
+bt-syspopup (0.2.25) unstable; urgency=low
+
+  * Adjust the position of the naviframe to bottom
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.25
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 09 Nov 2011 09:00:14 +0900
+
+bt-syspopup (0.2.24) unstable; urgency=low
+
+  * Change the focus method of editfield as new policy
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.24
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 03 Nov 2011 08:51:42 +0900
+
+bt-syspopup (0.2.23) unstable; urgency=low
+
+  * Add the code to display the indicator (H0100135960)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.23
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 27 Oct 2011 11:22:14 +0900
+
+bt-syspopup (0.2.22) unstable; urgency=low
+
+  * Remove the deprecated IME API (ecore_imf_context_input_panel_reset)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.22
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 26 Oct 2011 17:31:24 +0900
+
+bt-syspopup (0.2.21) unstable; urgency=low
+
+  * Modify the desktop file for Manage applications
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.21
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 24 Oct 2011 11:20:33 +0900
+
+bt-syspopup (0.2.20) unstable; urgency=low
+
+  * Add the baselayout size in desktop file
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.20
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 10 Oct 2011 11:14:26 +0900
+
+bt-syspopup (0.2.19) unstable; urgency=low
+
+  * Apply the naviframe patch
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.19
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 05 Oct 2011 09:23:35 +0900
+
+bt-syspopup (0.2.18) unstable; urgency=low
+
+  * Upload the packages
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.18
+
+ -- Chethan T N <chethan.tn@samsung.com>  Fri, 30 Sep 2011 18:34:32 +0530
+
+bt-syspopup (0.2.17) unstable; urgency=low
+
+  * Remove the dependency of libui-bgimage-dev
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.17
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 29 Sep 2011 08:38:38 +0900
+
+bt-syspopup (0.2.16) unstable; urgency=low
+
+  * Upload package for changee
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.16
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 29 Aug 2011 19:23:14 +0900
+
+bt-syspopup (0.2.15) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.15
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 11 Aug 2011 08:29:37 +0900
+
+bt-syspopup (0.2.14) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.14
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 09 Aug 2011 08:29:51 +0900
+
+bt-syspopup (0.2.13) unstable; urgency=low
+
+  * Apply the changed layout style & elm_bg
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.13
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 03 Aug 2011 18:42:59 +0900
+
+bt-syspopup (0.2.12) unstable; urgency=low
+
+  * Remove the system popup when the remote device cancel the event (H0100131180)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.12
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 01 Aug 2011 08:24:54 +0900
+
+bt-syspopup (0.2.11) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.11
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 21 Jul 2011 11:11:18 +0900
+
+bt-syspopup (0.2.10) unstable; urgency=low
+
+  * Upload package for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.10
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Thu, 07 Jul 2011 17:47:11 +0530
+
+bt-syspopup (0.2.9) unstable; urgency=low
+
+  * Remove 'ReplyPinCode' event when the timeout occured about keyboard. (H0100129046)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.9
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 30 Jun 2011 11:43:31 +0900
+
+bt-syspopup (0.2.8) unstable; urgency=low
+
+  * Change the button align to center
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.8
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 29 Jun 2011 14:56:34 +0900
+
+bt-syspopup (0.2.7) unstable; urgency=low
+
+  * Apply the landscape mode
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.7
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 10 Jun 2011 11:50:13 +0900
+
+bt-syspopup (0.2.6) unstable; urgency=low
+
+  * Upload packages for changes
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.6
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Thu, 09 Jun 2011 15:05:15 +0530
+
+bt-syspopup (0.2.5) unstable; urgency=low
+
+  * Add the icon in navigation bar (Defect H0100127548)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.5
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 31 May 2011 16:08:49 +0900
+
+bt-syspopup (0.2.4) unstable; urgency=low
+
+  * Add the dbus name to broadcast the dbus message
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.4
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 25 May 2011 17:24:31 +0900
+
+bt-syspopup (0.2.3) unstable; urgency=low
+
+  * Replace the dialogue group API to genlist dialogue group
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.3
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 16 May 2011 09:54:35 +0900
+
+bt-syspopup (0.2.2) unstable; urgency=low
+
+  * Show the ticker noti when the file recieved (Defect H0100126544)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.2
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 13 May 2011 17:27:36 +0900
+
+bt-syspopup (0.2.1) unstable; urgency=low
+
+  * Upload package for changes.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.1
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Mon, 09 May 2011 17:03:49 +0530
+
+bt-syspopup (0.2.0) unstable; urgency=low
+
+  * Release ug-obexd init dpkg
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.2.0
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 27 Apr 2011 18:25:30 +0900
+
+bt-syspopup (0.1.14) unstable; urgency=low
+
+  * Change package name
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: bt-syspopup_0.1.14
+
+ -- InJun Yang <injun.yang@samsung.com>  Mon, 11 Apr 2011 20:53:33 +0900
+
+deb.com.samsung.bt-syspopup (0.1.13) unstable; urgency=low
+
+  * Add the dependency of the development package about dbus-glib-1 and gobject-2.0 in control file
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.13
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 07 Apr 2011 16:49:40 +0900
+
+deb.com.samsung.bt-syspopup (0.1.12) unstable; urgency=low
+
+  * Remove dependency of the imlib package
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.12
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 29 Mar 2011 20:20:03 +0900
+
+deb.com.samsung.bt-syspopup (0.1.11) unstable; urgency=low
+
+  * Apply N-beat UX
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.11
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 22 Mar 2011 16:56:59 +0900
+
+deb.com.samsung.bt-syspopup (0.1.10) unstable; urgency=low
+
+  * New popup for applcation usage.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.10
+
+ -- Sunil Kumar Behera <sunil.behera@samsung.com>  Fri, 25 Feb 2011 12:29:26 +0530
+
+deb.com.samsung.bt-syspopup (0.1.9) unstable; urgency=low
+
+  * Remove the unnecessary NULL pointer check
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.9
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 21 Feb 2011 20:44:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.8) unstable; urgency=low
+
+  * Corrected IME appearance
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.8
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 18 Feb 2011 18:50:52 +0900
+
+deb.com.samsung.bt-syspopup (0.1.7) unstable; urgency=low
+
+  * Modify the desktop path to intall
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.7
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 17 Feb 2011 19:17:32 +0900
+
+deb.com.samsung.bt-syspopup (0.1.6) unstable; urgency=low
+
+  * Change the desktop path to install, name of the icon
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.6
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 14 Feb 2011 17:09:22 +0900
+
+deb.com.samsung.bt-syspopup (0.1.5) unstable; urgency=low
+
+  * hide bt-syspopup in task manager
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.5
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 08 Feb 2011 15:16:03 +0900
+
+deb.com.samsung.bt-syspopup (0.1.4) unstable; urgency=low
+
+  * Fix the build break (libslp-pm-dev)
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.4
+
+ -- Hyeongbae Park <jupio.park@samsung.com>  Mon, 07 Feb 2011 18:02:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.3) unstable; urgency=low
+
+  * Fix the BS when try to pair with the Arabic name's device
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.3
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 07 Feb 2011 11:26:00 +0900
+
+deb.com.samsung.bt-syspopup (0.1.2) unstable; urgency=low
+
+  * Add the code to avoid the BS
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.2
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Wed, 19 Jan 2011 20:33:48 +0900
+
+deb.com.samsung.bt-syspopup (0.1.1) unstable; urgency=low
+
+  * Show the IME after displaying the main layout
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.1
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 07 Jan 2011 13:50:37 +0900
+
+deb.com.samsung.bt-syspopup (0.1.0) unstable; urgency=low
+
+  * Initial Release.
+  * Git: 165.213.180.234:slp/pkgs/b/bt-syspopup
+  * Tag: deb.com.samsung.bt-syspopup_0.1.0
+
+ -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 28 Dec 2010 16:31:28 +0900
diff --git a/wearable/debian/compat b/wearable/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/wearable/debian/control b/wearable/debian/control
new file mode 100644 (file)
index 0000000..03bb1c1
--- /dev/null
@@ -0,0 +1,19 @@
+Source: bt-syspopup
+Section: main
+Priority: extra
+Maintainer: Hocheol Seo <hocheol.seo@samsung.com>, DoHyun Pyun <dh79.pyun@samsung.com>, InJun Yang <injun.yang@samsung.com>, Chanyeol Park <chanyeol.park@samsung.com>
+Uploaders: Sunil Behera <sunil.behera@samsung.com>, Syam Sidhardhan <s.syam@samsung.com>
+Build-Depends: debhelper (>= 5),libevas-dev,libecore-dev,libethumb-dev,libelm-dev,libefreet-dev, libslp-sensor-dev,libappcore-efl-dev,libdevman-dev, libslp-utilx-dev, syspopup-dev, dlog-dev, libslp-pm-dev, libdbus-glib-1-dev, libglib2.0-dev, libaul-1-dev
+Standards-Version: 0.1.0 
+
+Package: org.tizen.bt-syspopup
+Section: main
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libslp-utilx-0, libdlog-0
+Description: bluetooth system-popup application (bluetooth system popup)
+
+Package: org.tizen.bt-syspopup-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: bluetooth system-popup application (unstripped)
diff --git a/wearable/debian/dirs b/wearable/debian/dirs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/wearable/debian/docs b/wearable/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/wearable/debian/org.tizen.bt-syspopup.install.in b/wearable/debian/org.tizen.bt-syspopup.install.in
new file mode 100644 (file)
index 0000000..37fa72f
--- /dev/null
@@ -0,0 +1,3 @@
+/opt/apps/org.tizen.bt-syspopup/bin/bt-syspopup
+/opt/share/icons/*
+/opt/share/process-info/bt-syspopup.ini
diff --git a/wearable/debian/rules b/wearable/debian/rules
new file mode 100644 (file)
index 0000000..00c3f0d
--- /dev/null
@@ -0,0 +1,140 @@
+#!/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
+
+PREFIX ?= /opt/apps/org.tizen.bluetooth
+CFLAGS ?= -Wall -g
+CXXFLAGS ?=  -Wall -g
+LDFLAGS ?=
+DATADIR ?= /opt
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+       CXXFLAGS += -O0
+else
+       CFLAGS += -O2
+       CXXFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+#CMAKE_TMP_DIR = $(CURDIR)/cmake_tmp
+
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+#      mkdir -p $(CMAKE_TMP_DIR);
+       CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" 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.
+       $(MAKE)
+       #docbook-to-man debian/wavplayer.sgml > wavplayer.1
+
+       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#@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.
+       -$(MAKE) clean
+       #rm -rf $(CMAKE_TMP_DIR)
+
+       for f in `find $(CURDIR)/ -name "CMakeCache.txt"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "CMakeFiles"`; do \
+               rm -rf $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "cmake_install.cmake"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "Makefile"`; do \
+               rm -f $${f}; \
+       done
+
+       for f in `find $(CURDIR)/ -name "install_manifest.txt"`; do \
+               rm -f $${f}; \
+       done
+       
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+       rm -f data/*.desktop
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/wavplayer.
+       $(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.bt-syspopup-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/wearable/org.tizen.bt-syspopup.manifest b/wearable/org.tizen.bt-syspopup.manifest
new file mode 100644 (file)
index 0000000..831cac1
--- /dev/null
@@ -0,0 +1,13 @@
+<manifest>
+    <define>
+        <domain name="org.tizen.bt-syspopup"/>
+    </define>
+    <assign>
+        <filesystem path="/usr/share/applications/org.tizen.bt-syspopup.desktop" label="_"/>
+        <filesystem path="/usr/share/icons/default/small/org.tizen.bt-syspopup.png" label="_"/>
+        <filesystem path="/opt/share/process-info/bt-syspopup.ini" label="_"/>
+    </assign>
+    <request>
+        <domain name="org.tizen.bt-syspopup"/>
+    </request>
+</manifest>
diff --git a/wearable/src/bt-syspopup.c b/wearable/src/bt-syspopup.c
new file mode 100755 (executable)
index 0000000..0d2e628
--- /dev/null
@@ -0,0 +1,2100 @@
+/*
+* bt-syspopup
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Contact: Hocheol Seo <hocheol.seo@samsung.com>
+*           GirishAshok Joshi <girish.joshi@samsung.com>
+*           DoHyun Pyun <dh79.pyun@samsung.com>
+*
+* 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 <stdio.h>
+#include <dd-display.h>
+#include <app.h>
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <syspopup.h>
+#include <E_DBus.h>
+#include <aul.h>
+#include <bluetooth.h>
+#include <feedback.h>
+#include <dd-deviced.h>
+#include <efl_assist.h>
+#include "bt-syspopup.h"
+
+#define PREDEF_FACTORY_RESET           "launchfr"
+
+static void __bluetooth_delete_input_view(struct bt_popup_appdata *ad);
+static void __bluetooth_win_del(void *data);
+
+static void __bluetooth_input_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_input_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_keyback_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+
+static void __bluetooth_mouseup_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info);
+static void __bluetooth_terminate(void *data);
+
+static void __bt_draw_toast_popup(struct bt_popup_appdata *ad, char *toast_text);
+
+static int __bluetooth_term(bundle *b, void *data)
+{
+       BT_DBG("System-popup: terminate");
+       __bluetooth_terminate(data);
+       return 0;
+}
+
+static int __bluetooth_timeout(bundle *b, void *data)
+{
+       BT_DBG("System-popup: timeout");
+       return 0;
+}
+
+syspopup_handler handler = {
+       .def_term_fn = __bluetooth_term,
+       .def_timeout_fn = __bluetooth_timeout
+};
+
+/* Cleanup objects to avoid mem-leak */
+static void __bluetooth_cleanup(struct bt_popup_appdata *ad)
+{
+       BT_DBG("+");
+
+       if (ad == NULL)
+               return;
+
+       if (ad->viberation_id > 0) {
+               g_source_remove(ad->viberation_id);
+               ad->viberation_id = 0;
+       }
+
+       if (ad->timer) {
+               ecore_timer_del(ad->timer);
+               ad->timer = NULL;
+       }
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       if (ad->win_main) {
+               evas_object_del(ad->win_main);
+               ad->win_main = NULL;
+       }
+
+       if (ad->agent_proxy) {
+               g_object_unref(ad->agent_proxy);
+               ad->agent_proxy = NULL;
+       }
+
+       BT_DBG("-");
+}
+
+static void __lock_display()
+{
+       int ret = display_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0);
+       if (ret < 0)
+               BT_ERR("LCD Lock failed");
+}
+
+static void __unlock_display()
+{
+       int ret = display_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
+       if (ret < 0)
+               BT_ERR("LCD Unlock failed");
+}
+
+static void __bluetooth_notify_event(feedback_pattern_e feedback)
+{
+       int result;
+
+       BT_DBG("Notify event");
+
+       result = feedback_initialize();
+       if (result != FEEDBACK_ERROR_NONE) {
+               BT_ERR("feedback_initialize error : %d", result);
+               return;
+       }
+
+       result = feedback_play(feedback);
+       BT_DBG("feedback [%d], ret value [%d]", feedback, result);
+
+       result = feedback_deinitialize();
+       if (result != FEEDBACK_ERROR_NONE) {
+               BT_DBG("feedback_initialize error : %d", result);
+               return;
+       }
+}
+
+static gboolean __bluetooth_pairing_pattern_cb(gpointer data)
+{
+       __bluetooth_notify_event(FEEDBACK_PATTERN_BT_WAITING);
+
+       return TRUE;
+}
+
+static void __bluetooth_parse_event(struct bt_popup_appdata *ad, const char *event_type)
+{
+       BT_DBG("+");
+
+       if (!strcasecmp(event_type, "pin-request"))
+               ad->event_type = BT_EVENT_PIN_REQUEST;
+       else if (!strcasecmp(event_type, "passkey-confirm-request"))
+               ad->event_type = BT_EVENT_PASSKEY_CONFIRM_REQUEST;
+       else if (!strcasecmp(event_type, "passkey-request"))
+               ad->event_type = BT_EVENT_PASSKEY_REQUEST;
+       else if (!strcasecmp(event_type, "authorize-request"))
+               ad->event_type = BT_EVENT_AUTHORIZE_REQUEST;
+       else if (!strcasecmp(event_type, "app-confirm-request"))
+               ad->event_type = BT_EVENT_APP_CONFIRM_REQUEST;
+       else if (!strcasecmp(event_type, "push-authorize-request"))
+               ad->event_type = BT_EVENT_PUSH_AUTHORIZE_REQUEST;
+       else if (!strcasecmp(event_type, "confirm-overwrite-request"))
+               ad->event_type = BT_EVENT_CONFIRM_OVERWRITE_REQUEST;
+       else if (!strcasecmp(event_type, "keyboard-passkey-request"))
+               ad->event_type = BT_EVENT_KEYBOARD_PASSKEY_REQUEST;
+       else if (!strcasecmp(event_type, "bt-information"))
+               ad->event_type = BT_EVENT_INFORMATION;
+       else if (!strcasecmp(event_type, "exchange-request"))
+               ad->event_type = BT_EVENT_EXCHANGE_REQUEST;
+       else if (!strcasecmp(event_type, "phonebook-request"))
+               ad->event_type = BT_EVENT_PHONEBOOK_REQUEST;
+       else if (!strcasecmp(event_type, "message-request"))
+               ad->event_type = BT_EVENT_MESSAGE_REQUEST;
+       else if (!strcasecmp(event_type, "pairing-retry-request"))
+               ad->event_type = BT_EVENT_RETRY_PAIR_REQUEST;
+       else if (!strcasecmp(event_type, "handsfree-disconnect-request"))
+               ad->event_type = BT_EVENT_HANDSFREE_DISCONNECT_REQUEST;
+       else if (!strcasecmp(event_type, "handsfree-connect-request"))
+               ad->event_type = BT_EVENT_HANDSFREE_CONNECT_REQUEST;
+       else if (!strcasecmp(event_type, "music-auto-connect-request"))
+               ad->event_type = BT_EVENT_HANDSFREE_AUTO_CONNECT_REQUEST;
+       else if (!strcasecmp(event_type, "factory-reset-request"))
+               ad->event_type = BT_EVENT_FACTORY_RESET_REQUEST;
+       else
+               ad->event_type = 0x0000;
+
+       BT_DBG("-");
+       return;
+
+}
+
+static void __bluetooth_request_to_cancel(void)
+{
+       bt_device_cancel_bonding();
+}
+
+static void __bluetooth_remove_all_event(struct bt_popup_appdata *ad)
+{
+       BT_DBG("Remove event 0X%X", ad->event_type);
+       switch (ad->event_type) {
+       case BT_EVENT_PIN_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_STRING, "", G_TYPE_INVALID,
+                                          G_TYPE_INVALID);
+
+               break;
+
+
+       case BT_EVENT_KEYBOARD_PASSKEY_REQUEST:
+
+               __bluetooth_request_to_cancel();
+
+               break;
+
+       case BT_EVENT_PASSKEY_CONFIRM_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               __unlock_display();
+
+               break;
+
+       case BT_EVENT_PASSKEY_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_STRING, "", G_TYPE_INVALID,
+                                          G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_PASSKEY_DISPLAY_REQUEST:
+               /* Nothing to do */
+               break;
+
+       case BT_EVENT_AUTHORIZE_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_APP_CONFIRM_REQUEST:
+               {
+                       DBusMessage *msg;
+                       int response;
+
+                       msg = dbus_message_new_signal(
+                                       BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                       BT_SYS_POPUP_INTERFACE,
+                                       BT_SYS_POPUP_METHOD_RESPONSE);
+
+                       /* For timeout rejection is sent to  be handled in
+                          application */
+                       response = BT_AGENT_REJECT;
+
+                       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response,
+                                DBUS_TYPE_INVALID);
+
+                       e_dbus_message_send(ad->EDBusHandle,
+                               msg, NULL, -1, NULL);
+
+                       dbus_message_unref(msg);
+               }
+               break;
+
+       case BT_EVENT_PUSH_AUTHORIZE_REQUEST:
+       case BT_EVENT_EXCHANGE_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+               break;
+
+       case BT_EVENT_CONFIRM_OVERWRITE_REQUEST: {
+               DBusMessage *msg;
+               int response = BT_AGENT_REJECT;
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                               BT_SYS_POPUP_INTERFACE,
+                                               BT_SYS_POPUP_METHOD_RESPONSE);
+               if (msg == NULL) {
+                       BT_ERR("msg == NULL, Allocation failed");
+                       break;
+               }
+
+               dbus_message_append_args(msg, DBUS_TYPE_INT32,
+                                               &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               break;
+       }
+
+       case BT_EVENT_FACTORY_RESET_REQUEST:
+
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               __unlock_display();
+
+               break;
+
+       default:
+               break;
+       }
+
+       __bluetooth_win_del(ad);
+}
+static void __bluetooth_retry_pairing_cb(void *data,
+                                    Evas_Object *obj, void *event_info)
+{
+       BT_DBG("+ ");
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       DBusMessage *msg = NULL;
+       int response;
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+        else
+               response = BT_AGENT_REJECT;
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response,
+                                DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+
+       dbus_message_unref(msg);
+
+       evas_object_del(obj);
+
+       __bluetooth_win_del(ad);
+       BT_DBG("-");
+}
+
+static int __bluetooth_pairing_retry_timeout_cb(void *data)
+{
+       BT_DBG("+ ");
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+
+       DBusMessage *msg = NULL;
+       int response;
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                         BT_SYS_POPUP_INTERFACE,
+                                         BT_SYS_POPUP_METHOD_RESPONSE);
+
+       response = BT_AGENT_REJECT;
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response,
+                                DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+
+       dbus_message_unref(msg);
+
+       __bluetooth_win_del(ad);
+       BT_DBG("-");
+
+       return 0;
+}
+
+
+static int __bluetooth_request_timeout_cb(void *data)
+{
+       struct bt_popup_appdata *ad;
+
+       if (data == NULL)
+               return 0;
+
+       ad = (struct bt_popup_appdata *)data;
+
+       BT_DBG("Request time out, Canceling reqeust");
+
+       /* Destory UI and timer */
+       if (ad->timer) {
+               ecore_timer_del(ad->timer);
+               ad->timer = NULL;
+       }
+
+       __bluetooth_remove_all_event(ad);
+       return 0;
+}
+
+#ifdef PIN_REQUEST_FOR_BASIC_PAIRING
+static void __bluetooth_input_request_cb(void *data,
+                                      Evas_Object *obj, void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+       int response;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+
+       if (ad == NULL)
+               return;
+
+       /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+
+       input_text = (char *)elm_entry_entry_get(ad->entry);
+
+       if (input_text) {
+               convert_input_text =
+                   elm_entry_markup_to_utf8(input_text);
+       }
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+       else
+               response = BT_AGENT_CANCEL;
+
+       if (convert_input_text == NULL)
+               return;
+
+       BT_DBG_SECURE("PIN/Passkey[%s] event[%d] response[%d - %s]",
+                    convert_input_text, ad->event_type, response,
+                    (response == BT_AGENT_ACCEPT) ? "Accept" : "Cancel");
+
+       if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                  "ReplyPinCode", G_TYPE_UINT, response,
+                                  G_TYPE_STRING, convert_input_text,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+       } else {
+               dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                  "ReplyPasskey", G_TYPE_UINT, response,
+                                  G_TYPE_STRING, convert_input_text,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+       }
+       __bluetooth_delete_input_view(ad);
+
+       free(convert_input_text);
+
+       __bluetooth_win_del(ad);
+}
+#endif
+
+static void __bluetooth_input_cancel_cb(void *data,
+                                      Evas_Object *obj, void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+
+       bt_device_cancel_bonding();
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_send_signal_pairing_confirm_result(void *data, int response)
+{
+       if (data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       DBusMessage *msg = NULL;
+
+       BT_DBG("+");
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                             BT_SYS_POPUP_INTERFACE,
+                             BT_SYS_POPUP_METHOD_RESPONSE);
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+       dbus_message_unref(msg);
+
+       BT_DBG("-");
+}
+
+
+static void __bluetooth_passkey_confirm_cb(void *data,
+                                        Evas_Object *obj, void *event_info)
+{
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK)) {
+               __bluetooth_send_signal_pairing_confirm_result(ad, 1);
+               dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_ACCEPT,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       } else {
+               __bluetooth_send_signal_pairing_confirm_result(ad, 0);
+               dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyConfirmation",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       }
+       __unlock_display();
+
+       evas_object_del(obj);
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_reset_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       __bluetooth_send_signal_pairing_confirm_result(ad, 0);
+       dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyConfirmation",
+                                  G_TYPE_UINT, BT_AGENT_CANCEL,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+       __unlock_display();
+
+       if (!g_strcmp0(event, BT_STR_RESET)) {
+               BT_DBG("Factory reset");
+               deviced_call_predef_action(PREDEF_FACTORY_RESET, 0, NULL);
+       }
+
+       evas_object_del(obj);
+       __bluetooth_win_del(ad);
+}
+
+static int __bluetooth_init_app_signal(struct bt_popup_appdata *ad)
+{
+       if (NULL == ad)
+               return FALSE;
+
+       e_dbus_init();
+       ad->EDBusHandle = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (!ad->EDBusHandle) {
+               BT_ERR("e_dbus_bus_get failed  \n ");
+               return FALSE;
+       }
+
+       BT_DBG("e_dbus_bus_get success \n ");
+       return TRUE;
+}
+
+static void __bluetooth_app_confirm_cb(void *data,
+                                    Evas_Object *obj, void *event_info)
+{
+       BT_DBG("__bluetooth_app_confirm_cb ");
+       if (obj == NULL || data == NULL)
+               return;
+
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       const char *event = elm_object_text_get(obj);
+
+       DBusMessage *msg = NULL;
+       int response;
+
+       msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               response = BT_AGENT_ACCEPT;
+       else
+               response = BT_AGENT_REJECT;
+
+       dbus_message_append_args(msg,
+                                DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+       e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+       dbus_message_unref(msg);
+
+       evas_object_del(obj);
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_authorization_request_cb(void *data,
+                                              Evas_Object *obj,
+                                              void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       guint reply_val;
+
+       if (obj == NULL || ad == NULL)
+               return;
+
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK)) {
+               reply_val = (ad->make_trusted == TRUE) ?
+                               BT_AGENT_ACCEPT_ALWAYS : BT_AGENT_ACCEPT;
+       } else {
+               reply_val = BT_AGENT_CANCEL;
+       }
+
+       dbus_g_proxy_call_no_reply(ad->agent_proxy, "ReplyAuthorize",
+               G_TYPE_UINT, reply_val,
+               G_TYPE_INVALID, G_TYPE_INVALID);
+
+       ad->make_trusted = FALSE;
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_push_authorization_request_cb(void *data,
+                                                   Evas_Object *obj,
+                                                   void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       if (obj == NULL || ad == NULL)
+               return;
+
+       const char *event = elm_object_text_get(obj);
+
+       if (!g_strcmp0(event, BT_STR_OK))
+               dbus_g_proxy_call_no_reply(ad->obex_proxy, "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_ACCEPT,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+       else
+               dbus_g_proxy_call_no_reply(ad->obex_proxy, "ReplyAuthorize",
+                                          G_TYPE_UINT, BT_AGENT_CANCEL,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+
+       __bluetooth_win_del(ad);
+}
+
+static void __bluetooth_ime_hide(void)
+{
+       Ecore_IMF_Context *imf_context = NULL;
+       imf_context = ecore_imf_context_add(ecore_imf_context_default_id_get());
+       if (imf_context)
+               ecore_imf_context_input_panel_hide(imf_context);
+}
+
+static void __bluetooth_entry_change_cb(void *data, Evas_Object *obj,
+                                     void *event_info)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+       char *output_text = NULL;
+       int text_length = 0;
+
+       input_text = (char *)elm_entry_entry_get(obj);
+
+       if (input_text) {
+               convert_input_text = elm_entry_markup_to_utf8(input_text);
+               if (convert_input_text) {
+                       text_length = strlen(convert_input_text);
+
+                       if (text_length == 0) {
+                               elm_object_disabled_set(ad->edit_field_save_btn,
+                                                       EINA_TRUE);
+                       } else {
+                               elm_object_disabled_set(ad->edit_field_save_btn,
+                                                       EINA_FALSE);
+                       }
+
+                       if (ad->event_type == BT_EVENT_PASSKEY_REQUEST) {
+                               if (text_length > BT_PK_MLEN) {
+                                       convert_input_text[BT_PK_MLEN] = '\0';
+                                       output_text = elm_entry_utf8_to_markup(
+                                                       convert_input_text);
+
+                                       elm_entry_entry_set(obj, output_text);
+                                       elm_entry_cursor_end_set(obj);
+                                       free(output_text);
+                               }
+                       } else {
+                               if (text_length > BT_PIN_MLEN) {
+                                       convert_input_text[BT_PIN_MLEN] = '\0';
+                                       output_text = elm_entry_utf8_to_markup(
+                                                       convert_input_text);
+
+                                       elm_entry_entry_set(obj, output_text);
+                                       elm_entry_cursor_end_set(obj);
+                                       free(output_text);
+                               }
+                       }
+                       free(convert_input_text);
+               }
+       }
+}
+
+static void __bluetooth_auth_check_clicked_cb(void *data, Evas_Object *obj,
+                                                       void *event_info)
+{
+       struct bt_popup_appdata *ad = data;
+       Eina_Bool state = elm_check_state_get(obj);
+
+       BT_DBG("Check %d", state);
+       ad->make_trusted = state;
+}
+
+static void __bluetooth_mouseup_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       DBusMessage *msg = NULL;
+       int response = BT_AGENT_REJECT;
+
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_auth_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_auth_cb);
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg,
+                                        DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_keyback_auth_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       DBusMessage *msg = NULL;
+       int response = BT_AGENT_REJECT;
+
+       BT_DBG("Keyboard event callback function is called + \n");
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_auth_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_auth_cb);
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                                     BT_SYS_POPUP_INTERFACE,
+                                     BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg,
+                                        DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+static void __bluetooth_draw_auth_popup(struct bt_popup_appdata *ad,
+                       const char *title, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char temp_str[BT_TITLE_STR_MAX_LEN + BT_TEXT_EXTRA_LEN] = { 0 };
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+       Evas_Object *layout;
+       Evas_Object *label;
+       Evas_Object *label2;
+       Evas_Object *check;
+       BT_DBG("+");
+
+       ad->make_trusted = TRUE;
+
+       ad->popup = elm_popup_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND,
+                                               EVAS_HINT_EXPAND);
+
+       elm_object_style_set(ad->popup, "transparent");
+
+       layout = elm_layout_add(ad->popup);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "auth_popup");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+
+       if (title != NULL) {
+               snprintf(temp_str, BT_TITLE_STR_MAX_LEN + BT_TEXT_EXTRA_LEN,
+                                       "%s", title);
+
+               label = elm_label_add(ad->popup);
+               elm_object_style_set(label, "popup/default");
+               elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+               elm_object_text_set(label, temp_str);
+               evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+               evas_object_size_hint_align_set(label, EVAS_HINT_FILL,
+                                                               EVAS_HINT_FILL);
+               elm_object_part_content_set(layout, "popup_title", label);
+               evas_object_show(label);
+       }
+
+       check = elm_check_add(ad->popup);
+       elm_check_state_set(check, EINA_TRUE);
+       evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+       evas_object_smart_callback_add(check, "changed",
+                                       __bluetooth_auth_check_clicked_cb, ad);
+       elm_object_part_content_set(layout, "check", check);
+       evas_object_show(check);
+
+       label2 = elm_label_add(ad->popup);
+       elm_object_style_set(label2, "popup/default");
+       elm_label_line_wrap_set(label2, ELM_WRAP_MIXED);
+       elm_object_text_set(label2, BT_STR_DONT_ASK_AGAIN);
+       evas_object_size_hint_weight_set(label2, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(label2, EVAS_HINT_FILL,
+                                                       EVAS_HINT_FILL);
+       elm_object_part_content_set(layout, "check_label", label2);
+       evas_object_show(label2);
+
+       evas_object_show(layout);
+       elm_object_content_set(ad->popup, layout);
+
+       btn1 = elm_button_add(ad->popup);
+       elm_object_style_set(btn1, "popup");
+       elm_object_text_set(btn1, btn1_text);
+       elm_object_part_content_set(ad->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+       btn2 = elm_button_add(ad->popup);
+       elm_object_style_set(btn2, "popup");
+       elm_object_text_set(btn2, btn2_text);
+       elm_object_part_content_set(ad->popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", func, ad);
+
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_mouseup_auth_cb, ad);
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_keyback_auth_cb, ad);
+
+       evas_object_show(ad->popup);
+       evas_object_show(ad->win_main);
+
+       BT_DBG("-");
+}
+
+static void __bluetooth_draw_reset_popup(struct bt_popup_appdata *ad,
+                       const char *msg, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char *txt;
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+       Evas_Object *scroller;
+       Evas_Object *label;
+
+       BT_DBG("+");
+
+       ad->popup = elm_popup_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       elm_object_part_text_set(ad->popup, "title,text", BT_STR_TITLE_CONNECT);
+
+       if (msg != NULL) {
+               scroller = elm_scroller_add(ad->popup);
+               elm_object_style_set(scroller, "effect");
+
+               evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
+                               EVAS_HINT_EXPAND);
+               elm_object_content_set(ad->popup, scroller);
+               evas_object_show(scroller);
+
+               label = elm_label_add(scroller);
+               elm_object_style_set(label, "popup/default");
+               elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+
+               // temporarily remove this routine for RTL mark.
+               //txt = elm_entry_utf8_to_markup(msg);
+               //elm_object_text_set(label, txt);
+               //free(txt);
+               elm_object_text_set(label, msg);
+
+               evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND,
+                               EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(label, EVAS_HINT_FILL,
+                               EVAS_HINT_FILL);
+               elm_object_content_set(scroller, label);
+       }
+
+       btn1 = elm_button_add(ad->popup);
+       elm_object_style_set(btn1, "popup");
+       elm_object_text_set(btn1, btn1_text);
+       elm_object_part_content_set(ad->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+       btn2 = elm_button_add(ad->popup);
+       elm_object_style_set(btn2, "popup");
+       elm_object_text_set(btn2, btn2_text);
+       elm_object_part_content_set(ad->popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", func, ad);
+
+       evas_object_show(ad->popup);
+       evas_object_show(ad->win_main);
+       elm_object_focus_set(ad->popup, EINA_TRUE);
+
+       BT_DBG("-");
+}
+
+static void __bluetooth_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_cb);
+               __bluetooth_remove_all_event(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+
+       BT_DBG("Keyboard event callback function is called %s+ \n", ev->keyname);
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_mouseup_cb);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_keyback_cb);
+               __bluetooth_remove_all_event(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+static void __bluetooth_draw_popup(struct bt_popup_appdata *ad,
+                       const char *title, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char temp_str[BT_TITLE_STR_MAX_LEN+BT_TEXT_EXTRA_LEN] = { 0 };
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+       Evas_Object *bg;
+       Evas_Object *label;
+       Evas_Object *scroller;
+       Evas_Object *default_ly;
+       Evas_Object *layout;
+       Evas_Object *scroller_layout;
+       char *txt;
+       char *buf;
+
+       BT_DBG("__bluetooth_draw_popup");
+
+       bg = elm_bg_add(ad->win_main);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, bg);
+       evas_object_show(bg);
+
+       default_ly = elm_layout_add(bg);
+       elm_layout_theme_set(default_ly, "layout", "application", "default");
+       evas_object_size_hint_weight_set(default_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(bg, "elm.swallow.content", default_ly);
+       evas_object_show(default_ly);
+
+       layout = elm_layout_add(default_ly);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "passkey_confirm_popup");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(default_ly, "elm.swallow.content", layout);
+       evas_object_show(layout);
+
+       scroller = elm_scroller_add(layout);
+       elm_object_style_set(scroller, "effect");
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+       evas_object_show(scroller);
+
+       scroller_layout = elm_layout_add(scroller);
+       elm_layout_file_set(scroller_layout, CUSTOM_POPUP_PATH, "passkey_confirm_popup_scroller");
+       evas_object_size_hint_weight_set(scroller_layout, EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+
+       if (title) {
+               BT_DBG("Title %s", title);
+               label = elm_label_add(scroller_layout);
+               elm_object_style_set(label, "popup/default");
+               elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+
+               elm_object_part_content_set(scroller_layout, "elm.text.block", label);
+               evas_object_show(label);
+
+               txt = elm_entry_utf8_to_markup(title);
+               buf = g_strdup_printf(BT_SET_FONT_SIZE, BT_TITLE_FONT_30, txt);
+               elm_object_text_set(label, buf);
+               free(txt);
+       }
+
+       elm_object_content_set(scroller, scroller_layout);
+       elm_object_part_content_set(layout, "scroller", scroller);
+
+       elm_object_content_set(ad->win_main, bg);
+
+       btn1 = elm_button_add(layout);
+       elm_object_text_set(btn1,BT_STR_CANCEL);
+       evas_object_size_hint_weight_set(btn1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(layout, "btn1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+       btn2 = elm_button_add(layout);
+       elm_object_text_set(btn2,BT_STR_OK);
+       evas_object_size_hint_weight_set(btn2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(layout, "btn2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", func, ad);
+
+       evas_object_show(ad->win_main);
+
+       BT_DBG("__bluetooth_draw_popup END");
+}
+
+static void __bluetooth_draw_loading_popup(struct bt_popup_appdata *ad,
+                       const char *title, char *btn1_text,
+                       char *btn2_text, void (*func) (void *data,
+                       Evas_Object *obj, void *event_info))
+{
+       char temp_str[BT_TITLE_STR_MAX_LEN+BT_TEXT_EXTRA_LEN] = { 0 };
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+       Evas_Object *bg;
+       Evas_Object *label;
+       Evas_Object *scroller;
+       Evas_Object *default_ly;
+       Evas_Object *layout;
+       Evas_Object *scroller_layout;
+       Evas_Object *icon;
+       char *txt;
+       char *buf;
+
+       BT_DBG("__bluetooth_draw_loading_popup");
+
+       bg = elm_bg_add(ad->win_main);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, bg);
+       evas_object_show(bg);
+
+       default_ly = elm_layout_add(bg);
+       elm_layout_theme_set(default_ly, "layout", "application", "default");
+       evas_object_size_hint_weight_set(default_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(bg, "elm.swallow.content", default_ly);
+       evas_object_show(default_ly);
+
+       layout = elm_layout_add(default_ly);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "passkey_confirm");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(default_ly, "elm.swallow.content", layout);
+       evas_object_show(layout);
+
+       scroller = elm_scroller_add(layout);
+       elm_object_style_set(scroller, "effect");
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+       evas_object_show(scroller);
+
+       scroller_layout = elm_layout_add(scroller);
+       elm_layout_file_set(scroller_layout, CUSTOM_POPUP_PATH, "passkey_confirm_scroller");
+       evas_object_size_hint_weight_set(scroller_layout, EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+
+//     elm_object_signal_emit(scroller_layout, "connect.start,show", "");
+       icon = elm_image_add(scroller_layout);
+       elm_image_file_set(icon, CUSTOM_POPUP_PATH, BT_IMAGE_WATCH);
+       elm_object_part_content_set(scroller_layout, "elm.swallow.img.watch", icon);
+
+       icon = elm_image_add(scroller_layout);
+       elm_image_file_set(icon, CUSTOM_POPUP_PATH, BT_IMAGE_PHONE);
+       elm_object_part_content_set(scroller_layout, "elm.swallow.img.phone", icon);
+
+
+       if (title) {
+               BT_DBG("Title %s", title);
+               label = elm_label_add(scroller_layout);
+               elm_object_style_set(label, "popup/default");
+               elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+
+               elm_object_part_content_set(scroller_layout, "elm.text.block", label);
+               evas_object_show(label);
+
+               txt = elm_entry_utf8_to_markup(title);
+               buf = g_strdup_printf(BT_SET_FONT_SIZE, BT_TITLE_FONT_30, txt);
+               elm_object_text_set(label, buf);
+               free(txt);
+       }
+
+       elm_object_content_set(scroller, scroller_layout);
+       elm_object_part_content_set(layout, "scroller", scroller);
+
+       elm_object_content_set(ad->win_main, bg);
+
+       btn1 = elm_button_add(layout);
+       elm_object_text_set(btn1,BT_STR_CANCEL);
+       evas_object_size_hint_weight_set(btn1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(layout, "btn1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", func, ad);
+
+       btn2 = elm_button_add(layout);
+       elm_object_text_set(btn2,BT_STR_OK);
+       evas_object_size_hint_weight_set(btn2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(layout, "btn2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", func, ad);
+
+       evas_object_show(ad->win_main);
+
+       BT_DBG("__bluetooth_draw_loading_popup END");
+}
+
+static void __bluetooth_input_mouseup_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       int response = BT_AGENT_CANCEL;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+       BT_DBG("Mouse event callback function is called + \n");
+
+       if (ev->button == 3) {
+               if (ad == NULL)
+                       return;
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+
+               /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+               input_text = (char *)elm_entry_entry_get(ad->entry);
+               if (input_text) {
+                       convert_input_text =
+                               elm_entry_markup_to_utf8(input_text);
+               }
+               if (convert_input_text == NULL)
+                       return;
+
+               if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               } else {
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               }
+               __bluetooth_delete_input_view(ad);
+               free(convert_input_text);
+               if (ad->entry) {
+                       evas_object_del(ad->entry);
+                       ad->entry = NULL;
+               }
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Mouse event callback -\n");
+}
+
+static void __bluetooth_input_keyback_cb(void *data,
+                       Evas *e, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Key_Down *ev = event_info;
+       struct bt_popup_appdata *ad = data;
+       int response = BT_AGENT_CANCEL;
+       char *input_text = NULL;
+       char *convert_input_text = NULL;
+
+
+       BT_DBG("Keyboard event callback function is called + \n");
+
+       if (!strcmp(ev->keyname, KEY_BACK)) {
+               if (ad == NULL)
+                       return;
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->entry, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                               __bluetooth_input_mouseup_cb);
+               evas_object_event_callback_del(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                               __bluetooth_input_keyback_cb);
+               /* BT_EVENT_PIN_REQUEST / BT_EVENT_PASSKEY_REQUEST */
+               input_text = (char *)elm_entry_entry_get(ad->entry);
+               if (input_text) {
+                       convert_input_text =
+                               elm_entry_markup_to_utf8(input_text);
+               }
+               if (convert_input_text == NULL)
+                       return;
+
+               if (ad->event_type == BT_EVENT_PIN_REQUEST) {
+                       BT_DBG("It is PIN Request event \n");
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPinCode", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               } else {
+                       BT_DBG("It is PASSKEYRequest event \n");
+                       dbus_g_proxy_call_no_reply(ad->agent_proxy,
+                                          "ReplyPasskey", G_TYPE_UINT, response,
+                                          G_TYPE_STRING, convert_input_text,
+                                          G_TYPE_INVALID, G_TYPE_INVALID);
+               }
+               __bluetooth_delete_input_view(ad);
+               free(convert_input_text);
+               __bluetooth_win_del(ad);
+       }
+       BT_DBG("Keyboard Mouse event callback -\n");
+}
+
+#ifdef PIN_REQUEST_FOR_BASIC_PAIRING
+static void __bluetooth_draw_input_view(struct bt_popup_appdata *ad,
+                       const char *title, const char *text,
+                       void (*func)
+                       (void *data, Evas_Object *obj, void *event_info))
+{
+       Evas_Object *conformant = NULL;
+       Evas_Object *content = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *passpopup = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *l_button = NULL;
+       Evas_Object *r_button = NULL;
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+       if (ad == NULL || ad->win_main == NULL) {
+               BT_ERR("Invalid parameter");
+               return;
+       }
+
+       evas_object_show(ad->win_main);
+
+       conformant = elm_conformant_add(ad->win_main);
+       if (conformant == NULL) {
+               BT_ERR("conformant is NULL");
+               return;
+       }
+       ad->popup = conformant;
+
+       elm_win_conformant_set(ad->win_main, EINA_TRUE);
+       elm_win_resize_object_add(ad->win_main, conformant);
+       evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(conformant);
+
+       content = elm_layout_add(conformant);
+       elm_object_content_set(conformant, content);
+
+       passpopup = elm_popup_add(content);
+       elm_object_part_text_set(passpopup, "title,text", title);
+
+       elm_object_style_set(passpopup, "transparent");
+
+       layout = elm_layout_add(passpopup);
+       elm_layout_file_set(layout, CUSTOM_POPUP_PATH, "passwd_popup");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       label = elm_label_add(passpopup);
+       elm_object_style_set(label, "popup/default");
+       elm_label_line_wrap_set(label, ELM_WRAP_WORD);
+       elm_object_text_set(label, text);
+       evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(label);
+
+       entry = ea_editfield_add(passpopup, EA_EDITFIELD_SINGLELINE);
+       /* As per specs PIN codes may be up to 16 characters*/
+       limit_filter_data.max_char_count = 16;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
+                                    &limit_filter_data);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_prediction_allow_set(entry, EINA_FALSE);
+       elm_entry_password_set(entry, EINA_TRUE);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+       evas_object_show(entry);
+       ad->entry = entry;
+
+       evas_object_smart_callback_add(entry, "changed",
+                               __bluetooth_entry_change_cb,
+                               ad);
+
+       l_button = elm_button_add(ad->win_main);
+       elm_object_style_set(l_button, "popup");
+       elm_object_text_set(l_button, BT_STR_CANCEL);
+       elm_object_part_content_set(passpopup, "button1", l_button);
+       evas_object_smart_callback_add(l_button, "clicked", func, ad);
+
+       r_button = elm_button_add(ad->win_main);
+       elm_object_style_set(r_button, "popup");
+       elm_object_text_set(r_button, BT_STR_OK);
+       elm_object_part_content_set(passpopup, "button2", r_button);
+       evas_object_smart_callback_add(r_button, "clicked", func, ad);
+       elm_object_disabled_set(r_button, EINA_TRUE);
+       ad->edit_field_save_btn = r_button;
+
+       evas_object_event_callback_add(entry, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(ad->popup, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(r_button, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(r_button, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+       evas_object_event_callback_add(l_button, EVAS_CALLBACK_MOUSE_UP,
+                       __bluetooth_input_mouseup_cb, ad);
+       evas_object_event_callback_add(l_button, EVAS_CALLBACK_KEY_DOWN,
+                       __bluetooth_input_keyback_cb, ad);
+
+
+       elm_object_part_content_set(layout, "entry", entry);
+       elm_object_part_content_set(layout, "label", label);
+
+       elm_object_part_text_set(entry, "elm.guide", BT_STR_TAP_TO_ENTER);
+
+       evas_object_show(layout);
+       evas_object_show(content);
+       evas_object_show(passpopup);
+       elm_object_content_set(passpopup, layout);
+       elm_object_focus_set(entry, EINA_TRUE);
+}
+#endif
+
+static void __bluetooth_delete_input_view(struct bt_popup_appdata *ad)
+{
+       __bluetooth_ime_hide();
+}
+
+static DBusGProxy* __bluetooth_create_agent_proxy(DBusGConnection *conn,
+                                                               const char *path)
+{
+       DBusGProxy *proxy;
+
+       proxy = dbus_g_proxy_new_for_name(conn, "org.projectx.bt",
+                       path, "org.bluez.Agent");
+       if (!proxy)
+               BT_ERR("dbus_g_proxy_new_for_name is failed");
+
+       return proxy;
+}
+
+static int __bt_get_vconf_setup_wizard()
+{
+       int wizard_state = VCONFKEY_SETUP_WIZARD_UNLOCK;
+
+       if (vconf_get_int(VCONFKEY_SETUP_WIZARD_STATE, &wizard_state))
+               BT_DBG("Fail to get Wizard State");
+
+       return wizard_state;
+}
+
+/* AUL bundle handler */
+static int __bluetooth_launch_handler(struct bt_popup_appdata *ad,
+                            void *reset_data, const char *event_type)
+{
+       bundle *kb = (bundle *) reset_data;
+       char view_title[BT_TITLE_STR_MAX_LEN] = { 0 };
+       char text[BT_GLOBALIZATION_STR_LENGTH] = { 0 };
+       int timeout = 0;
+       const char *device_name = NULL;
+       const char *passkey = NULL;
+       const char *file = NULL;
+       const char *agent_path;
+       char *conv_str = NULL;
+
+       BT_DBG("+");
+
+       if (!reset_data || !event_type) {
+               BT_ERR("reset_data : %d, event_type : %d",
+                               reset_data, event_type);
+               return -1;
+       }
+
+       BT_ERR("Event Type = %s[0X%X]", event_type, ad->event_type);
+
+#ifdef PIN_REQUEST_FOR_BASIC_PAIRING
+       if (!strcasecmp(event_type, "pin-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        "%s", BT_STR_BLUETOOTH_PAIRING_REQUEST);
+
+               snprintf(text, BT_GLOBALIZATION_STR_LENGTH,
+                        BT_STR_ENTER_PIN_TO_PAIR, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               /* Request user inputted PIN for basic pairing */
+               __bluetooth_draw_input_view(ad, view_title, text,
+                                         __bluetooth_input_request_cb);
+       } else if (!strcasecmp(event_type, "passkey-request")) {
+               const char *device_name = NULL;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        "%s", BT_STR_BLUETOOTH_PAIRING_REQUEST);
+
+               snprintf(text, BT_GLOBALIZATION_STR_LENGTH,
+                        BT_STR_ENTER_PIN_TO_PAIR, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               /* Request user inputted Passkey for basic pairing */
+               __bluetooth_draw_input_view(ad, view_title, text,
+                                         __bluetooth_input_request_cb);
+
+       }
+#endif
+
+       if (!strcasecmp(event_type, "passkey-confirm-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                               BT_STR_CONFIRM_PASSKEY_PS_TO_PAIR_WITH_PS, conv_str, passkey);
+                       BT_DBG("title: %s", passkey);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_loading_popup(ad, view_title,
+                                       BT_STR_CANCEL, BT_STR_OK,
+                                       __bluetooth_passkey_confirm_cb);
+               } else {
+                       BT_ERR("wrong parameter : %s, %s", device_name, passkey);
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "passkey-display-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                            BT_STR_ENTER_PS_ON_PS_TO_PAIR, passkey, conv_str);
+
+                       BT_DBG("title: %s", view_title);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_popup(ad, view_title,
+                                               BT_STR_CANCEL, NULL,
+                                               __bluetooth_input_cancel_cb);
+               } else {
+                       BT_ERR("wrong parameter : %s, %s", device_name, passkey);
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "authorize-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_TO_CONNECT_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "app-confirm-request")) {
+               BT_DBG("app-confirm-request");
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               const char *title = NULL;
+               const char *type = NULL;
+
+               title = bundle_get_val(kb, "title");
+               type = bundle_get_val(kb, "type");
+
+               if (!title) {
+                       BT_ERR("title is NULL");
+                       return -1;
+               }
+
+               if (strcasecmp(type, "twobtn") == 0) {
+                       __bluetooth_draw_popup(ad, title, BT_STR_CANCEL, BT_STR_OK,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "onebtn") == 0) {
+                       timeout = BT_NOTIFICATION_TIMEOUT;
+                       __bluetooth_draw_popup(ad, title, BT_STR_OK, NULL,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "none") == 0) {
+                       timeout = BT_NOTIFICATION_TIMEOUT;
+                       __bluetooth_draw_popup(ad, title, NULL, NULL,
+                                            __bluetooth_app_confirm_cb);
+               }
+       } else if (!strcasecmp(event_type, "push-authorize-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               file = bundle_get_val(kb, "file");
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_RECEIVE_PS_FROM_PS_Q, file, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                               __bluetooth_push_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "confirm-overwrite-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               file = bundle_get_val(kb, "file");
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_OVERWRITE_FILE_Q, file);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                               __bluetooth_app_confirm_cb);
+       } else if (!strcasecmp(event_type, "keyboard-passkey-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               passkey = bundle_get_val(kb, "passkey");
+
+               if (device_name && passkey) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                            BT_STR_ENTER_PS_ON_PS_TO_PAIR, passkey, conv_str);
+
+                       BT_DBG("title: %s", view_title);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_popup(ad, view_title,
+                                               BT_STR_CANCEL, NULL,
+                                               __bluetooth_input_cancel_cb);
+               } else {
+                       BT_ERR("wrong parameter : %s, %s", device_name, passkey);
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else if (!strcasecmp(event_type, "bt-information")) {
+               BT_DBG("bt-information");
+               timeout = BT_NOTIFICATION_TIMEOUT;
+
+               const char *title = NULL;
+               const char *type = NULL;
+
+               title = bundle_get_val(kb, "title");
+               type = bundle_get_val(kb, "type");
+
+               if (title != NULL) {
+                       if (strlen(title) > 255) {
+                               BT_ERR("titls is too long");
+                               return -1;
+                       }
+               } else {
+                       BT_ERR("titls is NULL");
+                       return -1;
+               }
+
+               if (strcasecmp(type, "onebtn") == 0) {
+                       __bluetooth_draw_popup(ad, title, BT_STR_OK, NULL,
+                                            __bluetooth_app_confirm_cb);
+               } else if (strcasecmp(type, "none") == 0) {
+                       __bluetooth_draw_popup(ad, title, NULL, NULL,
+                                            __bluetooth_app_confirm_cb);
+               }
+       } else if (!strcasecmp(event_type, "exchange-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_RECEIVE_FILE_FROM_PS_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "phonebook-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_PHONEBOOK_ACCESS_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "message-request")) {
+               timeout = BT_AUTHORIZATION_TIMEOUT;
+
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name)
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+               snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                        BT_STR_ALLOW_PS_TO_ACCESS_MESSAGES_Q, conv_str);
+
+               if (conv_str)
+                       free(conv_str);
+
+               __bluetooth_draw_auth_popup(ad, view_title, BT_STR_CANCEL, BT_STR_OK,
+                                    __bluetooth_authorization_request_cb);
+       } else if (!strcasecmp(event_type, "pairing-retry-request")) {
+               DBusMessage *msg = NULL;
+               int response = BT_AGENT_REJECT;
+
+               timeout = BT_TOAST_NOTIFICATION_TIMEOUT;
+               __bt_draw_toast_popup(ad, BT_STR_UNABLE_TO_CONNECT);
+
+               msg = dbus_message_new_signal(BT_SYS_POPUP_IPC_RESPONSE_OBJECT,
+                               BT_SYS_POPUP_INTERFACE,
+                               BT_SYS_POPUP_METHOD_RESPONSE);
+
+               dbus_message_append_args(msg, DBUS_TYPE_INT32,
+                               &response, DBUS_TYPE_INVALID);
+
+               e_dbus_message_send(ad->EDBusHandle, msg, NULL, -1, NULL);
+               dbus_message_unref(msg);
+       } else if (!strcasecmp(event_type, "handsfree-disconnect-request")) {
+               if (__bt_get_vconf_setup_wizard() == VCONFKEY_SETUP_WIZARD_LOCK) {
+                       BT_DBG("VCONFKEY_SETUP_WIZARD_LOCK: No toast shown");
+                       return -1;
+               }
+
+               timeout = BT_TOAST_NOTIFICATION_TIMEOUT;
+               __bt_draw_toast_popup(ad, BT_STR_BLUETOOTH_HAS_BEEN_DISCONNECTED);
+
+       } else if (!strcasecmp(event_type, "handsfree-connect-request")) {
+               if (__bt_get_vconf_setup_wizard() == VCONFKEY_SETUP_WIZARD_LOCK) {
+                       BT_DBG("VCONFKEY_SETUP_WIZARD_LOCK: No toast shown");
+                       return -1;
+               }
+
+               timeout = BT_TOAST_NOTIFICATION_TIMEOUT;
+               __bt_draw_toast_popup(ad, BT_STR_BLUETOOTH_CONNECTED);
+
+       } else if (!strcasecmp(event_type, "music-auto-connect-request")) {
+               timeout = BT_TOAST_NOTIFICATION_TIMEOUT;
+               __bt_draw_toast_popup(ad, BT_STR_AUTO_CONNECT);
+
+       } else if (!strcasecmp(event_type, "factory-reset-request")) {
+               device_name = bundle_get_val(kb, "device-name");
+               agent_path = bundle_get_val(kb, "agent-path");
+
+               ad->agent_proxy = __bluetooth_create_agent_proxy(ad->conn, agent_path);
+               if (!ad->agent_proxy)
+                       return -1;
+
+               if (device_name) {
+                       conv_str = elm_entry_utf8_to_markup(device_name);
+
+                       snprintf(view_title, BT_TITLE_STR_MAX_LEN,
+                                BT_STR_FACTORY_RESET, conv_str, conv_str);
+
+                       if (conv_str)
+                               free(conv_str);
+
+                       __bluetooth_draw_reset_popup(ad, view_title,
+                                       BT_STR_CANCEL, BT_STR_RESET,
+                                       __bluetooth_reset_cb);
+               } else {
+                       BT_ERR("device name NULL");
+                       timeout = BT_ERROR_TIMEOUT;
+               }
+       } else {
+               BT_ERR("Unknown event_type : %s", event_type);
+               return -1;
+       }
+
+       if (ad->event_type != BT_EVENT_FILE_RECEIVED && timeout != 0) {
+               ad->timer = ecore_timer_add(timeout, (Ecore_Task_Cb)
+                                       __bluetooth_request_timeout_cb, ad);
+       }
+       BT_DBG("-");
+       return 0;
+}
+
+static Eina_Bool __bt_toast_mouseup_cb(void *data, int type, void *event)
+{
+       Ecore_X_Atom atom;
+       Ecore_Event_Key *ev = event;
+       struct bt_popup_appdata *ad;
+
+       ad = (struct bt_popup_appdata *)data;
+       if(ev == NULL || ev->keyname == NULL || ad == NULL){
+               return ECORE_CALLBACK_DONE;
+       }
+
+       __bluetooth_win_del(ad);
+
+       return ECORE_CALLBACK_DONE;
+}
+
+static void __bt_draw_toast_popup(struct bt_popup_appdata *ad, char *toast_text)
+{
+       Ecore_X_Window xwin;
+
+       ad->popup = elm_popup_add(ad->win_main);
+       elm_object_style_set(ad->popup, "toast");
+       elm_popup_orient_set(ad->popup, ELM_POPUP_ORIENT_BOTTOM);
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       ea_object_event_callback_add(ad->popup, EA_CALLBACK_BACK, ea_popup_back_cb, NULL);
+       elm_object_part_text_set(ad->popup,"elm.text", toast_text);
+
+       xwin = elm_win_xwindow_get(ad->popup);
+       if (xwin == 0) {
+               BT_ERR("elm_win_xwindow_get is failed");
+       } else {
+               BT_DBG("Setting window type");
+               ecore_x_netwm_window_type_set(xwin,
+                               ECORE_X_WINDOW_TYPE_NOTIFICATION);
+               utilx_set_system_notification_level(ecore_x_display_get(),
+                               xwin, UTILX_NOTIFICATION_LEVEL_NORMAL);
+       }
+
+       ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, __bt_toast_mouseup_cb, ad);
+
+       evas_object_show(ad->popup);
+       evas_object_show(ad->win_main);
+       elm_object_focus_set(ad->popup, EINA_TRUE);
+}
+
+static Eina_Bool __exit_idler_cb(void *data)
+{
+       elm_exit();
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __popup_terminate(void)
+{
+       if (ecore_idler_add(__exit_idler_cb, NULL))
+               return;
+
+       __exit_idler_cb(NULL);
+}
+
+static void __bluetooth_win_del(void *data)
+{
+       struct bt_popup_appdata *ad = (struct bt_popup_appdata *)data;
+
+       __bluetooth_cleanup(ad);
+       __popup_terminate();
+}
+
+static Evas_Object *__bluetooth_create_win(const char *name)
+{
+       Evas_Object *eo;
+       int w;
+       int h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       elm_win_alpha_set(eo, EINA_TRUE);
+
+       return eo;
+}
+
+static void __bluetooth_session_init(struct bt_popup_appdata *ad)
+{
+       DBusGConnection *conn = NULL;
+       GError *err = NULL;
+
+       g_type_init();
+
+       conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, &err);
+
+       if (!conn) {
+               BT_ERR("ERROR: Can't get on system bus [%s]",
+                            err->message);
+               g_error_free(err);
+               return;
+       }
+
+       ad->conn = conn;
+
+       ad->obex_proxy = dbus_g_proxy_new_for_name(conn,
+                                                  "org.bluez.frwk_agent",
+                                                  "/org/obex/ops_agent",
+                                                  "org.openobex.Agent");
+       if (!ad->obex_proxy)
+               BT_ERR("Could not create obex dbus proxy");
+
+       if (!__bluetooth_init_app_signal(ad))
+               BT_ERR("__bt_syspopup_init_app_signal failed");
+}
+
+static bool __bluetooth_create(void *data)
+{
+       struct bt_popup_appdata *ad = data;
+       Evas_Object *win = NULL;
+
+       BT_DBG("__bluetooth_create() start.\n");
+
+       /* create window */
+       win = __bluetooth_create_win(PACKAGE);
+       if (win == NULL) {
+               BT_ERR("__bluetooth_create_win is failed");
+               return false;
+       }
+       ad->win_main = win;
+       ad->viberation_id = 0;
+
+       /* Handle rotation */
+       if (elm_win_wm_rotation_supported_get(ad->win_main)) {
+               int rots[4] = {0, 90, 180, 270};
+               elm_win_wm_rotation_available_rotations_set(ad->win_main, rots, 4);
+       }
+
+       /* init internationalization */
+       bindtextdomain(BT_COMMON_PKG, BT_LOCALEDIR);
+       textdomain(BT_COMMON_PKG);
+
+       ecore_imf_init();
+
+       __bluetooth_session_init(ad);
+       if (bt_initialize() != BT_ERROR_NONE) {
+               BT_ERR("bt_initialize is failed");
+       }
+
+       return true;
+}
+
+static void __bluetooth_terminate(void *data)
+{
+       BT_DBG("__bluetooth_terminate()");
+
+       struct bt_popup_appdata *ad = data;
+
+       if (bt_deinitialize() != BT_ERROR_NONE) {
+               BT_ERR("bt_deinitialize is failed");
+       }
+       __bluetooth_ime_hide();
+
+       if (ad->conn) {
+               dbus_g_connection_unref(ad->conn);
+               ad->conn = NULL;
+       }
+
+       if (ad->popup)
+               evas_object_del(ad->popup);
+
+       if (ad->win_main)
+               evas_object_del(ad->win_main);
+
+       ad->popup = NULL;
+       ad->win_main = NULL;
+}
+
+static void __bluetooth_pause(void *data)
+{
+       BT_DBG("__bluetooth_pause()");
+       return;
+}
+
+static void __bluetooth_resume(void *data)
+{
+       BT_DBG("__bluetooth_resume()");
+       return;
+}
+
+static void __bluetooth_reset(service_h service, void *user_data)
+{
+       struct bt_popup_appdata *ad = user_data;
+       bundle *b = NULL;
+       const char *event_type = NULL;
+       int ret = 0;
+
+       BT_DBG("__bluetooth_reset()");
+
+       if (ad == NULL) {
+               BT_ERR("App data is NULL");
+               return;
+       }
+
+       ret = service_to_bundle(service, &b);
+
+       /* Start Main UI */
+       event_type = bundle_get_val(b, "event-type");
+       if (event_type == NULL) {
+               BT_ERR("event type is NULL");
+               return;
+       }
+       BT_ERR("event_type : %s", event_type);
+
+       __bluetooth_parse_event(ad, event_type);
+
+       if (!strcasecmp(event_type, "terminate")) {
+               BT_ERR("get terminate event");
+               __bluetooth_win_del(ad);
+               return;
+       }
+
+       if (syspopup_has_popup(b)) {
+               /* Destroy the existing popup*/
+               BT_ERR("Aleady popup existed");
+               __bluetooth_cleanup(ad);
+
+               /* create window */
+               ad->win_main = __bluetooth_create_win(PACKAGE);
+               if (ad->win_main == NULL) {
+                       BT_ERR("fail to create win!");
+                       return;
+               }
+
+               ret = syspopup_reset(b);
+               if (ret == -1) {
+                       BT_ERR("syspopup_reset err");
+                       return;
+               }
+
+               goto DONE;
+       }
+
+       ret = syspopup_create(b, &handler, ad->win_main, ad);
+       if (ret == -1) {
+               BT_ERR("syspopup_create err");
+               __bluetooth_remove_all_event(ad);
+               return;
+       }
+
+
+DONE:
+       ret = __bluetooth_launch_handler(ad, b, event_type);
+
+       /* Change LCD brightness */
+       if (display_change_state(LCD_NORMAL) != 0)
+               BT_ERR("Fail to change LCD");
+
+       if (ret != 0) {
+               BT_ERR("__bluetooth_launch_handler is failed. event[%d], ret[%d]",
+                               ad->event_type, ret);
+               __bluetooth_remove_all_event(ad);
+       }
+
+       if (ad->event_type == BT_EVENT_HANDSFREE_DISCONNECT_REQUEST) {
+               __bluetooth_notify_event(FEEDBACK_PATTERN_DISCONNECTED);
+       } else if (ad->event_type == BT_EVENT_HANDSFREE_CONNECT_REQUEST) {
+               __bluetooth_notify_event(FEEDBACK_PATTERN_CONNECTED);
+       } else if (ad->event_type == BT_EVENT_PASSKEY_CONFIRM_REQUEST ||
+                  ad->event_type == BT_EVENT_FACTORY_RESET_REQUEST) {
+               __bluetooth_notify_event(FEEDBACK_PATTERN_BT_PAIRING);
+               ad->viberation_id = g_timeout_add(BT_VIBERATION_INTERVAL,
+                                                 __bluetooth_pairing_pattern_cb, NULL);
+               __lock_display();
+       }
+
+       return;
+}
+
+static void __bluetooth_lang_changed_cb(void *data)
+{
+       BT_DBG("+");
+       ret_if(data == NULL);
+       BT_DBG("-");
+}
+
+EXPORT int main(int argc, char *argv[])
+{
+       struct bt_popup_appdata ad;
+       memset(&ad, 0x0, sizeof(struct bt_popup_appdata));
+
+       app_event_callback_s event_callback;
+
+       event_callback.create = __bluetooth_create;
+       event_callback.terminate = __bluetooth_terminate;
+       event_callback.pause = __bluetooth_pause;
+       event_callback.resume = __bluetooth_resume;
+       event_callback.service = __bluetooth_reset;
+       event_callback.low_memory = NULL;
+       event_callback.low_battery = NULL;
+       event_callback.device_orientation = NULL;
+       event_callback.language_changed = __bluetooth_lang_changed_cb;
+       event_callback.region_format_changed = NULL;
+
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/wearable/src/bt-syspopup.h b/wearable/src/bt-syspopup.h
new file mode 100644 (file)
index 0000000..2830913
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+* bt-syspopup
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Contact: Hocheol Seo <hocheol.seo@samsung.com>
+*           GirishAshok Joshi <girish.joshi@samsung.com>
+*           DoHyun Pyun <dh79.pyun@samsung.com>
+*
+* 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 __DEF_BT_SYSPOPUP_H_
+#define __DEF_BT_SYSPOPUP_H_
+
+#include <Elementary.h>
+#include <dlog.h>
+#include <glib.h>
+#include <dbus/dbus-glib.h>
+
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME "org.tizen.bt-syspopup"
+#endif
+
+#ifndef PREFIX
+#define PREFIX "/usr/apps"PACKAGE_NAME
+#endif
+
+#define EXPORT __attribute__((visibility("default")))
+
+#define TEMP_DIR       "/tmp"
+
+#define PACKAGE                "bt-syspopup"
+#define APPNAME                "bt-syspopup"
+#define ICON_DIR       PREFIX"/res/default/small/icon"
+
+#define CUSTOM_POPUP_PATH PREFIX"/res/edje/custom_popup.edj"
+#define POPUP_IMAGE_PATH PREFIX"/res/images"
+
+#define BT_IMAGE_WATCH "b_setup_wizard_watch_01.png"
+#define BT_IMAGE_PHONE "b_setup_wizard_device_01.png"
+
+#define BT_COMMON_PKG          "bt-connection-popup"
+#define BT_LOCALEDIR           "/usr/apps/org.tizen.bt-connection-popup/res/locale"
+
+#define _EDJ(obj) elm_layout_edje_get(obj)
+
+#define BT_AUTHENTICATION_TIMEOUT              35
+#define BT_AUTHORIZATION_TIMEOUT               25
+#define BT_NOTIFICATION_TIMEOUT                2
+#define BT_ERROR_TIMEOUT                       1
+#define BT_TOAST_NOTIFICATION_TIMEOUT          3
+#define BT_PAIR_RETRY_TIMEOUT          5
+
+#define BT_PIN_MLEN 16         /* Pin key max length */
+#define BT_PK_MLEN 6           /* Passkey max length */
+#define BT_CONTROLBAR_MAX_LENGTH 3
+
+#define BT_GLOBALIZATION_STR_LENGTH 256
+#define BT_DEVICE_NAME_LENGTH_MAX 256
+#define BT_FILE_NAME_LENGTH_MAX 256
+#define BT_TEXT_EXTRA_LEN 20
+
+#define BT_SET_FONT_SIZE       "<font_size=%d>%s</font_size>"
+#define BT_TITLE_FONT_30       30
+
+#define BT_TITLE_STR_MAX_LEN \
+       (BT_GLOBALIZATION_STR_LENGTH+BT_DEVICE_NAME_LENGTH_MAX+BT_FILE_NAME_LENGTH_MAX)
+
+#define BT_MESSAGE_STRING_SIZE 256*2+1
+
+#define BT_VIBERATION_INTERVAL 2000
+
+#undef LOG_TAG
+#define LOG_TAG "BT_SYSPOPUP"
+
+#define BT_DBG(format, args...) SLOGD(format, ##args)
+#define BT_ERR(format, args...) SLOGE(format, ##args)
+
+#define BT_DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args)
+#define BT_ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args)
+
+#define ret_if(expr) do { \
+               if (expr) { \
+                       return; \
+               } \
+       } while (0)
+#define retv_if(expr, val) do { \
+               if (expr) { \
+                       return (val); \
+               } \
+       } while (0)
+#define retm_if(expr, fmt, arg...) do { \
+               if (expr) { \
+                       BT_ERR(fmt, ##arg); \
+                       return; \
+               } \
+       } while (0)
+#define retvm_if(expr, val, fmt, arg...) do { \
+               if (expr) { \
+                       BT_ERR(fmt, ##arg); \
+                       return (val); \
+               } \
+       } while (0)
+
+#define BT_SYS_POPUP_IPC_RESPONSE_OBJECT "/org/projectx/bt_syspopup_res"
+#define BT_SYS_POPUP_INTERFACE "User.Bluetooth.syspopup"
+#define BT_SYS_POPUP_METHOD_RESPONSE "Response"
+
+/* String defines to support multi-languages */
+#define BT_STR_ENTER_PIN       \
+       dgettext(BT_COMMON_PKG, "IDS_BT_HEADER_ENTERPIN")
+#define BT_STR_ALLOW_PS_TO_CONNECT_Q   \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ALLOW_PS_TO_CONNECT_Q")
+
+#define BT_STR_RECEIVE_PS_FROM_PS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_RECEIVE_PS_FROM_PS_Q")
+
+#define BT_STR_PASSKEY_MATCH_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_MATCH_PASSKEYS_ON_PS_Q")
+
+#define BT_STR_OVERWRITE_FILE_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_PS_ALREADY_EXISTS_OVERWRITE_Q")
+
+#define BT_STR_ENTER_PS_ON_PS_TO_PAIR \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_ENTER_P1SS_ON_P2SS_TO_PAIR_THEN_TAP_RETURN_OR_ENTER")
+
+#define BT_STR_RECEIVE_FILE_FROM_PS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_RECEIVE_FILE_FROM_PS_Q")
+
+/* Need to convert the design ID */
+#define BT_STR_BLUETOOTH_PAIRING_REQUEST \
+       dgettext(BT_COMMON_PKG, "IDS_BT_HEADER_BLUETOOTH_PAIRING_REQUEST")
+
+#define BT_STR_ENTER_PIN_TO_PAIR \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ENTER_PIN_TO_PAIR_WITH_PS_HTRY_0000_OR_1234")
+
+#define BT_STR_SHOW_PASSWORD \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_SHOW_PASSWORD")
+
+#define BT_STR_CONFIRM_PASSKEY_PS_TO_PAIR_WITH_PS \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_CONFIRM_PASSKEY_IS_P2SS_TO_PAIR_WITH_P1SS")
+
+#define BT_STR_ALLOW_PS_PHONEBOOK_ACCESS_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_ALLOW_PS_PHONEBOOK_ACCESS")
+
+#define BT_STR_ALLOW_PS_TO_ACCESS_MESSAGES_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_ALLOW_PS_TO_ACCESS_MESSAGES_Q")
+
+#define BT_STR_DONT_ASK_AGAIN \
+       dgettext(BT_COMMON_PKG, "IDS_BT_BODY_DONT_ASK_AGAIN")
+
+#define BT_STR_UNABLE_TO_CONNECT \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_UNABLE_TO_CONNECT")
+
+#define BT_STR_TIMEOUT_TRY_AGAIN_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_PAIRRETRY")
+
+#define BT_STR_BLUETOOTH_ERROR_TRY_AGAIN_Q \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_BLUETOOTH_ERROR_TRY_AGAIN_Q")
+#define BT_STR_TAP_TO_ENTER \
+       dgettext(BT_COMMON_PKG, "IDS_SIM_BODY_TAP_TO_ENTER_ABB")
+
+#define BT_STR_OK dgettext(BT_COMMON_PKG, "IDS_MP_SK_OK")
+#define BT_STR_CANCEL dgettext(BT_COMMON_PKG, "IDS_MUSIC_SK_CANCEL")
+
+#define BT_STR_BLUETOOTH_CONNECTED \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_BLUETOOTH_CONNECTED")
+#define BT_STR_BLUETOOTH_HAS_BEEN_DISCONNECTED \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_BLUETOOTH_HAS_BEEN_DISCONNECTED")
+#define BT_STR_AUTO_CONNECT \
+       dgettext(BT_COMMON_PKG, "IDS_BT_POP_CONNECTING_TO_BLUETOOTH_STEREO_HEADSET_ING")
+
+#define BT_STR_TITLE_CONNECT dgettext(BT_COMMON_PKG, "IDS_BT_HEADER_CONNECT")
+
+#define BT_STR_FACTORY_RESET \
+       dgettext(BT_COMMON_PKG, "IDS_WMGR_BODY_PS_IS_ATTEMPTING_TO_CONNECT_TO_YOUR_GEAR_TO_CONNECT_TO_PS_THE_GEAR_WILL_BE_RESET_TO_ITS_FACTORY_SETTINGS")
+
+#define BT_STR_RESET dgettext(BT_COMMON_PKG, "IDS_ST_BUTTON_RESET_ABB2")
+
+typedef enum {
+       BT_CHANGED_MODE_ENABLE,
+       BT_CHANGED_MODE_DISABLE,
+} bt_changed_mode_type_t;
+
+typedef enum {
+       BT_EVENT_PIN_REQUEST = 0x0001,
+       BT_EVENT_PASSKEY_CONFIRM_REQUEST = 0x0002,
+       BT_EVENT_PASSKEY_REQUEST = 0x0004,
+       BT_EVENT_PASSKEY_DISPLAY_REQUEST = 0x0008,
+       BT_EVENT_AUTHORIZE_REQUEST = 0x0010,
+       BT_EVENT_APP_CONFIRM_REQUEST = 0x0020,
+       BT_EVENT_PUSH_AUTHORIZE_REQUEST = 0x0040,
+       BT_EVENT_CONFIRM_OVERWRITE_REQUEST = 0x0080,
+       BT_EVENT_FILE_RECEIVED = 0x0100,
+       BT_EVENT_KEYBOARD_PASSKEY_REQUEST = 0x0200,
+       BT_EVENT_INFORMATION = 0x0400,
+       BT_EVENT_TERMINATE = 0x0800,
+       BT_EVENT_EXCHANGE_REQUEST = 0x1000,
+       BT_EVENT_PHONEBOOK_REQUEST = 0x2000,
+       BT_EVENT_MESSAGE_REQUEST = 0x4000,
+       BT_EVENT_RETRY_PAIR_REQUEST = 0x8000,
+       BT_EVENT_HANDSFREE_CONNECT_REQUEST = 0x1100,
+       BT_EVENT_HANDSFREE_DISCONNECT_REQUEST = 0x1200,
+       BT_EVENT_HANDSFREE_AUTO_CONNECT_REQUEST = 0x1600,
+       BT_EVENT_FACTORY_RESET_REQUEST = 0x10000,
+} bt_popup_event_type_t;
+
+typedef enum {
+       BT_AGENT_ACCEPT,
+       BT_AGENT_REJECT,
+       BT_AGENT_CANCEL,
+       BT_CORE_AGENT_TIMEOUT,
+       BT_AGENT_ACCEPT_ALWAYS,
+} bt_agent_accept_type_t;
+
+struct bt_popup_appdata {
+       Evas *evas;
+       Evas_Object *win_main;
+       Evas_Object *popup;
+
+       /* Passkey layout objects */
+       Evas_Object *entry;
+       Evas_Object *edit_field_save_btn;
+       Evas_Object *ticker_noti;
+
+       Ecore_Timer *timer;
+
+       DBusGProxy *agent_proxy;
+       DBusGProxy *obex_proxy;
+       E_DBus_Connection *EDBusHandle;
+       DBusGConnection *conn;
+
+       int changed_mode;
+       gboolean make_trusted;
+       guint viberation_id;
+       bt_popup_event_type_t event_type;
+};
+
+#endif                         /* __DEF_BT_SYSPOPUP_H_ */