Tizen 2.0 Release tizen_2.0 accepted/tizen_2.0/20130215.204533 submit/tizen_2.0/20130215.191539
authorHyungKyu Song <hk76.song@samsung.com>
Fri, 15 Feb 2013 15:01:25 +0000 (00:01 +0900)
committerHyungKyu Song <hk76.song@samsung.com>
Fri, 15 Feb 2013 15:01:25 +0000 (00:01 +0900)
109 files changed:
CMakeLists.txt [new file with mode: 0755]
LICENSE [new file with mode: 0755]
NOTICE [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/wrt-setting.install.in [new file with mode: 0644]
packaging/wrt-setting.spec [new file with mode: 0644]
po/CMakeLists.txt [new file with mode: 0755]
po/ar.po [new file with mode: 0755]
po/az.po [new file with mode: 0755]
po/bg.po [new file with mode: 0755]
po/ca.po [new file with mode: 0755]
po/cs.po [new file with mode: 0755]
po/da.po [new file with mode: 0755]
po/de_DE.po [new file with mode: 0755]
po/el_GR.po [new file with mode: 0755]
po/en.po [new file with mode: 0755]
po/en_PH.po [new file with mode: 0755]
po/en_US.po [new file with mode: 0755]
po/es_ES.po [new file with mode: 0755]
po/es_MX.po [new file with mode: 0755]
po/et.po [new file with mode: 0755]
po/eu.po [new file with mode: 0755]
po/fi.po [new file with mode: 0755]
po/fr_CA.po [new file with mode: 0755]
po/fr_FR.po [new file with mode: 0755]
po/ga.po [new file with mode: 0755]
po/gl.po [new file with mode: 0755]
po/hi.po [new file with mode: 0755]
po/hr.po [new file with mode: 0755]
po/hu.po [new file with mode: 0755]
po/hy.po [new file with mode: 0755]
po/is.po [new file with mode: 0755]
po/it_IT.po [new file with mode: 0755]
po/ja_JP.po [new file with mode: 0755]
po/ka.po [new file with mode: 0755]
po/kk.po [new file with mode: 0755]
po/ko_KR.po [new file with mode: 0755]
po/lt.po [new file with mode: 0755]
po/lv.po [new file with mode: 0755]
po/mk.po [new file with mode: 0755]
po/nb.po [new file with mode: 0755]
po/nl_NL.po [new file with mode: 0755]
po/pl.po [new file with mode: 0755]
po/pt_BR.po [new file with mode: 0755]
po/pt_PT.po [new file with mode: 0755]
po/ro.po [new file with mode: 0755]
po/ru_RU.po [new file with mode: 0755]
po/sk.po [new file with mode: 0755]
po/sl.po [new file with mode: 0755]
po/sr.po [new file with mode: 0755]
po/sv.po [new file with mode: 0755]
po/tr_TR.po [new file with mode: 0755]
po/uk.po [new file with mode: 0755]
po/uz.po [new file with mode: 0755]
po/zh_CN.po [new file with mode: 0755]
po/zh_HK.po [new file with mode: 0755]
po/zh_SG.po [new file with mode: 0755]
po/zh_TW.po [new file with mode: 0755]
webapp-common/CMakeLists.txt [new file with mode: 0755]
webapp-common/edc/CMakeLists.txt [new file with mode: 0644]
webapp-common/edc/defs.h [new file with mode: 0644]
webapp-common/edc/main.edc [new file with mode: 0644]
webapp-common/icons.h [new file with mode: 0644]
webapp-common/icons/01_controlbar_icon_create.png [new file with mode: 0644]
webapp-common/icons/01_controlbar_icon_delete.png [new file with mode: 0644]
webapp-common/icons/01_controlbar_icon_edit.png [new file with mode: 0644]
webapp-common/icons/01_controlbar_icon_save.png [new file with mode: 0644]
webapp-common/icons/WebApplication.png [new file with mode: 0755]
webapp-common/listview.cpp [new file with mode: 0755]
webapp-common/listview.h [new file with mode: 0755]
webapp-common/mainview.cpp [new file with mode: 0755]
webapp-common/mainview.h [new file with mode: 0755]
webapp-common/popup.cpp [new file with mode: 0644]
webapp-common/popup.h [new file with mode: 0644]
webapp-common/ug.cpp [new file with mode: 0755]
webapp-common/util.h [new file with mode: 0755]
webapp-common/view.cpp [new file with mode: 0644]
webapp-common/view.h [new file with mode: 0644]
webapp-common/whitelistview.cpp [new file with mode: 0644]
webapp-common/whitelistview.h [new file with mode: 0644]
webapp-common/whiteuriview.cpp [new file with mode: 0644]
webapp-common/whiteuriview.h [new file with mode: 0644]
webapp-detail/CMakeLists.txt [new file with mode: 0755]
webapp-detail/advancedview.cpp [new file with mode: 0644]
webapp-detail/advancedview.h [new file with mode: 0644]
webapp-detail/detailview.cpp [new file with mode: 0644]
webapp-detail/detailview.h [new file with mode: 0755]
webapp-detail/edc/CMakeLists.txt [new file with mode: 0644]
webapp-detail/edc/defs.h [new file with mode: 0644]
webapp-detail/edc/main.edc [new file with mode: 0644]
webapp-detail/exceptionsview.cpp [new file with mode: 0644]
webapp-detail/exceptionsview.h [new file with mode: 0644]
webapp-detail/feature.h [new file with mode: 0755]
webapp-detail/mainview.cpp [new file with mode: 0755]
webapp-detail/mainview.h [new file with mode: 0644]
webapp-detail/permview.cpp [new file with mode: 0755]
webapp-detail/permview.h [new file with mode: 0644]
webapp-detail/tizen_feature.cpp [new file with mode: 0644]
webapp-detail/tizen_feature.h [new file with mode: 0644]
webapp-detail/ug.cpp [new file with mode: 0644]
webapp-detail/util.h [new file with mode: 0755]
webapp-detail/view.cpp [new file with mode: 0644]
webapp-detail/view.h [new file with mode: 0644]
webapp-detail/wac_feature.cpp [new file with mode: 0755]
webapp-detail/wac_feature.h [new file with mode: 0644]
wrt-setting.manifest [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..fee0d2a
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# Copyright 2012  Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://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.
+#
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+INCLUDE(FindPkgConfig)
+ADD_DEFINITIONS("-std=c++0x")
+ADD_SUBDIRECTORY(webapp-common)
+ADD_SUBDIRECTORY(webapp-detail)
+ADD_SUBDIRECTORY(po)
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALE_DIR}\"")
diff --git a/LICENSE b/LICENSE
new file mode 100755 (executable)
index 0000000..cc8727b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,75 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies with the standards set forth in the Compatibility Definition Document and passes the Compatibility Test Suite as defined from time to time by the Tizen Technical Steering Group and certified by the Tizen Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work solely as incorporated into a Tizen Certified Platform, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work solely as incorporated into a Tizen Certified Platform to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof pursuant to the copyright license above, in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license/
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..57b2a41
--- /dev/null
@@ -0,0 +1,246 @@
+wrt-setting (0.0.28) unstable; urgency=low
+
+  * Fix of license display in wrong language
+  * Open Domain setting menu
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Tue, 15 Jan 2013 15:01:39 +0900
+
+wrt-setting (0.0.27) unstable; urgency=low
+
+  * Prevent Issue
+
+ -- kyungeun <lke01.lee@samusung.com>  Tue, 08 Jan 2013 13:52:12 +0900
+
+wrt-setting (0.0.26) unstable; urgency=low
+
+  * Apply vconf key path builder
+  * Add developer options menu
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.26
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Wed, 02 Jan 2013 14:52:53 +0900
+
+wrt-setting (0.0.25) unstable; urgency=low
+
+  * Open "Advanced Settings" menu
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.25
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Fri, 28 Dec 2012 17:30:14 +0900
+
+wrt-setting (0.0.24) unstable; urgency=low
+
+  * Advanced Setting menu style Change box to genlist
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.24
+
+ -- leerang <leerang.song@samsung.com>  Wed, 26 Dec 2012 13:18:16 +0900
+
+wrt-setting (0.0.23) unstable; urgency=low
+
+  * Change string to STMS
+  * More detail menu style Change box to genlist
+  * Remove es_US.po and add es_MX.po
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.23
+
+-- leerang <leerang.song@samsung.com>  Tue, 18 Dec 2012 17:03:52 +0900
+
+wrt-setting (0.0.22) unstable; urgency=low
+
+  * Delete auto save ID/password menu in More detail
+  * Fixed build break
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.22
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Mon, 10 Dec 2012 13:46:36 +0900
+
+wrt-setting (0.0.21) unstable; urgency=low
+
+  * Two Indicator Issue 
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.21
+
+ -- kyungeun <lke01.lee@samsung.com>  Mon, 26 Nov 2012 21:12:26 +0900
+
+wrt-setting (0.0.20) unstable; urgency=low
+
+  * Implement Security Settings menu
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.20
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Fri, 23 Nov 2012 10:39:13 +0900
+
+wrt-setting (0.0.19) unstable; urgency=low
+
+   * popup for cookie sharing menu
+
+   * Git : apps/home/wrt-setting
+   * Tag : wrt-setting_0.0.19
+
+ -- kyungeun <lke01.lee@samsung.com>  Thu, 22 Nov 2012 19:26:12 +0900
+
+wrt-setting (0.0.18) unstable; urgency=low
+
+   * Change string to STMS
+   * entry selector & popup issue
+   * The lib & rsc pathes has been changed
+   * Icon and String path has been changed
+   * Security header has been changed
+   * Add po file and po file list in CmakeList.txt
+
+   * Git : apps/home/wrt-setting
+   * Tag : wrt-setting_0.0.18
+
+ -- leerang <leerang.song@samsung.com>  Fri, 16 Nov 2012 21:26:25 +0900
+
+wrt-setting (0.0.15) unstable; urgency=low
+
+  * Add std DEFINITIONS
+
+ * Git : apps/home/wrt-setting
+ * Tag : wrt-setting_0.0.15
+
+ -- Leerang Song <leerang.song@samsung.com>  Thu, 18 Oct 2012 15:51:52 +0900
+
+wrt-setting (0.0.14) unstable; urgency=low
+
+  * Add license installing
+
+  * Git : apps/home/wrt-setting
+  * Tag : wrt-setting_0.0.14
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Fri, 12 Oct 2012 08:22:47 +0900
+
+wrt-setting (0.0.13) unstable; urgency=low
+
+  * Genlist style set for space between header and option
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.13
+
+ -- SongERang <leerang.song@samsung.com>  Mon, 08 Oct 2012 09:38:40 +0900
+
+wrt-setting (0.0.12) unstable; urgency=low
+
+  * Adjusted spec and CMake to new dependencies
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.12
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Wed, 26 Sep 2012 20:22:04 +0900
+
+wrt-setting (0.0.11) unstable; urgency=low
+
+  * Genlist style set for webapplication list menu
+  * Add smack manifest
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.11
+
+
+ -- Soyoung Kim <sy037.kim@samsung.com>  Thu, 20 Sep 2012 20:15:47 +0900
+
+wrt-setting (0.0.10) unstable; urgency=low
+
+  * genlist style set for webapplication list menu
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.10
+
+ -- Leerang Song <leerang.song@samsung.com>  Tue, 07 Aug 2012 17:34:00 +0900
+
+wrt-setting (0.0.9) unstable; urgency=low
+
+  * All the things related with webkit1 is deleted
+  * As UI-GADGET-1 Change, API getting pkgname change from bundle_get_val
+  * it enalbes cookie sharing menu
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.9
+
+ -- Leerang.song  <leerang.song@samsung.com>  Mon, 06 Aug 2012 15:32:28 +0900
+
+wrt-setting (0.0.8) unstable; urgency=low
+
+  * API related UG change to Managed API
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.8
+
+ -- Leerang Song <leerang.song@samsung.com>  Wed, 18 Jul 2012 19:20:30 +0900
+
+wrt-setting (0.0.7) unstable; urgency=low
+
+  * Compiler flags change instead of LDFLAGS
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.7
+
+ -- Leerang Song <leerang.song@samsung.com>  Wed, 18 Jul 2012 09:42:20 +0900
+
+wrt-setting (0.0.6) unstable; urgency=low
+
+  * add linker option for deleting Debug & Symbol information
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.6
+
+ -- Leerang Song <leerang.song@samsung.com>  Mon, 16 Jul 2012 16:58:59 +0900
+
+wrt-setting (0.0.5) unstable; urgency=low
+
+  * Fixed build error in OBS
+  * adding menu for Save login ID/PWD & clear data in detail setting UG
+  * Boilerplate is updated
+  * Remove WK1
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.5
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Tue, 19 Jun 2012 09:58:53 +0900
+
+wrt-setting (0.0.4) unstable; urgency=low
+
+  * Boilerplate is updated
+  * Added a license information item into More details
+  * add Web Application menu
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.4
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Thu, 24 May 2012 18:47:01 +0900
+
+wrt-setting (0.0.3) unstable; urgency=low
+
+  * fix build error relating with APP_TYPE_WAC10
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.3
+
+ -- kyungeun <lke01.lee@samsung.com>  Fri, 04 May 2012 14:13:26 +0900
+
+wrt-setting (0.0.2) unstable; urgency=low
+
+  * add menu for changing webkitmode
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.2
+
+ -- Jihoon Chung <jihoon.chung@samsung.com>  Thu, 26 Apr 2012 23:05:32 +0900
+
+wrt-setting (0.0.1) unstable; urgency=low
+
+  * Initial draft
+
+  * Git : slp/pkgs/w/wrt-setting
+  * Tag : wrt-setting_0.0.1
+
+ -- Wonguk Jeong <wonguk.jeong@samsung.com>  Fri, 16 Mar 2012 14:27:00 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..bbf9912
--- /dev/null
@@ -0,0 +1,18 @@
+Source: wrt-setting
+Section: devel
+Priority: extra
+Maintainer: Kyungeun Lee <lke01.lee@samsung.com>, Wonguk Jeong <wonguk.jeong@samsung.com>
+Build-Depends: debhelper (>= 5), libelm-dev, libelm-webview-dev, libecore-dev, libeina-dev, libui-gadget-dev, wrt-commons-dev (>= 0.2.25), wrt-security-dev (>=0.0.16)
+Standards-Version: 3.9.2
+
+Package: wrt-setting
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Setting UI Gadgets of WRT
+
+Package: wrt-setting-dbg
+Architecture: any
+Section: debug
+Depends: ${shlibs:Depends}, ${misc:Depends}, wrt-setting (= ${Source-Version})
+Description: Setting UI Gadgets of WRT (debug symbols)
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..c5a5b2e
--- /dev/null
@@ -0,0 +1,91 @@
+#!/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
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+PACKAGE_VERSION ?= $(shell dpkg-parsechangelog | sed -n 's/^Version: // p')
+PACKAGE_API_VERSION ?= $(firstword $(subst ., ,$(PACKAGE_VERSION)))
+
+PREFIX ?= /usr
+DATADIR ?= /opt
+LDFLAGS += --Wl,--rpath=$(PREFIX)/lib --Wl,--as-needed
+CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
+
+configure-stamp:
+       dh_testdir
+       mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \
+       CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
+       cmake ${SRCDIR}                                                                 \
+               -DCMAKE_INSTALL_PREFIX="${PREFIX}"                                      \
+               -DUG_INSTALL_PREFIX="${DATADIR}"                                        \
+               -DPROJECT_API_VERSION="$(PACKAGE_API_VERSION)"\
+               -DPROJECT_VERSION="${PACKAGE_VERSION}" .. && \
+       touch $@
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+       cd $(CMAKE_BUILD_DIR) && $(MAKE) -j4
+       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
+       rm -rf $(CMAKE_BUILD_DIR)
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+       dh_clean
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs
+       cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+       dh_installman
+       dh_link
+       dh_strip --dbg-package=wrt-setting-dbg
+       dh_compress
+       dh_fixperms
+       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
diff --git a/debian/wrt-setting.install.in b/debian/wrt-setting.install.in
new file mode 100644 (file)
index 0000000..60afb69
--- /dev/null
@@ -0,0 +1 @@
+/opt/ug/*
diff --git a/packaging/wrt-setting.spec b/packaging/wrt-setting.spec
new file mode 100644 (file)
index 0000000..32d924e
--- /dev/null
@@ -0,0 +1,48 @@
+Name: wrt-setting
+Version: 0.0.28
+Release: 1
+Summary: WRT Setting UI Gadgets
+Group:   Development/Libraries
+License: Flora Software License
+Source0: %{name}-%{version}.tar.gz
+
+BuildRequires: edje-bin
+BuildRequires: cmake
+BuildRequires: gettext
+BuildRequires: edje-tools
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(dpl-wrt-dao-ro)
+BuildRequires: pkgconfig(dpl-wrt-dao-rw)
+BuildRequires: pkgconfig(security)
+BuildRequires: pkgconfig(security-dao-rw)
+BuildRequires: pkgconfig(dpl-efl)
+
+%description
+WRT Setting UI Gadgets
+
+%prep
+%setup -q
+%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DUG_INSTALL_PREFIX=/opt -DPROJECT_API_VERSION=0 -DPROJECT_VERSION=%{version}
+
+%build
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE  %{buildroot}/usr/share/license/%{name}
+%make_install
+
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%manifest wrt-setting.manifest
+%defattr(-,root,root,-)
+%{_datadir}/license/%{name}
+/opt/ug/*
+#/usr/ug/lib/*
+/usr/ug/res/*
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..dc0af60
--- /dev/null
@@ -0,0 +1,30 @@
+# for i18n
+SET(POFILES hy.po az.po eu.po bg.po ca.po zh_CN.po zh_HK.po
+cs.po da.po nl_NL.po en.po en_US.po et.po fi.po fr_FR.po gl.po hr.po
+ka.po de_DE.po el_GR.po hu.po is.po ga.po it_IT.po ja_JP.po kk.po
+ko_KR.po lv.po lt.po mk.po nb.po pl.po pt_PT.po pt_BR.po ro.po
+ru_RU.po sr.po sk.po sl.po es_ES.po es_MX.po sv.po tr_TR.po uk.po
+uz.po ar.po zh_SG.po hi.po en_PH.po fr_CA.po zh_TW.po)
+
+SET(PROJECT_NAME "ug-webapp-common-efl")
+SET(LOCALE_DIR "/usr/ug/res/locale/")
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+    SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+    MESSAGE("PO: ${pofile}")
+    GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+    GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+
+    SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+    ADD_CUSTOM_COMMAND( OUTPUT ${moFile}
+        COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+        DEPENDS ${absPofile} )
+    INSTALL(FILES ${moFile}
+        DESTINATION ${LOCALE_DIR}/${lang}/LC_MESSAGES
+        RENAME  ${PROJECT_NAME}.mo)
+SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/po/ar.po b/po/ar.po
new file mode 100755 (executable)
index 0000000..f5a2f52
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,30 @@
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "مزيد من التفاصيل"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "معلومات الترخيص"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "الوصول إلى نظام الملفات"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "إعدادات الاستثناء"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "إعدادات الاستثناء"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "لا توجد بيانات استثناء"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "هل تريد مسح بيانات التطبيق؟"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "عرض"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "مشاركة ملفات تعريف الارتباط"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "مشاركة ملفات تعريف الارتباط بين تطبيقات الويب"
+
diff --git a/po/az.po b/po/az.po
new file mode 100755 (executable)
index 0000000..8753f1f
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,30 @@
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Əlavə təfərrüatlar"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lisenziya məlumatı"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Fayl sisteminə giriş"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "İstisna parametrləri"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "İstisna parametrləri"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "İstisna məlumatlar yoxdur"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Veb proqram məlumatları silinsin?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Bax"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Kuki paylaşması"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Veb-proqramlar arasında kukiləri paylaş"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100755 (executable)
index 0000000..7f96894
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,30 @@
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Още подробности"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Данни за лиценз"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Достъп до файлова система"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Настройки за изключения"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Настройки за изключения"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Няма данни за изключения"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Изчистване на данните за уеб приложения?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Преглед"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Споделяне на бисквитка"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Споделяне на бисквитки между уеб приложения"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100755 (executable)
index 0000000..ba13b8c
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,30 @@
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Més detalls"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informació de llicència"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Accedir al sistema de fitxers"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ajustaments d'excepcions"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ajustaments d'excepcions"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No hi ha dades d'excepcions"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Esborrar dades d'aplicacions web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Veure"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Ús compartit de cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Compartir galetes entre aplicacions web"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100755 (executable)
index 0000000..9bb9ba0
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,30 @@
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Další detaily"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informace o licenci"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Otevřít systém souborů"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Nastavení výjimek"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Nastavení výjimek"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Žádné výjimky"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Smazat data webové aplikace?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Zobrazit"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Sdílení cookies"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Sdílet cookies mezi webovými aplikacemi"
+
diff --git a/po/da.po b/po/da.po
new file mode 100755 (executable)
index 0000000..936b53e
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sikkerhed"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Avancerede indstillinger"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Flere oplysninger"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automatisk lagring af id/adgangskode"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Tøm data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Ingen undtagelsesdata"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Ryd webappdata?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Vis"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licensinformationer"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Gå til filsystem"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Undtagelsesindstillinger"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Undtagelsesindstillinger"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie-deling"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Del cookies mellem web-programmer"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100755 (executable)
index 0000000..240770c
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sicherheit"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Weitere Einstellungen"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mehr Details"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ID/Passwort automatisch speichern"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Daten löschen"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Keine Ausnahmedaten"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Web-App-Daten löschen?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ansicht"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lizenzinformationen"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Auf Dateisystem zugreifen"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ausnahmeeinstellungen"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ausnahmeeinstellungen"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie-Freigabe"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Cookies zwischen Web Apps freigeben"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100755 (executable)
index 0000000..8290ec3
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Ασφάλεια"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Σύνθετες ρυθμίσεις"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Περισσότερες λεπτομέρειες"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Έκδοση"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Αυτόματη αποθήκευση αναγνωριστικού/κωδικού πρόσβασης"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Διαγραφή δεδομένων"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Δεν υπάρχουν δεδομένα εξαίρεσης"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Εκκαθάριση δεδομένων εφαρμογής web;"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Προβ."
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Πληροφορίες άδειας χρήσης"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Πρόσβαση στο σύστημα αρχείων"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ρυθμίσεις εξαιρέσεων"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ρυθμίσεις εξαιρέσεων"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Κοινή χρήση cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Κοινή χρήση cookies μεταξύ εφαρμογών web"
+
diff --git a/po/en.po b/po/en.po
new file mode 100755 (executable)
index 0000000..a039107
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Security"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Advanced settings"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "More details"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Auto save ID/password"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Clear data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No exception data"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Clear web app data?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "View"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licence information"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Access file system"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie sharing"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Share cookies between web apps"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100755 (executable)
index 0000000..a039107
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Security"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Advanced settings"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "More details"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Auto save ID/password"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Clear data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No exception data"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Clear web app data?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "View"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licence information"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Access file system"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie sharing"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Share cookies between web apps"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100755 (executable)
index 0000000..11effaa
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Security"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Advanced settings"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "More details"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Auto save ID/password"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Clear data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No exception data"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Clear web app data?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "View"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "License information"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Access file system."
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Exception settings"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie sharing"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Share cookies between web apps"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100755 (executable)
index 0000000..bfdb03d
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Seguridad"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Ajustes avanzados"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Más detalles"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versión"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Guardar automáticamente ID/contraseña"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Borrar datos"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No hay datos de excepciones"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "¿Borrar datos de aplicaciones web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ver"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Información de licencia"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Acceder a sistema de archivos"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ajustes de excepciones"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ajustes de excepciones"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Uso compartido de cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Compartir cookies entre aplicaciones web"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100755 (executable)
index 0000000..b8b0aef
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Seguridad"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Configuración avanzada"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Más detalles"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versión"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Guardar automáticamente ID/contraseña"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Eliminar datos"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "No hay datos de excepciones"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "¿Borrar los datos de la aplicación web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ver"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Información de licencia"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Acceder al archivo de sistema"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Configuración de excepciones"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Configuración de excepciones"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Compartir cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Compartir cookies entre aplicaciones Web"
+
diff --git a/po/et.po b/po/et.po
new file mode 100755 (executable)
index 0000000..ec503e5
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Turvalisus"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Täpsemad seaded"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Rohkem üksikasju"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versioon"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Tunnuse/parooli automaatne salvestamine"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Kustuta andmed"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Tõrke andmed puuduvad"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Kas tühjendada veebirakenduse andmed?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Kuva"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Litsentsi teave"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Juurdepääs failisüsteemile"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Tõrke seaded"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Tõrke seaded"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Küpsise jagamine"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Jagage küpsiseid veebirakenduste vahel"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100755 (executable)
index 0000000..fa38563
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Segurtasuna"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Ezarpen aurreratuak"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Zehaztasun gehiago"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Bertsioa"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automatikoki gordetzeko ID/pasahitza"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Garbitu datuak"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Ez dago salbuespen daturik"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Garbitu web aplikazio datuak?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ikusi"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lizentziari buruzko informazioa"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Sartu fitxategien sistemara"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Salbuespen ezarpenak"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Salbuespen ezarpenak"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie partekatzea"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Partekatu aplikazio web orrien arteko cookieak"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100755 (executable)
index 0000000..d086297
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Turvallisuus"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Lisäasetukset"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Lisätietoja"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versio"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Tallenna tunnus/salasana automaattisesti"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Poista tiedot"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Poikkeustietoja ei ole"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Poistetaanko verkkosovelluksen tiedot?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Näytä"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lisenssitiedot"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Käytä tiedostojärjestelmää"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Poikkeusasetukset"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Poikkeusasetukset"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Evästeiden jako"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Jaa evästeitä sovellusten välillä"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100755 (executable)
index 0000000..8eefe5b
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sécurité"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Paramètres avancés"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Plus de détails"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Enregistrer automatiquement ID/mot de passe"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Effacer les données"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Aucune donnée d'exception"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Effacer les données de l'application Web ?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Affichage"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Infos licences"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Accéder au système de fichiers"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Paramètres d'exception"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Paramètres d'exception"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Partage des témoins"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Partager les cookies entre les applications Web"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..2f32058
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sécurité"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Paramètres avancés"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Plus de détails"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Enregistrer automatiquement ID/mot de passe"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Supprimer les données"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Aucune donnée d'exception"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Effacer les données de l'application Web ?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Affichage"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Infos licences"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Accéder au système de fichiers"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Paramètres d'exception"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Paramètres d'exception"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Partage de cookies"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Partager les cookies entre les applications Web"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100755 (executable)
index 0000000..cfd8481
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Slándáil"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Ardsocruithe"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Tuilleadh sonraí"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Leagan"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Uathshábháil ID/pasfhocal"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Glan sonraí"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Níl sonraí eisceachta ann"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Glan sonraí an fheidhmchláir ghréasáin?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Amharc"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Faisnéis faoin gceadúnas"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Rochtain ar an gcóras comhad"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Socruithe eisceachta"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Socruithe eisceachta"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Comhroinnt fianán"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Comhroinn fianáin idir feidhmchláir Ghréasáin"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100755 (executable)
index 0000000..9d7a3ee
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Seguridade"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Axustes avanzados"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Máis detalles"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versión"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Gardar ID/contrasinal automaticamente"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Borrar datos"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Non hai datos de excepcións"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Desexas borrar os datos da aplicación web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Vista"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Información sobre a licenza"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Acceder ao sistema de arquivos"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Axustes de excepción"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Axustes de excepción"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Uso compartido de cookies"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Compartir cookies entre aplicacións web"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100755 (executable)
index 0000000..b75f92d
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "सुरक्षा"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "उन्नत सेटिंग्स"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "अधिक विवरण"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "संस्करण"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ऑटो सेव ID/पासवर्ड"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "डेटा साफ़ करें"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "कोई अपवाद डाटा नहीं"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "वेब ऐप डाटा साफ़ करें?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "देखें"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "लायसेंस जानकारी"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "फ़ाइल सिस्टम ऍक्सेस करें"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "अपवाद सेटिंग्स"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "अपवाद सेटिंग्स"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "कुकीज़ साझाकरण"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "वेब ऐप्स के मध्‍य कुकीज़ साझा करें"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100755 (executable)
index 0000000..b3cc1a8
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sigurnost"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Dodatne postavke"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Više detalja"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Verzija"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Auto. spremanje kor. imena/šifre"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Obriši podatke"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nema podataka o iznimkama"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Obrisati podatke o internet aplikacijama?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Prikaz"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Podaci o licenci"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Pristup sustavu datoteka"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Postavke iznimki"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Postavke iznimki"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Dijeljenje kolačića"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Dijeli kolačiće među web aplikacijama"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100755 (executable)
index 0000000..6528de5
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Biztonság"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Speciális beállítások"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "További részletek"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Verzió"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automatikus mentés azonosítója/jelszava"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Adatok törlése"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nincsenek kivételadatok"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Törli a webalkalmazás adatait?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Megjelenítés"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licencinformációk"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Fájlrendszer elérése"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Kivételek beállítása"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Kivételek beállítása"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie-megosztás"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Cookie-k megosztása a webalkalmazások között"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100755 (executable)
index 0000000..caa81d8
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Անվտանգություն"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Լրացուցիչ կայանքներ"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Այլ մանրամասներ"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Տարբերակ"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ՆՀ/գաղտնաբառի ինքնաբերական պահպանում"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Ջնջել տվյալները"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Բացառության տվյալներ չկան"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Ջնջե՞լ համացանցային ծրագրի տվյալները:"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Դիտել"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Տեղեկություններ արտոնագրի մասին"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Մուտք գործել ֆայլային համակարգ"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Բացառության դրվածքներ"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Բացառության դրվածքներ"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Թխուկների համօգտագործում"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Փոխանակել թխուկներ համացանցային ծրագրերի միջև"
+
diff --git a/po/is.po b/po/is.po
new file mode 100755 (executable)
index 0000000..bfe8907
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Öryggi"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Frekari stillingar"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Frekari upplýsingar"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Útgáfa"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Sjálfvirk vistun auðkennis eða lykilorðs"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Hreinsa gögn"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Engin undantekningagögn"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Hreinsa gögn vefforrits?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Skoða"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Leyfisupplýsingar"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Aðgangur að skráakerfi"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Stillingar undantekninga"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Stillingar undantekninga"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Deiling fótspora"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Deila fótsporum milli vefforrita"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100755 (executable)
index 0000000..7c2fd20
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sicurezza"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Impostazioni avanzate"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Altri dettagli"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versione"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Salva ID/password"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Cancella dati"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nessun dato eccezioni"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Cancellare i dati applicazione?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Visualizzazione"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informazioni sulla licenza"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Accedi al file system"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Impostazioni eccezione"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Impostazioni eccezione"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Condivisione cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Condividi cookie tra le applicazioni Web"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..ac80f11
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "セキュリティ"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "詳細設定"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "注意事項の詳細"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "バージョン"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ID/​パスワード​の​自動​保存"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "データを消去"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "例外データはありません。"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Webアプリのデータを消去しますか?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "表示"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "ライセンス情報"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "ファイルシステムにアクセス"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookieの共有"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Webアプリ間でCookieを共有"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100755 (executable)
index 0000000..3ac878b
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "უსაფრთხოება"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "დამატებითი პარამეტრები"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "სხვა დეტალები"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "ვერსია"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ID/პაროლის ავტომატური შენახვა"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "მონაცემების გასუფთავება"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "გამორიცხვის პარამეტრები არ არის"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "წაშლით ვებ-აპლიკაციის მონაცემებს?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "ნახვა"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "ლიცენზიის ინფორმაცია"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "ფაილების სისტემის გახსნა"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "გამორიცხვის პარამეტრები"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "გამორიცხვის პარამეტრები"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "ქუქი-ფაილების გაზიარება"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "ქუქი-ფაილების გაზიარება ვებ-პროგრამებს შორის"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100755 (executable)
index 0000000..92e8685
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Қауіпсіздік"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Қосымша қондырғылар"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Қосымша мәліметтер"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Нұсқа"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Автоматты сақтау идентификаторы/құпиясөз"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Деректерді өшіру"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Ерекше жағдай деректері жоқ"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Веб-бағдарлама деректерін өшіру керек пе?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Көру"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Лицензия туралы ақпарат"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Файлдық жүйеге қатынасу"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ерекше жағдай параметрлері"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ерекше жағдай параметрлері"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie бөлісу"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Веб-бағдарламалар арасында cookies файлдарымен бөлісу"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..c271406
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "보안"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "고급 설정"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "자세히 보기"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "버전"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ID/비밀번호 자동 저장"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "데이터 삭제"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "예외 데이터 없음"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "웹 애플리케이션 데이터를 삭제할까요?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "보기"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "라이선스 정보"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "파일 시스템에 액세스"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "예외 설정"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "예외 설정"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "쿠기 공유"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "웹 애플리케이션간에 쿠키 공유"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100755 (executable)
index 0000000..cba7817
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sauga"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Papildomi nustatymai"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Daugiau informacijos"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versija"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automatiškai išsaugoti ID / slaptažodį"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Valyti duomenis"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Išimties duomenų nėra"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Išvalyti žiniatinklio programos duomenis?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Peržiūrėti"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licencijos informacija"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Prisijungti prie failų sistemos"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Išimties nustatymai"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Išimties nustatymai"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Slapukų bendrinimas"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Bendrinti slapukus tarp žiniatinklio programų"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100755 (executable)
index 0000000..11408f9
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Drošība"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Papildu iestatījumi"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Papildinformācija"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versija"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automātiskās saglabāšanas ID/parole"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Notīrīt datus"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nav izņēmumu datu"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Vai notīrīt tīmekļa programmas datus?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Skatīt"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licences informācija"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Piekļūt failu sistēmai"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Izņēmumu iestatījumi"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Izņēmumu iestatījumi"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Sīkfailu kopīgošana"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Kopīgot sīkfailus starp tīmekļa programmām"
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100755 (executable)
index 0000000..72a84d4
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Сигурност"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Напредни опции"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Повеќе детали"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Верзија"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Автоматски сочувај ID/лозинка"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Избриши податоци"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Нема податоци за исклучок"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Да се избришат податоците за веб-апликацијата?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Преглед"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Информации за лиценцата"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Пристапувај до системот на фајлови"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Поставки за исклучок"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Поставки за исклучок"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Делење колачиња"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Дели колачиња меѓу веб-апликации"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100755 (executable)
index 0000000..e6180a4
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Sikkerhet"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Avanserte innstillinger"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Flere detaljer"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versjon"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Autolagre brukernavn/passord"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Tøm data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Ingen unntaksdata"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Fjerne data for nettprogrammet?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Vis"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lisensinformasjon"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Åpne filsystemet"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Unntaksinnstillinger"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Unntaksinnstillinger"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Deling av informasjonskapsel"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Del informasjonskapsler mellom webprogrammer"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..99fdc94
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Beveiliging"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Geavanceerde instellingen"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Meer details"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versie"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Gebruikersnaam/wachtwoord automatisch opslaan"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Gegevens wissen"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Geen uitzonderingsgegevens"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Webapplicatiegegevens wissen?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Beeld"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licentiegegevens"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Bestandssysteem openen"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Uitzonderingsinstellingen"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Uitzonderingsinstellingen"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie delen"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Cookies delen tussen webapps"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100755 (executable)
index 0000000..c7e9cb7
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Bezpieczeństwo"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Ustawienia zaawansowane"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Więcej szczegółów"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Wersja"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Autom. zapisuj id/hasło"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Wyczyść dane"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Brak danych wyjątku"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Wyczyścić dane aplikacji internetowej?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Wyświetl"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informacje o licencji"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Dostęp do systemu plików"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Ustawienia wyjątków"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Ustawienia wyjątków"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Udostępnianie pliku cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Udostępniaj pliki cookie pomiędzy aplikacjami internetowymi"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100755 (executable)
index 0000000..bcfd591
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Segurança"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Config. avançadas"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mais detalhes"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versão"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Salvar auto. ID de usuário/senha"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Limpar dados"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nenhum dado de exceção"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Apagar dados do aplicativo web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Exibir"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informações da licença"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Acessar sistema de arquivos"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Configurações de exceção"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Configurações de exceção"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Compartilhamento de cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Compartilhar cookies entre apps da web"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..db261e0
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Segurança"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Definições avançadas"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mais detalhes"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versão"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Gravação automática de ID/palavra-passe"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Limpar dados"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Sem dados de excepção"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Limpar dados de aplicação da Web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ver"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informações da licença"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Aceder a sistema de ficheiros"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Definições de excepção"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Definições de excepção"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Partilha de cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Partilhar cookies entre aplicações web"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100755 (executable)
index 0000000..925f71b
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Securitate"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Setări complexe"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mai multe detalii"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versiune"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Salvare automată ID/parolă"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Ştergere date"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nicio dată privind excepţia"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Ştergeţi datele aplicaţiei web?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Vizualizare"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informaţii despre licenţă"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Acces sistem de fişiere"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Setări excepţie"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Setări excepţie"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Partajare cookie-uri"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Se partajează cookie-urile între aplicaţii web"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..e6a1082
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Безопасность"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Дополнительно"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Дополнительно"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Версия"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Автоматическое сохранение идентификатора и пароля"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Удаление данных"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Нет данных исключений"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Очистить данные веб-приложений?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Вид"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Информация о лицензии"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Получать доступ к файловой системе"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Параметры исключений"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Параметры исключений"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Обмен cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Обмен cookie между веб-приложениями"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100755 (executable)
index 0000000..d26255b
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Zabezpečenie"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Pokročilé nastavenia"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Ďalšie podrobnosti"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Verzia"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automaticky uložiť meno/heslo"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Vymazať údaje"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Žiadne údaje o výnimkách"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Vymazať údaje webovej aplikácie?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Zobraziť"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licenčné informácie"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Prístup do systému súborov"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Nastavenia výnimiek"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Nastavenia výnimiek"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Zdieľanie súborov cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Zdieľať súbory cookie medzi webovými aplikáciami"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100755 (executable)
index 0000000..f0abbff
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Varnost"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Napredne nastavitve"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Več podrobnosti"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Različica"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Samodejno shrani ID/geslo"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Počisti podatke"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Ni podatkov o izjemah"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Želite počistiti podatke spletne aplikacije?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Prikaz"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Podatki o licenci"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Dostop do datotečnega sistema"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Nastavitve izjem"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Nastavitve izjem"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Skupna raba piškotka"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Skupna raba piškotkov med spletnimi programi"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100755 (executable)
index 0000000..c4dccc6
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Bezbednost"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Napredna podešavanja"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Više informacija"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Verzija"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Automatsko memorisanje korisničkog imena/šifre"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Obriši podatke"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Nema podataka o izuzecima"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Obrisati podatke o web aplikaciji?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Prikaži"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Informacije o licenci"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Pristup sistemu fajlova"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Podešavanja izuzetaka"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Podešavanja izuzetaka"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Deljenje kolačića"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Deli kolačiće između web aplikacija"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100755 (executable)
index 0000000..09abe9c
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Säkerhet"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Avancerade inställningar"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mer information"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Version"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Spara ID/lösenord automatiskt"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Rensa data"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Inga undantagsdata"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Rensa webbprogramdata?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Visa"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Licensinformation"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Åtkomst till filsystem"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Undantagsinställningar"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Undantagsinställningar"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie-delning"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Dela cookies mellan webbprogram"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..a875c48
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Güvenlik"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Gelişmiş ayarlar"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Daha fazla ayrıntı"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Sürüm"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "ID/parolayı otomatik kaydet"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Veriyi sil"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "İstisna verileri yok"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Web uygulama verileri silinsin mi?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Göster"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Lisans bilgileri"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Dosya sistemine eriş"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "İstisna ayarları"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "İstisna ayarları"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Çerez paylaşımı"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Çerezleri web uygulamaları arasında paylaş"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100755 (executable)
index 0000000..9f6d7ff
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Безпека"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Додаткові установки"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Додаткові деталі"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Версія"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Автозбереження імені користувача/пароля"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Очистити дані"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Немає даних щодо винятків"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Очистити дані веб-програми?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Переглянути"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Ліцензійні відомості"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Доступ до файлової системи"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Установки винятків"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Установки винятків"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Спільний доступ до cookie"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Спільний доступ до cookies для Інтернет-програм"
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100755 (executable)
index 0000000..f628fa6
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "Xavfsizlik"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "Takomillashgan parametrlar"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Ko‘proq tafsilotlar"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "Versiya"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "Identifikator/parolni avtomatik saqlash"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "Ma’lumotni o'chirish"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "Istisno parametrlari ma’lumoti yo‘q"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "Veb-ilova ma’lumoti o‘chirilsinmi?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "Ko‘rib chiqish"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "Litsenziya ma’lumoti"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "Fayl tizimiga kirish"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "Istisno parametrlari"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "Istisno parametrlari"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie ulashish"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "Veb-ilovalar o‘rtasidagi cookie-fayllarni ulashing"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..3db9926
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "安全"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "高级设定"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多详情"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "版本"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "自动储存ID和密码"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "清除数据"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "无例外数据"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "是否清除网络应用程序数据?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "查看"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "许可信息"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "访问文件系统"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "例外设置"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "例外设置"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie 共享"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "在网络应用程序之间共享 cookies"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..ba3215d
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "安全性"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "進階設定"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多詳情"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "版本"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "自動儲存ID /密碼"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "清除數據"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "無例外數據"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "清除網絡應用程式數據嗎?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "檢視"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "許可資訊"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "存取檔案系統"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie 分享"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "在網頁應用程式中分享 cookie"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100755 (executable)
index 0000000..84fc0e3
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "安全设定"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "高级设定"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多详情"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "版本"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "自动储存ID和密码"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "清除数据"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "无例外数据"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "是否清除网络应用程序数据?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "查看"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "许可信息"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "访问文件系统"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "例外设置"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "例外设置"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie 共享"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "在网络应用程序之间共享 cookies"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..28733b6
--- /dev/null
@@ -0,0 +1,48 @@
+msgid "IDS_ST_BODY_SECURITY"
+msgstr "安全性"
+
+msgid "IDS_ST_HEADER_ADVANCED_SETTINGS"
+msgstr "進階設定"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多詳細資料"
+
+msgid "IDS_ST_BODY_DOMAIN_SECURITY_STATUS"
+msgstr "Domain security status"
+
+msgid "IDS_ST_BODY_VERSION"
+msgstr "版本"
+
+msgid "IDS_ST_BODY_AUTO_SAVE_ID_PASSWORD"
+msgstr "自動儲存ID /密碼"
+
+msgid "IDS_ST_BODY_CLEAR_DATA"
+msgstr "清除資料"
+
+msgid "IDS_WRT_MBODY_NO_EXCEPTION_DATA"
+msgstr "無例外資料"
+
+msgid "IDS_WRT_POP_CLEAR_WEB_APP_DATA_Q"
+msgstr "清除網路應用程式資料嗎?"
+
+msgid "IDS_WRT_BODY_VIEW_M_MODE"
+msgstr "檢視"
+
+msgid "IDS_WRT_BODY_LICENCE_INFORMATION"
+msgstr "授權資訊"
+
+msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
+msgstr "存取檔案系統"
+
+msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_WRT_HEADER_EXCEPTION_SETTINGS"
+msgstr "例外設定"
+
+msgid "IDS_ST_BODY_COOKIE_SHARING"
+msgstr "Cookie 分享"
+
+msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
+msgstr "在網頁應用程式中分享 cookie"
+
diff --git a/webapp-common/CMakeLists.txt b/webapp-common/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..3201a43
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# Copyright 2012  Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+SET(TARGET_UG_LIB "ug-webapp-common-efl")
+SET(TARGET_UG_EDJ "webapp-common.edj")
+SET(UGDIR "${UG_INSTALL_PREFIX}/ug/lib")
+SET(ICONDIR "${UG_INSTALL_PREFIX}/ug/res/images/${TARGET_UG_LIB}")
+SET(EDJDIR "${UG_INSTALL_PREFIX}/ug/res/edje/${TARGET_UG_LIB}")
+
+PKG_CHECK_MODULES(UG_WEB_APP_COMMON_DEPS
+    ecore
+    elementary
+    ui-gadget-1
+    dpl-efl
+    dpl-wrt-dao-rw
+    dpl-wrt-dao-ro
+    REQUIRED)
+
+SET(UG_SOURCES
+    ug.cpp
+    view.cpp
+    popup.cpp
+    mainview.cpp
+    listview.cpp
+    whitelistview.cpp
+    whiteuriview.cpp
+)
+
+INCLUDE_DIRECTORIES(${UG_WEB_APP_COMMON_DEPS_INCLUDE_DIRS})
+ADD_LIBRARY(${TARGET_UG_LIB} SHARED ${UG_SOURCES})
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJFILE=\"${EDJDIR}/${TARGET_UG_EDJ}\"")
+
+SET_TARGET_PROPERTIES(${TARGET_UG_LIB} PROPERTIES SOVERSION ${PROJECT_API_VERSION})
+SET_TARGET_PROPERTIES(${TARGET_UG_LIB} PROPERTIES VERSION ${PROJECT_VERSION})
+TARGET_LINK_LIBRARIES(${TARGET_UG_LIB} ${UG_WEB_APP_COMMON_DEPS_LDFLAGS})
+INSTALL(TARGETS ${TARGET_UG_LIB} DESTINATION ${UGDIR})
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/ DESTINATION ${ICONDIR} FILES_MATCHING PATTERN "*.png")
+
+ADD_SUBDIRECTORY(edc)
diff --git a/webapp-common/edc/CMakeLists.txt b/webapp-common/edc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a56c330
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# Copyright 2012  Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://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.
+#
+
+ADD_CUSTOM_TARGET(${TARGET_UG_EDJ}
+               COMMAND edje_cc
+               ${CMAKE_CURRENT_SOURCE_DIR}/main.edc ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ}
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/main.edc
+)
+ADD_DEPENDENCIES(${TARGET_UG_LIB} ${TARGET_UG_EDJ})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ} DESTINATION ${EDJDIR})
diff --git a/webapp-common/edc/defs.h b/webapp-common/edc/defs.h
new file mode 100644 (file)
index 0000000..f633ee9
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_COMMON_EDC_DEFS_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_EDC_DEFS_H_
+
+#define GRP_CONTENT "content"
+#define PART_NOCONTENT "swallow.nocontent"
+#define PART_CONTENT "swallow.content"
+#define SIG_SHOW_NOCONTENT "show,nocontent"
+#define SIG_SHOW_CONTENT "show,content"
+#define SRC_PROG "prog"
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_EDC_DEFS_H_ */
diff --git a/webapp-common/edc/main.edc b/webapp-common/edc/main.edc
new file mode 100644 (file)
index 0000000..2613678
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include "defs.h"
+
+collections {
+       group {
+               name, GRP_CONTENT;
+
+               parts {
+                       part {
+                               name, PART_CONTENT;
+                               type, SWALLOW;
+                               description {
+                                       state, "default" 0.0;
+                               }
+                               description {
+                                       state, "nocontent" 0.0;
+                                       inherit, "default" 0.0;
+                                       rel1.relative, -1.0 0.0;
+                                       rel2.relative, 0.0 1.0;
+                               }
+                       }
+
+                       part {
+                               name, PART_NOCONTENT;
+                               type, SWALLOW;
+                               description {
+                                       state, "default" 0.0;
+                                       rel1.relative, 1.0 0.0;
+                                       rel2.relative, 2.0 1.0;
+                               }
+                               description {
+                                       state, "nocontent" 0.0;
+                                       inherit, "default" 0.0;
+                                       rel1.relative, 0.0 0.0;
+                                       rel2.relative, 1.0 1.0;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name, "show_nocontent";
+                               signal, SIG_SHOW_NOCONTENT;
+                               source, SRC_PROG;
+                               action, STATE_SET "nocontent" 0.0;
+                               target, PART_CONTENT;
+                               target, PART_NOCONTENT;
+                       }
+                       program {
+                               name, "show_content";
+                               signal, SIG_SHOW_CONTENT;
+                               source, SRC_PROG;
+                               action, STATE_SET "default" 0.0;
+                               target, PART_CONTENT;
+                               target, PART_NOCONTENT;
+                       }
+               }
+       }
+}
diff --git a/webapp-common/icons.h b/webapp-common/icons.h
new file mode 100644 (file)
index 0000000..4826f00
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_COMMON_ICONS_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_ICONS_H_
+
+#define ICON_EDIT ICONDIR"/01_controlbar_icon_edit.png"
+#define ICON_SAVE ICONDIR"/01_controlbar_icon_save.png"
+#define ICON_DELETE ICONDIR"/01_controlbar_icon_delete.png"
+#define ICON_ADD ICONDIR"/01_controlbar_icon_create.png"
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_ICONS_H_ */
diff --git a/webapp-common/icons/01_controlbar_icon_create.png b/webapp-common/icons/01_controlbar_icon_create.png
new file mode 100644 (file)
index 0000000..0dc1144
Binary files /dev/null and b/webapp-common/icons/01_controlbar_icon_create.png differ
diff --git a/webapp-common/icons/01_controlbar_icon_delete.png b/webapp-common/icons/01_controlbar_icon_delete.png
new file mode 100644 (file)
index 0000000..faaa0d3
Binary files /dev/null and b/webapp-common/icons/01_controlbar_icon_delete.png differ
diff --git a/webapp-common/icons/01_controlbar_icon_edit.png b/webapp-common/icons/01_controlbar_icon_edit.png
new file mode 100644 (file)
index 0000000..4ddc598
Binary files /dev/null and b/webapp-common/icons/01_controlbar_icon_edit.png differ
diff --git a/webapp-common/icons/01_controlbar_icon_save.png b/webapp-common/icons/01_controlbar_icon_save.png
new file mode 100644 (file)
index 0000000..f8a9278
Binary files /dev/null and b/webapp-common/icons/01_controlbar_icon_save.png differ
diff --git a/webapp-common/icons/WebApplication.png b/webapp-common/icons/WebApplication.png
new file mode 100755 (executable)
index 0000000..ca51b7b
Binary files /dev/null and b/webapp-common/icons/WebApplication.png differ
diff --git a/webapp-common/listview.cpp b/webapp-common/listview.cpp
new file mode 100755 (executable)
index 0000000..b8d10e0
--- /dev/null
@@ -0,0 +1,1045 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+
+#include <dpl/wrt-dao-ro/global_dao_read_only.h>
+#include <dpl/wrt-dao-rw/global_dao.h>
+#include <dpl/assert.h>
+
+#include "listview.h"
+#include "icons.h"
+
+
+#define LOG_TAG "WRT-SETTING"
+#include <dlog.h>
+
+namespace WebAppCommonSetting {
+const char * const COOKIE_SHARING = "IDS_ST_BODY_COOKIE_SHARING";
+const char * const SHARE_COOKIES_BETWEEN_WEB_APPS =
+    "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS";
+const char * const MOFILE_INSTALL_DIR =
+    "/usr/ug/res/locale";
+
+char *ListView::getWacTitle(void */*data*/,
+                            Evas_Object */*obj*/,
+                            const char */*part*/)
+{
+    return strdup("WAC");
+}
+
+char *ListView::getWhiteListTitle(void */*data*/,
+                                  Evas_Object */*obj*/,
+                                  const char */*part*/)
+{
+    return strdup("White list");
+}
+
+char *ListView::getText(void *data,
+                        Evas_Object */*obj*/,
+                        const char *part)
+{
+    OnOffData *onOffData;
+    const char *str;
+
+    onOffData = static_cast<OnOffData *>(data);
+    Assert(onOffData);
+
+    if (!strcmp(part, "elm.text"))
+        str = onOffData->m_title.c_str();
+    else if (!strcmp(part, "elm.text.1"))
+        str = onOffData->m_title.c_str();
+    else {
+        return NULL;
+    }
+    return strdup(str);
+}
+
+Evas_Object *ListView::getOnOffIcon(void *data,
+                                    Evas_Object *obj,
+                                    const char */*part*/)
+{
+    OnOffData *onOffData;
+    Evas_Object *chk;
+    bool val;
+
+    onOffData = static_cast<OnOffData *>(data);
+    Assert(onOffData);
+
+    chk = elm_check_add(obj);
+    if (!chk)
+        return NULL;
+    evas_object_propagate_events_set(chk, EINA_TRUE);
+    elm_object_style_set(chk, "on&off");
+    val = onOffData->m_getOnOffVal();
+    elm_check_state_set(chk, static_cast<Eina_Bool>(val));
+    onOffData->m_chk = chk;
+    evas_object_smart_callback_add(chk,
+                                   "changed",
+                                   onOffData->m_changedCb,
+                                   data);
+
+    return chk;
+}
+
+void ListView::delOnOffData(void *data, Evas_Object */*obj*/)
+{
+    OnOffData *onOffData;
+
+    onOffData = static_cast<OnOffData *>(data);
+    delete onOffData;
+}
+
+char *ListView::getRoamingLabel(void *data,
+                                Evas_Object */*obj*/,
+                                const char *part)
+{
+    const char *str;
+    RoamingData *roamingData;
+
+    roamingData = static_cast<RoamingData *>(data);
+    Assert(roamingData);
+
+    if (!strcmp(part, "elm.text.1")) {
+        str = "Data roaming";
+    } else if (!strcmp(part, "elm.text.2")) {
+        switch (WrtDB::GlobalDAOReadOnly::GetRoamingDataUsage()) {
+        case WrtDB::GlobalDAOReadOnly::NEVER_CONNECT:
+            str = "Never connect";
+            break;
+        case WrtDB::GlobalDAOReadOnly::ALWAYS_ASK:
+            str = "Always ask";
+            break;
+        case WrtDB::GlobalDAOReadOnly::CONNECT_AUTOMATICALLY:
+            str = "Connect automatically";
+            break;
+        default:
+            str = NULL;
+            break;
+        }
+    } else {
+        str = NULL;
+    }
+
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+void ListView::delRoamingData(void *data, Evas_Object */*obj*/)
+{
+    RoamingData *roamingData;
+
+    roamingData = static_cast<RoamingData *>(data);
+    delete roamingData;
+}
+
+char *ListView::getRoamingOptLabel(void *data,
+                                   Evas_Object */*obj*/,
+                                   const char */*part*/)
+{
+    const char *str;
+    RoamingExpandData *roamingExpandData;
+
+    roamingExpandData = static_cast<RoamingExpandData *>(data);
+    Assert(roamingExpandData);
+
+    switch (roamingExpandData->m_mode) {
+    case WrtDB::GlobalDAOReadOnly::NEVER_CONNECT:
+        str = "Never connect";
+        break;
+    case WrtDB::GlobalDAOReadOnly::ALWAYS_ASK:
+        str = "Always ask";
+        break;
+    case WrtDB::GlobalDAOReadOnly::CONNECT_AUTOMATICALLY:
+        str = "Connect automatically";
+        break;
+    default:
+        str = NULL;
+        break;
+    }
+
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+Evas_Object *ListView::getRoamingOptRadio(void *data,
+                                          Evas_Object *obj,
+                                          const char */*part*/)
+{
+    Evas_Object *radio;
+    RoamingExpandData *roamingExpandData;
+    int mode;
+
+    roamingExpandData = static_cast<RoamingExpandData *>(data);
+    Assert(roamingExpandData);
+    mode = WrtDB::GlobalDAOReadOnly::GetRoamingDataUsage();
+    radio = elm_radio_add(obj);
+    if (!radio)
+        return NULL;
+    elm_radio_state_value_set(radio, roamingExpandData->m_mode);
+    elm_radio_group_add(radio, roamingExpandData->m_rg);
+    if (mode == roamingExpandData->m_mode)
+        elm_radio_value_set(radio, mode);
+
+    return radio;
+}
+
+void ListView::delRoamingExpandData(void *data, Evas_Object */*obj*/)
+{
+    RoamingExpandData *roamingExpandData;
+
+    roamingExpandData = static_cast<RoamingExpandData *>(data);
+    delete roamingExpandData;
+}
+
+char *ListView::getComplianceModeTitle(void */*data*/,
+                                       Evas_Object */*obj*/,
+                                       const char *part)
+{
+    const char *str;
+
+    if (!strcmp(part, "elm.text.1"))
+        str = "Compliance mode";
+    else if (!strcmp(part, "elm.text.2"))
+        str = "Enable compliance mode";
+    else
+        str = NULL;
+
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+Evas_Object *ListView::getComplianceModeIcon(void *data,
+                                    Evas_Object *obj,
+                                    const char */*part*/)
+{
+    Evas_Object *chk;
+    ComplianceModeData *compModeData;
+    bool val;
+
+    compModeData = static_cast<ComplianceModeData *>(data);
+    Assert(compModeData);
+
+    chk = elm_check_add(obj);
+    if (!chk)
+        return NULL;
+    evas_object_propagate_events_set(chk, EINA_FALSE);
+    elm_object_style_set(chk, "on&off");
+    val = WrtDB::GlobalDAOReadOnly::getComplianceMode();
+    elm_check_state_set(chk, static_cast<Eina_Bool>(val));
+    compModeData->m_chk = chk;
+    evas_object_smart_callback_add(chk,
+                                   "changed",
+                                   onComplianceModeChanged,
+                                   data);
+
+    return chk;
+}
+
+void ListView::delComlianceModeData(void *data, Evas_Object */*obj*/)
+{
+    ComplianceModeData *compModeData;
+
+    compModeData = static_cast<ComplianceModeData *>(data);
+    delete compModeData;
+}
+
+Evas_Object *ListView::getComplianceModeOptEntry(void *data,
+                                                 Evas_Object *obj,
+                                                 const char */*part*/)
+{
+    int opt;
+    Evas_Object *ef;
+    Evas_Object *entry;
+    std::string val;
+
+    opt = reinterpret_cast<int>(data);
+
+    ef = elm_layout_add(obj);
+    if (!ef)
+        return NULL;
+    elm_layout_theme_set(ef, "layout", "editfield", "title");
+
+    entry = elm_entry_add(ef);
+    if (!entry) {
+        evas_object_del(ef);
+        return NULL;
+    }
+    evas_object_data_set(entry, "editfield", static_cast<void *>(ef));
+    elm_entry_single_line_set(entry, EINA_TRUE);
+    elm_object_part_content_set(ef, "elm.swallow.content", entry);
+
+    switch (opt) {
+    case COMPLIANCE_OPT_IMEI:
+        elm_object_part_text_set(ef, "elm.text", "IMEI");
+        elm_object_part_text_set(ef, "elm.guidetext", "Put fake IMEI");
+        val = WrtDB::GlobalDAOReadOnly::getComplianceFakeImei();
+        break;
+    case COMPLIANCE_OPT_MEID:
+        elm_object_part_text_set(ef, "elm.text", "MEID");
+        elm_object_part_text_set(ef, "elm.guidetext", "Put fake MEID");
+        val = WrtDB::GlobalDAOReadOnly::getComplianceFakeMeid();
+        break;
+    default:
+        evas_object_del(ef);
+        return NULL;
+    }
+
+    if (!val.empty()) {
+        elm_entry_entry_set(entry, val.c_str());
+        elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
+    }
+
+    elm_object_signal_callback_add(ef,
+                                   "elm,eraser,clicked",
+                                   "elm",
+                                   onComplianceModeOptErase,
+                                   static_cast<void *>(entry));
+    evas_object_smart_callback_add(entry,
+                                   "focused",
+                                   onComplianceModeOptFocused,
+                                   static_cast<void *>(ef));
+    evas_object_smart_callback_add(entry,
+                                   "unfocused",
+                                   onComplianceModeOptUnfocused,
+                                   static_cast<void *>(ef));
+    /* FIXME: The callback is invoked unexpectedly. Why? DO report to EFL team */
+    evas_object_smart_callback_add(entry,
+                                   "changed",
+                                   onComplianceModeOptChanged,
+                                   data);
+
+    return ef;
+}
+
+void ListView::onBackBtnClicked(void *data,
+                                Evas_Object */*obj*/,
+                                void */*event_info*/)
+{
+    ListView *listView;
+
+    listView = static_cast<ListView *>(data);
+    Assert(listView);
+    listView->invokeUnloadCb();
+}
+
+void ListView::onOnOffItemClicked(void *data,
+                                  Evas_Object */*obj*/,
+                                  void *event_info)
+{
+    Elm_Object_Item *it;
+    OnOffData *onOffData;
+
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    onOffData = static_cast<OnOffData *>(data);
+    evas_object_smart_callback_call(onOffData->m_chk, "changed", NULL);
+}
+
+void ListView::onCookieSharingPopupOk(void *data,
+                                      Evas_Object */*obj*/,
+                                      void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && listView);
+
+    WrtDB::GlobalDAO::SetCookieSharingMode(TRUE);
+
+    elm_check_state_set(onOffData->m_chk, EINA_TRUE);
+    listView->hidePopup();
+}
+
+void ListView::onCookieSharingPopupCancel(void *data,
+                                          Evas_Object */*obj*/,
+                                          void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && listView);
+
+    WrtDB::GlobalDAO::SetCookieSharingMode(FALSE);
+    elm_check_state_set(onOffData->m_chk, EINA_FALSE);
+    listView->hidePopup();
+}
+
+void ListView::onCookieSharingChanged(void *data,
+                                      Evas_Object */*obj*/,
+                                      void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+    bool state;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && onOffData->m_chk && listView);
+
+    state = elm_check_state_get(onOffData->m_chk);
+
+    if (!state) {
+        WrtDB::GlobalDAO::SetCookieSharingMode(TRUE);
+        elm_check_state_set(onOffData->m_chk, EINA_TRUE);
+    } else {
+        WrtDB::GlobalDAO::SetCookieSharingMode(FALSE);
+        elm_check_state_set(onOffData->m_chk, FALSE);
+    }
+}
+
+void ListView::onUntrustedAppApprovalPopupOk(void *data,
+                                             Evas_Object */*obj*/,
+                                             void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && listView);
+
+    WrtDB::GlobalDAO::SetSecureByDefault(true);
+    elm_check_state_set(onOffData->m_chk, EINA_TRUE);
+    listView->hidePopup();
+}
+
+void ListView::onUntrustedAppApprovalPopupCancel(void *data,
+                                                 Evas_Object */*obj*/,
+                                                 void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && listView);
+
+    elm_check_state_set(onOffData->m_chk, EINA_FALSE);
+    listView->hidePopup();
+}
+
+void ListView::onUntrustedAppApprovalChanged(void *data,
+                                             Evas_Object */*obj*/,
+                                             void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+    bool state;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && onOffData->m_chk && listView);
+
+    state = WrtDB::GlobalDAOReadOnly::GetSecureByDefault();
+    if (!state) {
+        if (!listView->showPopup("Do you really want to allow "
+                                 "untrusted applications?",
+                                 onUntrustedAppApprovalPopupOk,
+                                 onUntrustedAppApprovalPopupCancel,
+                                 static_cast<void *>(onOffData)))
+            return;
+    } else {
+        WrtDB::GlobalDAO::SetSecureByDefault(false);
+    }
+    elm_check_state_set(onOffData->m_chk, !state);
+}
+
+void ListView::onRoamingClicked(void *data,
+                                Evas_Object *obj,
+                                void *event_info)
+{
+    Elm_Object_Item *it;
+    Eina_Bool expanded;
+    RoamingData *roamingData;
+    ListView *listView;
+
+    it = static_cast<Elm_Object_Item *>(event_info);
+    roamingData = static_cast<RoamingData *>(data);
+    listView = roamingData->m_listView;
+    Assert(it && roamingData && listView);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    expanded = elm_genlist_item_expanded_get(it);
+    elm_genlist_item_expanded_set(it, !expanded);
+    if (expanded)
+        elm_genlist_item_subitems_clear(it);
+    else
+        listView->addRoamingOpts(obj, it);
+}
+
+void ListView::onRoamingOptClicked(void *data,
+                                   Evas_Object *obj,
+                                   void *event_info)
+{
+    RoamingExpandData *roamingExpandData;
+    Elm_Object_Item *it;
+
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+
+    roamingExpandData = static_cast<RoamingExpandData *>(data);
+    Assert(roamingExpandData);
+    WrtDB::GlobalDAO::SetRoamingDataUsage(roamingExpandData->m_mode);
+    elm_genlist_realized_items_update(obj);
+}
+
+void ListView::onWhiteListClicked(void *data,
+                                  Evas_Object */*obj*/,
+                                  void *event_info)
+{
+    Elm_Object_Item *it;
+    ListView *listView;
+
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+
+    listView = static_cast<ListView *>(data);
+    Assert(listView);
+    listView->loadWhiteListView();
+
+}
+
+void ListView::onDevModeChanged(void *data,
+                                Evas_Object */*obj*/,
+                                void */*event_info*/)
+{
+    OnOffData *onOffData;
+    ListView *listView;
+    Eina_Bool state;
+
+    onOffData = static_cast<OnOffData *>(data);
+    listView = onOffData->m_listView;
+    Assert(onOffData && onOffData->m_chk && listView);
+
+    state = WrtDB::GlobalDAOReadOnly::GetDeveloperMode();
+    WrtDB::GlobalDAO::SetDeveloperMode(!state);
+    elm_check_state_set(onOffData->m_chk, !state);
+}
+
+void ListView::onComplianceModeClicked(void *data,
+                                       Evas_Object */*obj*/,
+                                       void *event_info)
+{
+    Elm_Object_Item *it;
+    ComplianceModeData *compModeData;
+
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    compModeData = static_cast<ComplianceModeData *>(data);
+    evas_object_smart_callback_call(compModeData->m_chk, "changed", NULL);
+}
+
+void ListView::onComplianceModeChanged(void *data,
+                                       Evas_Object */*obj*/,
+                                       void */*event_info*/)
+{
+    ComplianceModeData *compModeData;
+    ListView *listView;
+    Eina_Bool state;
+
+    compModeData = static_cast<ComplianceModeData *>(data);
+    listView = compModeData->m_listView;
+    Assert(compModeData && compModeData->m_chk && listView);
+
+    state = WrtDB::GlobalDAOReadOnly::getComplianceMode();
+    WrtDB::GlobalDAO::setComplianceMode(!state);
+    if (!state)
+        listView->addComplianceModeOpts(compModeData->m_gl, compModeData->m_it);
+    else
+        elm_genlist_item_subitems_clear(compModeData->m_it);
+    elm_check_state_set(compModeData->m_chk, !state);
+}
+
+void ListView::onComplianceModeOptErase(void *data,
+                                        Evas_Object */*obj*/,
+                                        const char */*emission*/,
+                                        const char */*source*/)
+{
+    Evas_Object *entry;
+
+    entry = static_cast<Evas_Object *>(data);
+    Assert(entry);
+    elm_entry_entry_set(entry, "");
+}
+
+void ListView::onComplianceModeOptFocused(void *data,
+                                          Evas_Object *obj,
+                                          void */*event_info*/)
+{
+    Evas_Object *ef;
+
+    Assert(obj);
+    ef = static_cast<Evas_Object *>(data);
+    Assert(ef);
+
+    if (!elm_entry_is_empty(obj))
+        elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
+    elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
+}
+
+void ListView::onComplianceModeOptUnfocused(void *data,
+                                            Evas_Object *obj,
+                                            void */*event_info*/)
+{
+    Evas_Object *ef;
+
+    Assert(obj);
+    ef = static_cast<Evas_Object *>(data);
+    Assert(ef);
+
+    if (elm_entry_is_empty(obj))
+        elm_object_signal_emit(ef, "elm,state,guidetext,show", "elm");
+    elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
+}
+
+void ListView::onComplianceModeOptChanged(void *data,
+                                          Evas_Object *obj,
+                                          void */*event_info*/)
+{
+    int opt;
+    std::string val;
+    const char *str;
+    Evas_Object *ef;
+
+    Assert(obj);
+    opt = reinterpret_cast<int>(data);
+    if (!elm_object_focus_get(obj))
+        return;
+
+    ef = static_cast<Evas_Object *>(evas_object_data_get(obj, "editfield"));
+    Assert(ef);
+
+    str = elm_entry_entry_get(obj);
+    if (str) {
+        elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
+        val.assign(str);
+    } else {
+        elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
+    }
+
+    switch (opt) {
+    case COMPLIANCE_OPT_IMEI:
+        WrtDB::GlobalDAO::setComplianceFakeImei(val);
+        break;
+    case COMPLIANCE_OPT_MEID:
+        WrtDB::GlobalDAO::setComplianceFakeMeid(val);
+        break;
+    default:
+        return;
+    }
+}
+
+void ListView::onWhiteListViewUnload(void *data)
+{
+    ListView *listView;
+
+    listView = static_cast<ListView *>(data);
+    Assert(listView);
+    listView->delWhiteListView();
+}
+
+bool ListView::getCookieSharingVal(void)
+{
+   LOGD("%s",  __FUNCTION__);
+   return WrtDB::GlobalDAOReadOnly::GetCookieSharingMode();
+}
+
+bool ListView::getUntrustedAppApprovalVal(void)
+{
+    return WrtDB::GlobalDAOReadOnly::GetSecureByDefault();
+}
+
+bool ListView::getDevModeVal(void)
+{
+    return WrtDB::GlobalDAOReadOnly::GetDeveloperMode();
+}
+
+bool ListView::getComplianceModeVal(void)
+{
+    return WrtDB::GlobalDAOReadOnly::getComplianceMode();
+}
+
+void ListView::addWacTitle(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    itc.item_style = "dialogue/title";
+    itc.func.text_get = getWacTitle;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    elm_genlist_item_append(gl,
+                            &itc,
+                            NULL,
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+}
+
+void ListView::addWhiteList(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    try {
+        itc.item_style = "dialogue/1text";
+        itc.func.text_get = getWhiteListTitle;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+        elm_genlist_item_append(gl,
+                                &itc,
+                                NULL,
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                onWhiteListClicked,
+                                this);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void ListView::addOnOffItem(Evas_Object *gl,
+                            const char *title,
+                            GetOnOffVal getOnOffVal,
+                            Evas_Smart_Cb changedCb)
+{
+    OnOffData *onOffData;
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    try {
+        onOffData = new OnOffData(this,
+                                  title,
+                                  getOnOffVal,
+                                  changedCb);
+        itc.item_style = "dialogue/1text.1icon";
+        itc.func.text_get = getText;
+        itc.func.content_get = getOnOffIcon;
+        itc.func.state_get = NULL;
+        itc.func.del = delOnOffData;
+        if (!elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(onOffData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     onOnOffItemClicked,
+                                     static_cast<void *>(onOffData)))
+            delete onOffData;
+    } catch (const std::bad_alloc &) {
+    }
+}
+void ListView::addDesc(Evas_Object *gl,
+                       const char *title)
+{
+    OnOffData *onOffData;
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    try {
+        onOffData = new OnOffData(this,
+                                  title,
+                                  NULL,
+                                  NULL);
+        itc.item_style = "multiline/1text";
+        itc.func.text_get = getText;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = delOnOffData;
+        elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
+        if (!elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(onOffData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     NULL,
+                                     static_cast<void *>(onOffData)))
+            delete onOffData;
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void ListView::addDepth(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    Assert(gl);
+
+    try {
+        itc.item_style = "dialogue/separator/21/with_line";
+        itc.func.text_get = NULL;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+        it = elm_genlist_item_append(gl,
+                                &itc,
+                                NULL,
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                NULL,
+                                NULL);
+        elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+void ListView::addRoamingItem(Evas_Object *gl)
+{
+    Evas_Object *rg;
+    RoamingData *roamingData;
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    rg = elm_radio_add(gl);
+    if (!rg)
+        return;
+
+    try {
+        roamingData = new RoamingData(rg, this);
+        itc.item_style = "dialogue/2text.3/expandable";
+        itc.func.text_get = getRoamingLabel;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = delRoamingData;
+        if (!elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(roamingData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_TREE,
+                                     onRoamingClicked,
+                                     static_cast<void *>(roamingData)))
+            delete roamingData;
+    } catch (const std::bad_alloc &) {
+        evas_object_del(rg);
+    }
+}
+
+void ListView::addRoamingOpts(Evas_Object *obj, Elm_Object_Item *it)
+{
+    static Elm_Genlist_Item_Class itc;
+    RoamingData *roamingData;
+    RoamingExpandData *roamingExpandData;
+    unsigned int i;
+    WrtDB::GlobalDAOReadOnly::NetworkAccessMode mode[] = {
+        WrtDB::GlobalDAOReadOnly::NEVER_CONNECT,
+        WrtDB::GlobalDAOReadOnly::ALWAYS_ASK,
+        WrtDB::GlobalDAOReadOnly::CONNECT_AUTOMATICALLY,
+    };
+
+    Assert(obj && it);
+
+    roamingData = static_cast<RoamingData *>(elm_object_item_data_get(it));
+    itc.item_style = "dialogue/1text.1icon.2/expandable2";
+    itc.func.text_get = getRoamingOptLabel;
+    itc.func.content_get = getRoamingOptRadio;
+    itc.func.state_get = NULL;
+    itc.func.del = delRoamingExpandData;
+    for (i = 0; i < sizeof(mode) / sizeof(*mode); i++) {
+        try {
+            roamingExpandData = new RoamingExpandData(mode[i], roamingData->m_rg);
+            if (!elm_genlist_item_append(
+                        obj,
+                        &itc,
+                        static_cast<void *>(roamingExpandData),
+                        it,
+                        ELM_GENLIST_ITEM_NONE,
+                        onRoamingOptClicked,
+                        static_cast<void *>(roamingExpandData)))
+                delete roamingExpandData;
+        } catch (const std::bad_alloc &) {
+        }
+    }
+}
+
+void ListView::addComplianceModeItem(Evas_Object *gl)
+{
+    Elm_Object_Item *it;
+    ComplianceModeData *compModeData;
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+
+    try {
+        compModeData = new ComplianceModeData(this, gl);
+        itc.item_style = "dialogue/2text.1icon.6";
+        itc.func.text_get = getComplianceModeTitle;
+        itc.func.content_get = getComplianceModeIcon;
+        itc.func.state_get = NULL;
+        itc.func.del = delComlianceModeData;
+        it = elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(compModeData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     onComplianceModeClicked,
+                                     static_cast<void *>(compModeData));
+        if (!it) {
+            delete compModeData;
+            return;
+        }
+
+        if (WrtDB::GlobalDAOReadOnly::getComplianceMode())
+            addComplianceModeOpts(gl, it);
+
+        compModeData->m_it = it;
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void ListView::addComplianceModeOpts(Evas_Object *obj, Elm_Object_Item *it)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *optIt;
+    unsigned int i;
+    ComplianceOpt opt[] = {
+        COMPLIANCE_OPT_IMEI,
+        COMPLIANCE_OPT_MEID,
+    };
+
+    Assert(obj && it);
+
+    itc.item_style = "dialogue/1icon";
+    itc.func.text_get = NULL;
+    itc.func.content_get = getComplianceModeOptEntry;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    for (i = 0; i < sizeof(opt) / sizeof(*opt); i++) {
+        optIt = elm_genlist_item_append(obj,
+                                        &itc,
+                                        reinterpret_cast<void *>(opt[i]),
+                                        it,
+                                        ELM_GENLIST_ITEM_NONE,
+                                        NULL,
+                                        NULL);
+        if (optIt)
+            elm_genlist_item_select_mode_set(optIt, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    }
+
+}
+
+bool ListView::loadView(void)
+{
+    Evas_Object *win;
+
+    Assert(m_naviFrame);
+    resetBase();
+    win = static_cast<Evas_Object *>(ug_get_window());
+    Assert(win);
+
+    m_gl = elm_genlist_add(m_naviFrame);
+    if (!m_gl) {
+        evas_object_del(m_naviFrame);
+        return false;
+    }
+    bindtextdomain("ug-webapp-common-efl",
+        MOFILE_INSTALL_DIR);
+    elm_object_style_set(m_gl, "dialogue");
+    addDepth(m_gl);
+    addOnOffItem(m_gl,
+                dgettext("ug-webapp-common-efl", COOKIE_SHARING),
+                getCookieSharingVal,
+                onCookieSharingChanged);
+    addDesc(m_gl,
+            dgettext("ug-webapp-common-efl",
+                SHARE_COOKIES_BETWEEN_WEB_APPS));
+    pushToNaviFrame();
+
+    return true;
+}
+
+bool ListView::pushToNaviFrame(void)
+{
+    Evas_Object *btn;
+
+    Assert(m_naviFrame);
+    btn = elm_button_add(m_naviFrame);
+    if (!btn)
+        return false;
+
+    elm_object_style_set(btn, "naviframe/end_btn/default");
+    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
+    elm_naviframe_item_push(m_naviFrame,
+                            "Web applications",
+                            btn,
+                            NULL,
+                            m_gl,
+                            NULL);
+
+    return true;
+}
+
+void ListView::loadWhiteListView(void)
+{
+    Assert(m_naviFrame);
+
+    try {
+        m_whiteListView.Reset(new WhiteListView(m_naviFrame));
+        if (!m_whiteListView->loadView()) {
+            m_whiteListView.Reset();
+            return;
+        }
+        m_whiteListView->setUnloadCb(onWhiteListViewUnload, this);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+bool ListView::showPopup(const char *desc,
+                         Evas_Smart_Cb ok_cb,
+                         Evas_Smart_Cb cancel_cb,
+                         void *data)
+{
+    return m_popup.showPopup(desc, ok_cb, cancel_cb, data);
+}
+
+void ListView::hidePopup(void)
+{
+    m_popup.hidePopup();
+}
+
+ListView::ListView(Evas_Object *naviFrame) :
+    m_naviFrame(naviFrame)
+{
+    m_whiteListView.Reset();
+}
+
+ListView::~ListView(void)
+{
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/listview.h b/webapp-common/listview.h
new file mode 100755 (executable)
index 0000000..6510567
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_COMMON_LISTVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_LISTVIEW_H_
+
+#include <Elementary.h>
+
+#include <dpl/wrt-dao-ro/global_dao_read_only.h>
+#include <dpl/scoped_ptr.h>
+#include <string>
+
+#include "whitelistview.h"
+#include "popup.h"
+#include "view.h"
+
+namespace WebAppCommonSetting {
+
+typedef bool (*GetOnOffVal)(void);
+
+class ListView : public View
+{
+    Evas_Object *m_naviFrame;
+    Evas_Object *m_gl;
+    Popup m_popup;
+    DPL::ScopedPtr<WhiteListView> m_whiteListView;
+
+    /* Genlist Item Callbacks */
+    static char *getWacTitle(void *data,
+                             Evas_Object *obj,
+                             const char *part);
+    static char *getWhiteListTitle(void *data,
+                                   Evas_Object *obj,
+                                   const char *part);
+    static char *getText(void *data,
+                               Evas_Object *obj,
+                               const char *part);
+    static Evas_Object *getOnOffIcon(void *data,
+                                     Evas_Object *obj,
+                                     const char *part);
+    static void delOnOffData(void *data, Evas_Object *obj);
+    static char *getRoamingLabel(void *data,
+                                 Evas_Object *obj,
+                                 const char *part);
+    static void delRoamingData(void *data, Evas_Object *obj);
+    static char *getRoamingOptLabel(void *data,
+                                    Evas_Object *obj,
+                                    const char *part);
+    static Evas_Object *getRoamingOptRadio(void *data,
+                                           Evas_Object *obj,
+                                           const char *part);
+    static void delRoamingExpandData(void *data, Evas_Object *obj);
+    static char *getComplianceModeTitle(void *data,
+                                        Evas_Object *obj,
+                                        const char *part);
+    static Evas_Object *getComplianceModeIcon(void *data,
+                                              Evas_Object *obj,
+                                              const char *part);
+    static void delComlianceModeData(void *data, Evas_Object *obj);
+    static Evas_Object *getComplianceModeOptEntry(void *data,
+                                                  Evas_Object *obj,
+                                                  const char *part);
+
+    /* Smart Callbacks */
+    static void onBackBtnClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onOnOffItemClicked(void *data,
+                                   Evas_Object *obj,
+                                   void *event_info);
+    static void onCookieSharingPopupOk(void *data,
+                                       Evas_Object *obj,
+                                       void *event_info);
+    static void onCookieSharingPopupCancel(void *data,
+                                           Evas_Object *obj,
+                                           void *event_info);
+    static void onCookieSharingChanged(void *data,
+                                       Evas_Object *obj,
+                                       void *event_info);
+    static void onUntrustedAppApprovalPopupOk(void *data,
+                                              Evas_Object *obj,
+                                              void *event_info);
+    static void onUntrustedAppApprovalPopupCancel(void *data,
+                                                  Evas_Object *obj,
+                                                  void *event_info);
+    static void onUntrustedAppApprovalChanged(void *data,
+                                              Evas_Object *obj,
+                                              void *event_info);
+    static void onRoamingClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onRoamingOptClicked(void *data,
+                                    Evas_Object *obj,
+                                    void *event_info);
+    static void onWhiteListClicked(void *data,
+                                   Evas_Object *obj,
+                                   void *event_info);
+    static void onDevModeChanged(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onComplianceModeClicked(void *data,
+                                        Evas_Object *obj,
+                                        void *event_info);
+    static void onComplianceModeChanged(void *data,
+                                        Evas_Object *obj,
+                                        void *event_info);
+    static void onComplianceModeOptErase(void *data,
+                                         Evas_Object *obj,
+                                         const char *emission,
+                                         const char *source);
+    static void onComplianceModeOptFocused(void *data,
+                                           Evas_Object *obj,
+                                           void *event_info);
+    static void onComplianceModeOptUnfocused(void *data,
+                                             Evas_Object *obj,
+                                             void *event_info);
+    static void onComplianceModeOptChanged(void *data,
+                                           Evas_Object *obj,
+                                           void *event_info);
+
+    /* Subview Unload callback */
+    static void onWhiteListViewUnload(void *data);
+
+    /* Utility methods */
+    static bool getCookieSharingVal(void);
+    static bool getUntrustedAppApprovalVal(void);
+    static bool getDevModeVal(void);
+    static bool getComplianceModeVal(void);
+    void addWacTitle(Evas_Object *gl);
+    void addWhiteList(Evas_Object *gl);
+    void addOnOffItem(Evas_Object *gl,
+                      const char *title,
+                      GetOnOffVal getOnOffVal,
+                      Evas_Smart_Cb cb);
+    void addDesc(Evas_Object *gl, const char *title);
+    void addDepth(Evas_Object *gl);
+    void addRoamingItem(Evas_Object *gl);
+    void addRoamingOpts(Evas_Object *obj, Elm_Object_Item *it);
+    enum ComplianceOpt {
+        COMPLIANCE_OPT_IMEI = 0x00,
+        COMPLIANCE_OPT_MEID,
+    };
+    void addComplianceModeItem(Evas_Object *gl);
+    void addComplianceModeOpts(Evas_Object *obj, Elm_Object_Item *it);
+
+  public:
+    ListView(Evas_Object *naviFrame);
+    ~ListView(void);
+
+    bool loadView(void);
+    bool pushToNaviFrame(void);
+    void loadWhiteListView(void);
+    void delWhiteListView(void) { m_whiteListView.Reset(); }
+    bool showPopup(const char *desc,
+                   Evas_Smart_Cb ok_cb,
+                   Evas_Smart_Cb cancel_cb,
+                   void *data);
+    void hidePopup(void);
+};
+
+class OnOffData
+{
+  public:
+    ListView *m_listView;
+    std::string m_title;
+    Evas_Object *m_chk;
+    GetOnOffVal m_getOnOffVal;
+    Evas_Smart_Cb m_changedCb;
+
+    OnOffData(ListView *listView,
+              const char *title,
+              GetOnOffVal getOnOffVal,
+              Evas_Smart_Cb changedCb) :
+        m_listView(listView),
+        m_title(title),
+        m_chk(NULL),
+        m_getOnOffVal(getOnOffVal),
+        m_changedCb(changedCb) { };
+
+    ~OnOffData(void) { };
+};
+
+class RoamingData
+{
+  public:
+    Evas_Object *m_rg;
+    ListView *m_listView;
+
+    RoamingData(Evas_Object *rg, ListView *listView) :
+        m_rg(rg),
+        m_listView(listView) { };
+
+    ~RoamingData(void)
+    {
+        if (m_rg)
+            evas_object_del(m_rg);
+    };
+};
+
+class RoamingExpandData
+{
+  public:
+    WrtDB::GlobalDAOReadOnly::NetworkAccessMode m_mode;
+    Evas_Object *m_rg;
+
+    RoamingExpandData(WrtDB::GlobalDAOReadOnly::NetworkAccessMode mode,
+                      Evas_Object *rg) :
+        m_mode(mode),
+        m_rg(rg) { };
+    ~RoamingExpandData(void) { };
+};
+
+class ComplianceModeData
+{
+  public:
+    ListView *m_listView;
+    Evas_Object *m_gl;
+    Evas_Object *m_chk;
+    Elm_Object_Item *m_it;
+
+    ComplianceModeData(ListView *listView, Evas_Object *gl) :
+        m_listView(listView),
+        m_gl(gl),
+        m_chk(NULL),
+        m_it(NULL) { };
+    ~ComplianceModeData(void) { };
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_LISTVIEW_H_ */
diff --git a/webapp-common/mainview.cpp b/webapp-common/mainview.cpp
new file mode 100755 (executable)
index 0000000..ac0fcaf
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <ui-gadget-module.h>
+#include <Elementary.h>
+
+#include <dpl/assert.h>
+
+#include "mainview.h"
+#include "listview.h"
+
+namespace WebAppCommonSetting {
+
+void MainView::onListViewUnload(void *data)
+{
+    MainView *mainView;
+
+    mainView = static_cast<MainView *>(data);
+    Assert(mainView);
+    ug_destroy_me(mainView->getUG());
+}
+
+Evas_Object *MainView::createContent(Evas_Object *parent)
+{
+    Evas_Object *nf;
+
+    Assert(parent);
+    nf = elm_naviframe_add(parent);
+    if (!nf)
+        return NULL;
+
+    try {
+        m_list.Reset(new ListView(nf));
+        if (!m_list->loadView())
+            goto del_list;
+        m_list->setUnloadCb(onListViewUnload, this);
+        return nf;
+
+    } catch (const std::bad_alloc &) {
+        goto del_nf;
+    }
+
+del_list:
+    m_list.Reset();
+del_nf:
+    evas_object_del(nf);
+
+    return NULL;
+}
+
+bool MainView::loadView(void)
+{
+    Evas_Object *ly;
+    Evas_Object *eo;
+    Evas_Object *parent;
+
+    Assert(m_ug);
+    resetBase();
+
+    parent = static_cast<Evas_Object *>(ug_get_parent_layout(m_ug));
+    Assert(parent);
+
+    ly = elm_layout_add(parent);
+    if (!ly)
+        return false;
+    elm_layout_theme_set(ly, "layout", "application", "default");
+
+    eo = elm_bg_add(ly);
+    if (!eo)
+        goto del_ly;
+    elm_object_part_content_set(ly, "elm.swallow.bg", eo);
+
+    eo = createContent(ly);
+    if (!eo)
+        goto del_ly;
+    elm_object_part_content_set(ly, "elm.swallow.content", eo);
+
+    resetBase(ly);
+
+    return true;
+
+del_ly:
+    evas_object_del(ly);
+
+    return false;
+}
+
+MainView::MainView(ui_gadget_h ug) :
+    m_ug(ug)
+{
+    Assert(ug);
+
+    m_list.Reset();
+}
+
+MainView::~MainView(void)
+{
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/mainview.h b/webapp-common/mainview.h
new file mode 100755 (executable)
index 0000000..0a4c59a
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_COMMON_MAINVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_MAINVIEW_H_
+
+#include <ui-gadget.h>
+#include <Evas.h>
+
+#include <dpl/scoped_ptr.h>
+
+#include "listview.h"
+#include "view.h"
+
+namespace WebAppCommonSetting {
+
+class MainView : public View
+{
+    ui_gadget_h m_ug;
+    DPL::ScopedPtr<ListView> m_list;
+
+    static void onListViewUnload(void *data);
+    Evas_Object *createContent(Evas_Object *parent);
+
+  public:
+    MainView(ui_gadget_h ug);
+    ~MainView(void);
+
+    bool loadView(void);
+    ui_gadget_h getUG(void) { return m_ug; }
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_MAINVIEW_H_ */
diff --git a/webapp-common/popup.cpp b/webapp-common/popup.cpp
new file mode 100644 (file)
index 0000000..6b50474
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+
+#include <dpl/assert.h>
+
+#include "popup.h"
+
+namespace WebAppCommonSetting {
+
+bool Popup::showPopup(const char *desc,
+                      Evas_Smart_Cb ok_cb,
+                      Evas_Smart_Cb cancel_cb,
+                      void *data)
+{
+    Evas_Object *btn1;
+    Evas_Object *btn2;
+
+    if (m_pu)
+        evas_object_del(m_pu);
+
+    m_pu = elm_popup_add(m_win);
+    if (!m_pu)
+        return false;
+    evas_object_size_hint_weight_set(m_pu,
+                                     EVAS_HINT_EXPAND,
+                                     EVAS_HINT_EXPAND);
+    elm_object_text_set(m_pu, desc);
+
+    btn1 = elm_button_add(m_pu);
+    if (!btn1) {
+        evas_object_del(m_pu);
+        return false;
+    }
+    elm_object_text_set(btn1, "OK");
+    evas_object_smart_callback_add(btn1, "clicked", ok_cb, data);
+    elm_object_part_content_set(m_pu, "button1", btn1);
+
+    btn2 = elm_button_add(m_pu);
+    if (!btn2) {
+        evas_object_del(m_pu);
+        return false;
+    }
+    elm_object_text_set(btn2, "Cancel");
+    evas_object_smart_callback_add(btn2, "clicked", cancel_cb, data);
+    elm_object_part_content_set(m_pu, "button2", btn2);
+
+    evas_object_show(m_pu);
+
+    return true;
+}
+
+void Popup::hidePopup(void)
+{
+    if (m_pu) {
+        evas_object_del(m_pu);
+        m_pu = NULL;
+    }
+}
+
+Popup::Popup(void) :
+    m_win(NULL),
+    m_pu(NULL)
+{
+    m_win = static_cast<Evas_Object *>(ug_get_window());
+    Assert(m_win);
+}
+
+Popup::~Popup(void)
+{
+    if (m_pu)
+        evas_object_del(m_pu);
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/popup.h b/webapp-common/popup.h
new file mode 100644 (file)
index 0000000..8ad250f
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_COMMON_POPUP_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_POPUP_H_
+
+#include <Evas.h>
+
+namespace WebAppCommonSetting {
+
+class Popup
+{
+    Evas_Object *m_win;
+    Evas_Object *m_pu;
+
+  public:
+    bool showPopup(const char *desc,
+                   Evas_Smart_Cb ok_cb,
+                   Evas_Smart_Cb cancel_cb,
+                   void *data);
+    void hidePopup(void);
+
+    Popup(void);
+    ~Popup(void);
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_POPUP_H_ */
diff --git a/webapp-common/ug.cpp b/webapp-common/ug.cpp
new file mode 100755 (executable)
index 0000000..aa66bdf
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <bundle.h>
+
+#include <stdexcept>
+#undef None
+#include <dpl/wrt-dao-ro/WrtDatabase.h>
+#include <dpl/assert.h>
+
+#include "mainview.h"
+
+#define EXPORT_SYMBOL extern "C" __attribute__((visibility("default")))
+
+struct priv {
+    WebAppCommonSetting::MainView *mainView;
+};
+
+static void *onCreate(ui_gadget_h ug,
+                      enum ug_mode /*mode*/,
+                      service_h /*service*/,
+                      void *user_data)
+{
+    struct priv *priv;
+
+    Assert(ug && user_data);
+    priv = static_cast<struct priv *>(user_data);
+
+    try {
+        priv->mainView = new WebAppCommonSetting::MainView(ug);
+        if (priv->mainView->loadView())
+            return priv->mainView->getBase();
+        return NULL;
+    } catch (const std::bad_alloc &) {
+        return NULL;
+    }
+}
+
+static void onDestroy(ui_gadget_h /*ug*/,
+                      service_h /*service*/,
+                      void *user_data)
+{
+    struct priv *priv;
+
+    Assert(user_data);
+    priv = static_cast<struct priv *>(user_data);
+    delete priv->mainView;
+    priv->mainView = NULL;
+}
+
+EXPORT_SYMBOL int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+    struct priv *priv;
+
+    Assert(ops);
+    priv = static_cast<struct priv *>(calloc(1, sizeof(*priv)));
+    if (!priv)
+        return -1;
+
+    WrtDB::WrtDatabase::attachToThreadRW();
+
+    memset(ops, 0x00, sizeof(*ops));
+    ops->priv = priv;
+    ops->create = onCreate;
+    ops->destroy = onDestroy;
+    ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+    return 0;
+}
+
+EXPORT_SYMBOL void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+    struct priv *priv;
+
+    Assert(ops);
+    priv = static_cast<struct priv *>(ops->priv);
+    if (priv->mainView)
+        delete priv->mainView;
+    free(priv);
+
+    WrtDB::WrtDatabase::detachFromThread();
+}
diff --git a/webapp-common/util.h b/webapp-common/util.h
new file mode 100755 (executable)
index 0000000..2c74016
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_COMMON_UTIL_H_ 
+#define WEB_SRC_SETTING_WEBAPP_COMMON_UTIL_H_
+
+#include <libintl.h>
+
+#define D_(str) dgettext("sys_string", str)
+#define gettext_noop(str) (str)
+#define N_(str) gettext_noop(str)
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_UTIL_H_ */
diff --git a/webapp-common/view.cpp b/webapp-common/view.cpp
new file mode 100644 (file)
index 0000000..e3a86ef
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Evas.h>
+
+#include <dpl/assert.h>
+
+#include "view.h"
+
+namespace WebAppCommonSetting {
+
+void delCb(void *data,
+        Evas */*e*/,
+        Evas_Object */*eo*/,
+        void */*event_info*/)
+{
+    View *v;
+
+    v = static_cast<View *>(data);
+    Assert(v);
+    v->resetBase();
+    v->invokeUnloadCb();
+}
+
+void View::resetBase(Evas_Object *base)
+{
+    if (m_base)
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this);
+
+    m_base = base;
+
+    if (m_base)
+        evas_object_event_callback_add(base, EVAS_CALLBACK_DEL, delCb, this);
+}
+
+void View::setUnloadCb(ViewUnloadCb cb, void *data)
+{
+    m_viewUnloadCb = cb;
+    m_viewUnloadCbData = data;
+}
+
+void View::unsetUnloadCb(void)
+{
+    m_viewUnloadCb = NULL;
+    m_viewUnloadCbData = NULL;
+}
+
+void View::invokeUnloadCb(void)
+{
+    if (m_viewUnloadCb)
+        m_viewUnloadCb(m_viewUnloadCbData);
+}
+
+View::~View(void)
+{
+    unsetUnloadCb();
+
+    if (m_base) {
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this);
+        evas_object_del(m_base);
+    }
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/view.h b/webapp-common/view.h
new file mode 100644 (file)
index 0000000..5e4db53
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_COMMON_VIEW_H_ 
+#define WEB_SRC_SETTING_WEBAPP_COMMON_VIEW_H_
+
+#include <Evas.h>
+
+namespace WebAppCommonSetting {
+
+typedef void (*ViewUnloadCb)(void *data);
+
+class View
+{
+    Evas_Object *m_base;
+    ViewUnloadCb m_viewUnloadCb;
+    void *m_viewUnloadCbData;
+
+  public:
+    View() :
+        m_base(NULL),
+        m_viewUnloadCb(NULL),
+        m_viewUnloadCbData(NULL) { };
+    virtual ~View(void);
+
+    void resetBase(Evas_Object *base = NULL);
+    Evas_Object *getBase(void) { return m_base; }
+    void setUnloadCb(ViewUnloadCb cb, void *data);
+    void unsetUnloadCb(void);
+    void invokeUnloadCb(void);
+
+    virtual bool loadView(void) = 0;
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_VIEW_H_ */
diff --git a/webapp-common/whitelistview.cpp b/webapp-common/whitelistview.cpp
new file mode 100644 (file)
index 0000000..db7258c
--- /dev/null
@@ -0,0 +1,653 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+
+#include <dpl/wrt-dao-ro/global_dao_read_only.h>
+#include <dpl/wrt-dao-rw/global_dao.h>
+#include <dpl/foreach.h>
+#include <dpl/assert.h>
+
+#include "whitelistview.h"
+#include "whiteuriview.h"
+#include "icons.h"
+#include "util.h"
+#include "edc/defs.h"
+
+namespace WebAppCommonSetting {
+
+char *WhiteListView::getUriStr(void *data,
+                               Evas_Object */*obj*/,
+                               const char *part)
+{
+    const char *str;
+    UriData *uriData;
+
+    uriData = static_cast<UriData *>(data);
+    if (!uriData)
+        return NULL;
+
+    if (!strcmp(part, "elm.text.1"))
+        str = uriData->m_uri.c_str();
+    else if (!strcmp(part, "elm.text.2"))
+        str = NULL;
+    else
+        str = NULL;
+
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+Evas_Object *WhiteListView::getUriChk(void *data,
+                                      Evas_Object *obj,
+                                      const char *part)
+{
+    Evas_Object *chk;
+    UriData *uriData;
+
+    uriData = static_cast<UriData *>(data);
+    if (!uriData)
+        return NULL;
+
+    if (!strcmp(part, "elm.edit.icon.1")) {
+        chk = elm_check_add(obj);
+        if (!chk)
+            return NULL;
+        elm_check_state_pointer_set(chk, &uriData->m_selected);
+        evas_object_propagate_events_set(chk, EINA_FALSE);
+        evas_object_smart_callback_add(chk,
+                                       "changed",
+                                       onUriChkClicked,
+                                       data);
+    } else {
+        return NULL;
+    }
+
+    return chk;
+}
+
+void WhiteListView::delUriData(void *data, Evas_Object */*obj*/)
+{
+    UriData *uriData;
+
+    uriData = static_cast<UriData*>(data);
+    delete uriData;
+}
+
+void WhiteListView::onBackBtnClicked(void *data,
+                                     Evas_Object */*obj*/,
+                                     void */*event_info*/)
+{
+    WhiteListView *whitelistview;
+
+    whitelistview = static_cast<WhiteListView *>(data);
+    Assert(whitelistview);
+    whitelistview->handleBackBtn();
+}
+
+void WhiteListView::onEditModeBtnClicked(void *data,
+                                         Evas_Object */*obj*/,
+                                         void */*event_info*/)
+{
+    WhiteListView *whitelistview;
+
+    whitelistview = static_cast<WhiteListView *>(data);
+    Assert(whitelistview);
+    whitelistview->handleEditModeBtn();
+}
+
+void WhiteListView::onOptBtnClicked(void *data,
+                                    Evas_Object */*obj*/,
+                                    void */*event_info*/)
+{
+    WhiteListView *whitelistview;
+
+    whitelistview = static_cast<WhiteListView *>(data);
+    Assert(whitelistview);
+    whitelistview->handleOptBtn();
+}
+
+void WhiteListView::onUriClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info)
+{
+    UriData *uriData;
+    Elm_Object_Item *it;
+    WhiteListView *whiteListView;
+
+    uriData = static_cast<UriData *>(data);
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it && uriData);
+    whiteListView = uriData->m_whiteListView;
+    Assert(whiteListView);
+
+    if (elm_genlist_decorate_mode_get(obj)) {
+        uriData->m_selected = !uriData->m_selected;
+        if (uriData->m_selected)
+            whiteListView->increaseSelectCnt();
+        else
+            whiteListView->decreaseSelectCnt();
+        elm_genlist_item_update(it);
+    } else {
+        whiteListView->loadWhiteUriView(&uriData->m_uri);
+    }
+
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+}
+
+void WhiteListView::onUriChkClicked(void *data,
+                                    Evas_Object */*obj*/,
+                                    void */*event_info*/)
+{
+    UriData *uriData;
+    WhiteListView *whiteListView;
+
+    uriData = static_cast<UriData *>(data);
+    Assert(uriData);
+    whiteListView = uriData->m_whiteListView;
+    Assert(whiteListView);
+
+    if (uriData->m_selected)
+        whiteListView->increaseSelectCnt();
+    else
+        whiteListView->decreaseSelectCnt();
+}
+
+void WhiteListView::onSelectAllChkClicked(void *data,
+                                          Evas_Object *obj,
+                                          void */*event_info*/)
+{
+    WhiteListView *whiteListView;
+
+    whiteListView = static_cast<WhiteListView *>(data);
+    Assert(whiteListView);
+    whiteListView->selectAll(elm_check_state_get(obj));
+}
+
+void WhiteListView::onSelectAllClicked(void *data,
+                                       Evas */*e*/,
+                                       Evas_Object *obj,
+                                       void */*event_info*/)
+{
+    WhiteListView *whiteListView;
+    Evas_Object *chk;
+    Eina_Bool state;
+
+    Assert(obj);
+    whiteListView = static_cast<WhiteListView *>(data);
+    Assert(whiteListView);
+    chk = elm_object_part_content_get(obj, "elm.icon");
+    Assert(chk);
+    state = elm_check_state_get(chk);
+    elm_check_state_set(chk, !state);
+    whiteListView->selectAll(!state);
+}
+
+void WhiteListView::onRemoveWhiteUriPopupOk(void *data,
+                                            Evas_Object */*obj*/,
+                                            void */*event_info*/)
+{
+    WhiteListView *whiteListView;
+
+    whiteListView = static_cast<WhiteListView *>(data);
+    Assert(whiteListView);
+
+    whiteListView->removeWhiteUri();
+    whiteListView->hidePopup();
+}
+
+void WhiteListView::onRemoveWhiteUriPopupCancel(void *data,
+                                                Evas_Object */*obj*/,
+                                                void */*event_info*/)
+{
+    WhiteListView *whiteListView;
+
+    whiteListView = static_cast<WhiteListView *>(data);
+    Assert(whiteListView);
+
+    whiteListView->hidePopup();
+}
+
+void WhiteListView::onWhiteUriViewUnload(void *data)
+{
+    WhiteListView *whiteListView;
+
+    whiteListView = static_cast<WhiteListView *>(data);
+    Assert(whiteListView);
+    whiteListView->delWhiteUriView();
+    whiteListView->reloadUri();
+}
+
+void WhiteListView::addUri(DPL::String &uri)
+{
+    UriData *uriData;
+    Elm_Object_Item *it;
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(m_gl);
+    itc.item_style = "2text.6";
+    itc.func.text_get = getUriStr;
+    itc.func.content_get = getUriChk;
+    itc.func.state_get = NULL;
+    itc.func.del = delUriData;
+    itc.decorate_all_item_style = "edit_default";
+
+    try {
+        uriData = new UriData(this, DPL::ToUTF8String(uri));
+        it = elm_genlist_item_append(m_gl,
+                                     &itc,
+                                     static_cast<void *>(uriData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     onUriClicked,
+                                     static_cast<void *>(uriData));
+        if (!it) {
+            delete uriData;
+            return;
+        }
+        m_uriCnt++;
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+Evas_Object *WhiteListView::addToolBar(Evas_Object *parent)
+{
+    Evas_Object *toolBar;
+
+    toolBar = elm_toolbar_add(parent);
+    if (!toolBar)
+        return NULL;
+    elm_object_style_set(toolBar, "naviframe");
+    elm_toolbar_shrink_mode_set(toolBar, ELM_TOOLBAR_SHRINK_EXPAND);
+    m_editModeBtn = elm_toolbar_item_append(toolBar,
+                                            ICON_EDIT,
+                                            NULL,
+                                            onEditModeBtnClicked,
+                                            this);
+    m_optBtn = elm_toolbar_item_append(toolBar,
+                                       ICON_ADD,
+                                       NULL,
+                                       onOptBtnClicked,
+                                       this);
+    if (!m_uriCnt) {
+        elm_object_item_disabled_set(m_editModeBtn, EINA_TRUE);
+        elm_object_signal_emit(getBase(), SIG_SHOW_NOCONTENT, SRC_PROG);
+    }
+
+    return toolBar;
+}
+
+bool WhiteListView::pushToNaviFrame(void)
+{
+    Evas_Object *btn;
+    Evas_Object *toolBar;
+    Elm_Object_Item *it;
+
+    Assert(m_naviFrame);
+
+    btn = elm_button_add(m_naviFrame);
+    if (!btn)
+        return false;
+
+    toolBar = addToolBar(m_naviFrame);
+    if (!toolBar) {
+        evas_object_del(btn);
+        return false;
+    }
+    elm_object_style_set(btn, "naviframe/end_btn/default");
+    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
+    it = elm_naviframe_item_push(m_naviFrame,
+                                 "White list",
+                                 btn,
+                                 NULL,
+                                 getBase(),
+                                 NULL);
+    if (!it) {
+        evas_object_del(btn);
+        evas_object_del(toolBar);
+        return false;
+    }
+
+    elm_object_item_part_content_set(it, "controlbar", toolBar);
+
+    return true;
+}
+
+void WhiteListView::popFromNaviFrame(void)
+{
+    Assert(m_naviFrame);
+    elm_naviframe_item_pop(m_naviFrame);
+}
+
+bool WhiteListView::addNoContent(Evas_Object *ly)
+{
+    Evas_Object *eo;
+
+    Assert(ly);
+
+    eo = elm_layout_add(ly);
+    if (!eo)
+        return NULL;
+    elm_layout_theme_set(eo, "layout", "nocontents", "full");
+    elm_object_part_text_set(eo, "elm.text", D_("IDS_COM_BODY_NO_CONTENTS"));
+    elm_object_part_content_set(ly, PART_NOCONTENT, eo);
+
+    return true;
+}
+
+bool WhiteListView::addContents(Evas_Object *ly)
+{
+    Assert(ly);
+
+    m_bx = elm_box_add(ly);
+    if (!m_bx)
+        return false;
+
+    m_gl = elm_genlist_add(m_bx);
+    if (!m_gl) {
+        evas_object_del(m_bx);
+        m_bx = NULL;
+        return false;
+    }
+    evas_object_size_hint_align_set(m_gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(m_gl, EVAS_HINT_EXPAND, 1.0);
+    evas_object_show(m_gl);
+    elm_box_pack_end(m_bx, m_gl);
+    elm_object_part_content_set(ly, PART_CONTENT, m_bx);
+
+    return true;
+}
+
+bool WhiteListView::loadView(void)
+{
+    Evas_Object *ly;
+    WrtDB::WidgetAccessInfoList uriList;
+
+    Assert(m_naviFrame);
+    resetBase();
+
+    ly = elm_layout_add(m_naviFrame);
+    if (!ly)
+        return false;
+    elm_layout_file_set(ly, EDJFILE, GRP_CONTENT);
+
+    if (!addNoContent(ly)) {
+        evas_object_del(ly);
+        return false;
+    }
+
+    if (!addContents(ly)) {
+        evas_object_del(ly);
+        return false;
+    }
+    resetBase(ly);
+
+    uriList = WrtDB::GlobalDAOReadOnly::GetWhiteURIList();
+    FOREACH(uri, uriList)
+        addUri(uri->strIRI);
+
+    if (!pushToNaviFrame()) {
+        resetBase();
+        return false;
+    }
+
+    return true;
+}
+
+void WhiteListView::loadWhiteUriView(std::string *uri)
+{
+    Assert(m_naviFrame);
+
+    try {
+        if (uri)
+            m_whiteUriView.Reset(new WhiteUriView(m_naviFrame, *uri));
+        else
+            m_whiteUriView.Reset(new WhiteUriView(m_naviFrame));
+
+        if (!m_whiteUriView->loadView()) {
+            m_whiteUriView.Reset();
+            return;
+        }
+        m_whiteUriView->setUnloadCb(onWhiteUriViewUnload, this);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void WhiteListView::delWhiteUriView(void)
+{
+    m_whiteUriView.Reset();
+}
+
+void WhiteListView::reloadUri(void)
+{
+    WrtDB::WidgetAccessInfoList uriList;
+
+    if (getBase() && m_gl) {
+        elm_genlist_clear(m_gl);
+        uriList = WrtDB::GlobalDAOReadOnly::GetWhiteURIList();
+        m_uriCnt = 0;
+        FOREACH(uri, uriList)
+            addUri(uri->strIRI);
+
+        if (!m_uriCnt) {
+            elm_object_item_disabled_set(m_editModeBtn, EINA_TRUE);
+            elm_object_signal_emit(getBase(), SIG_SHOW_NOCONTENT, SRC_PROG);
+        } else {
+            elm_object_item_disabled_set(m_editModeBtn, EINA_FALSE);
+            elm_object_signal_emit(getBase(), SIG_SHOW_CONTENT, SRC_PROG);
+        }
+    }
+}
+
+void WhiteListView::handleEditModeBtn(void)
+{
+    Evas_Object *chk;
+
+    Assert(m_editModeBtn && m_optBtn);
+    Assert(m_bx);
+
+    if (!elm_genlist_decorate_mode_get(m_gl)) {
+        m_selectAll = elm_layout_add(m_gl);
+        if (!m_selectAll)
+            return;
+        elm_layout_theme_set(m_selectAll,
+                             "genlist",
+                             "item",
+                             "select_all/default");
+        chk = elm_check_add(m_gl);
+        if (!chk) {
+            evas_object_del(m_selectAll);
+            m_selectAll = NULL;
+            return;
+        }
+        evas_object_propagate_events_set(chk, EINA_FALSE);
+        evas_object_smart_callback_add(chk,
+                                       "changed",
+                                       onSelectAllChkClicked,
+                                       this);
+        evas_object_event_callback_add(m_selectAll,
+                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                       onSelectAllClicked,
+                                       this);
+        elm_object_part_content_set(m_selectAll, "elm.icon", chk);
+        elm_object_part_text_set(m_selectAll, "elm.text", "Select all");
+        evas_object_size_hint_align_set(m_selectAll,
+                                        EVAS_HINT_FILL,
+                                        0.0);
+        evas_object_show(m_selectAll);
+        elm_box_pack_start(m_bx, m_selectAll);
+        elm_object_item_disabled_set(m_editModeBtn, EINA_TRUE);
+        elm_toolbar_item_icon_file_set(m_optBtn, ICON_DELETE, NULL);
+        elm_object_item_disabled_set(m_optBtn, EINA_TRUE);
+        elm_genlist_decorate_mode_set(m_gl, EINA_TRUE);
+    }
+}
+
+void WhiteListView::handleOptBtn(void)
+{
+    Assert(m_gl);
+    if (elm_genlist_decorate_mode_get(m_gl)) {
+        showPopup("Do you really want to remove selected white URL?",
+                  onRemoveWhiteUriPopupOk,
+                  onRemoveWhiteUriPopupCancel,
+                  this);
+    } else {
+        loadWhiteUriView();
+    }
+}
+
+void WhiteListView::handleBackBtn(void)
+{
+    if (!elm_genlist_decorate_mode_get(m_gl)) {
+        popFromNaviFrame();
+    } else {
+        selectAll(EINA_FALSE);
+        Assert(m_bx);
+        elm_box_unpack(m_bx, m_selectAll);
+        evas_object_del(m_selectAll);
+        m_selectAll = NULL;
+        m_selectCnt = 0;
+        Assert(m_editModeBtn && m_optBtn);
+        if (!m_uriCnt) {
+           elm_object_item_disabled_set(m_editModeBtn, EINA_TRUE);
+           elm_object_signal_emit(getBase(), SIG_SHOW_NOCONTENT, SRC_PROG);
+        } else {
+           elm_object_item_disabled_set(m_editModeBtn, EINA_FALSE);
+           elm_object_signal_emit(getBase(), SIG_SHOW_CONTENT, SRC_PROG);
+        }
+        elm_toolbar_item_icon_file_set(m_optBtn, ICON_ADD, NULL);
+        elm_object_item_disabled_set(m_optBtn, EINA_FALSE);
+        elm_genlist_decorate_mode_set(m_gl, EINA_FALSE);
+    }
+}
+
+void WhiteListView::removeWhiteUri(void)
+{
+    UriData *uriData;
+    Elm_Object_Item *it;
+    Elm_Object_Item *trailIt;
+
+    Assert(m_gl);
+
+    it = elm_genlist_first_item_get(m_gl);
+    while (it) {
+        uriData = static_cast<UriData *>(elm_object_item_data_get(it));
+        Assert(uriData);
+
+        trailIt = elm_genlist_item_next_get(it);
+        if (uriData->m_selected) {
+            WrtDB::GlobalDAO::RemoveWhiteURI(uriData->m_uri);
+            /* TODO: deprecated API */
+            //elm_object_item_del(it);
+            elm_object_item_del(it);
+            m_uriCnt--;
+            decreaseSelectCnt();
+        }
+        it = trailIt;
+    }
+    if (!m_uriCnt)
+        handleBackBtn();
+}
+
+void WhiteListView::increaseSelectCnt(void)
+{
+    Evas_Object *chk;
+
+    Assert(m_selectAll);
+    chk = elm_object_part_content_get(m_selectAll, "elm.icon");
+    Assert(chk);
+
+    if (!m_selectCnt)
+        elm_object_item_disabled_set(m_optBtn, EINA_FALSE);
+    m_selectCnt++;
+    if (m_selectCnt >= m_uriCnt) {
+        m_selectCnt = m_uriCnt;
+        elm_check_state_set(chk, EINA_TRUE);
+    }
+}
+
+void WhiteListView::decreaseSelectCnt(void)
+{
+    Evas_Object *chk;
+
+    Assert(m_selectAll);
+    chk = elm_object_part_content_get(m_selectAll, "elm.icon");
+    Assert(chk);
+
+    if (m_selectCnt > 0)
+        m_selectCnt--;
+
+    if (m_selectCnt <= 0)
+        elm_object_item_disabled_set(m_optBtn, EINA_TRUE);
+    elm_check_state_set(chk, EINA_FALSE);
+}
+
+void WhiteListView::selectAll(Eina_Bool select)
+{
+    Elm_Object_Item *it;
+    UriData *uriData;
+
+    Assert(m_gl);
+    it = elm_genlist_first_item_get(m_gl);
+
+    while (it) {
+        uriData = static_cast<UriData *>(elm_object_item_data_get(it));
+        Assert(uriData);
+        uriData->m_selected = select;
+        it = elm_genlist_item_next_get(it);
+    }
+
+    elm_object_item_disabled_set(m_optBtn, !select);
+    if (select)
+        m_selectCnt = m_uriCnt;
+    else
+        m_selectCnt = 0;
+    elm_genlist_realized_items_update(m_gl);
+}
+
+bool WhiteListView::showPopup(const char *desc,
+                              Evas_Smart_Cb ok_cb,
+                              Evas_Smart_Cb cancel_cb,
+                              void *data)
+{
+    return m_popup.showPopup(desc, ok_cb, cancel_cb, data);
+}
+
+void WhiteListView::hidePopup(void)
+{
+    m_popup.hidePopup();
+}
+
+WhiteListView::WhiteListView(Evas_Object *naviFrame) :
+    m_naviFrame(naviFrame),
+    m_bx(NULL),
+    m_gl(NULL),
+    m_selectAll(NULL),
+    m_selectCnt(0),
+    m_uriCnt(0),
+    m_editModeBtn(NULL),
+    m_optBtn(NULL)
+{
+    m_whiteUriView.Reset();
+}
+
+WhiteListView::~WhiteListView(void)
+{
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/whitelistview.h b/webapp-common/whitelistview.h
new file mode 100644 (file)
index 0000000..1f10674
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_COMMON_WHITELISTVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_WHITELISTVIEW_H_
+
+#include <Evas.h>
+
+#include <dpl/scoped_ptr.h>
+
+#include "whiteuriview.h"
+#include "view.h"
+#include "popup.h"
+
+namespace WebAppCommonSetting {
+
+class WhiteListView : public View
+{
+    Evas_Object *m_naviFrame;
+    Evas_Object *m_bx;
+    Evas_Object *m_gl;
+    Evas_Object *m_selectAll;
+    unsigned int m_selectCnt;
+    unsigned int m_uriCnt;
+    Elm_Object_Item *m_editModeBtn;
+    Elm_Object_Item *m_optBtn;
+    Popup m_popup;
+    DPL::ScopedPtr<WhiteUriView> m_whiteUriView;
+
+    static char *getUriStr(void *data,
+                           Evas_Object *obj,
+                           const char *part);
+    static Evas_Object *getUriChk(void *data,
+                                  Evas_Object *obj,
+                                  const char *part);
+    static void delUriData(void *data, Evas_Object *obj);
+
+    static void onBackBtnClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onEditModeBtnClicked(void *data,
+                                     Evas_Object *obj,
+                                     void *event_info);
+    static void onOptBtnClicked(void *data,
+                                Evas_Object *obj,
+                                void *event_info);
+    static void onUriClicked(void *data,
+                             Evas_Object *obj,
+                             void *event_info);
+    static void onUriChkClicked(void *data,
+                                Evas_Object *obj,
+                                void *event_info);
+    static void onSelectAllChkClicked(void *data,
+                                      Evas_Object *obj,
+                                      void *event_info);
+    static void onSelectAllClicked(void *data,
+                                   Evas *e,
+                                   Evas_Object *obj,
+                                   void *event_info);
+    static void onRemoveWhiteUriPopupOk(void *data,
+                                        Evas_Object *obj,
+                                        void *event_info);
+    static void onRemoveWhiteUriPopupCancel(void *data,
+                                            Evas_Object *obj,
+                                            void *event_info);
+    static void onWhiteUriViewUnload(void *data);
+
+    void addUri(DPL::String &uri);
+    Evas_Object *addToolBar(Evas_Object *parent);
+    bool pushToNaviFrame(void);
+    void popFromNaviFrame(void);
+    bool addNoContent(Evas_Object *ly);
+    bool addContents(Evas_Object *ly);
+
+  public:
+    WhiteListView(Evas_Object *naviFrame);
+    ~WhiteListView(void);
+
+    bool loadView(void);
+    void loadWhiteUriView(std::string *uri = NULL);
+    void delWhiteUriView(void);
+    void reloadUri(void);
+    void handleEditModeBtn(void);
+    void handleOptBtn(void);
+    void handleBackBtn(void);
+    void removeWhiteUri(void);
+    void increaseSelectCnt(void);
+    void decreaseSelectCnt(void);
+    void selectAll(Eina_Bool select);
+    bool showPopup(const char *desc,
+                   Evas_Smart_Cb ok_cb,
+                   Evas_Smart_Cb cancel_cb,
+                   void *data);
+    void hidePopup(void);
+};
+
+class UriData
+{
+  public:
+    WhiteListView *m_whiteListView;
+    std::string m_uri;
+    Evas_Object *m_chk;
+    Eina_Bool m_selected;
+
+    UriData(WhiteListView *whiteListView, std::string uri) :
+        m_whiteListView(whiteListView),
+        m_uri(uri),
+        m_chk(NULL),
+        m_selected(EINA_FALSE) { };
+
+    ~UriData(void) { };
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_WHITELISTVIEW_H_ */
diff --git a/webapp-common/whiteuriview.cpp b/webapp-common/whiteuriview.cpp
new file mode 100644 (file)
index 0000000..7b5efe1
--- /dev/null
@@ -0,0 +1,388 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+
+#include <dpl/wrt-dao-rw/global_dao.h>
+#include <dpl/assert.h>
+
+#include "whiteuriview.h"
+#include "icons.h"
+
+namespace WebAppCommonSetting {
+
+void WhiteUriView::onBackBtnClicked(void *data,
+                                    Evas_Object */*obj*/,
+                                    void */*event_info*/)
+{
+    WhiteUriView *whiteUriView;
+
+    whiteUriView = static_cast<WhiteUriView *>(data);
+    Assert(whiteUriView);
+    whiteUriView->popFromNaviFrame();
+}
+
+void WhiteUriView::onSaveBtnClicked(void *data,
+                                    Evas_Object */*obj*/,
+                                    void */*event_info*/)
+{
+    WhiteUriView *whiteUriView;
+
+    whiteUriView = static_cast<WhiteUriView *>(data);
+    Assert(whiteUriView);
+    whiteUriView->save();
+}
+
+void WhiteUriView::onUriErase(void *data,
+                              Evas_Object */*obj*/,
+                              const char */*emission*/,
+                              const char */*source*/)
+{
+    Evas_Object *entry;
+
+    entry = static_cast<Evas_Object *>(data);
+    Assert(entry);
+    elm_entry_entry_set(entry, "");
+}
+
+void WhiteUriView::onUriFocused(void *data,
+                                Evas_Object *obj,
+                                void */*event_info*/)
+{
+    Evas_Object *ef;
+
+    Assert(obj);
+    ef = static_cast<Evas_Object *>(data);
+    Assert(ef);
+
+    if (!elm_entry_is_empty(obj))
+        elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
+    elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
+}
+
+void WhiteUriView::onUriUnfocused(void *data,
+                                  Evas_Object *obj,
+                                  void */*event_info*/)
+{
+    Evas_Object *ef;
+
+    Assert(obj);
+    ef = static_cast<Evas_Object *>(data);
+    Assert(ef);
+
+    if (elm_entry_is_empty(obj))
+        elm_object_signal_emit(ef, "elm,state,guidetext,show", "elm");
+    elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
+}
+
+void WhiteUriView::onUriChanged(void *data,
+                                Evas_Object *obj,
+                                void */*event_info*/)
+{
+    WhiteUriView *whiteUriView;
+    Evas_Object *ef;
+
+    if (!elm_object_focus_get(obj))
+        return;
+    ef = static_cast<Evas_Object *>(evas_object_data_get(obj, "editfield"));
+    Assert(ef);
+
+    if (elm_entry_is_empty(obj))
+        elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
+    else
+        elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
+
+    whiteUriView = static_cast<WhiteUriView *>(data);
+    Assert(whiteUriView);
+    whiteUriView->updateUri(elm_entry_entry_get(obj));
+}
+
+void WhiteUriView::onSubDomainReleased(void */*data*/,
+                                       Evas */*e*/,
+                                       Evas_Object *obj,
+                                       void */*event_info*/)
+{
+    Assert(obj);
+    elm_object_signal_emit(obj, "elm,state,unselected", "elm");
+}
+
+void WhiteUriView::onSubDomainClicked(void *data,
+                                      Evas */*e*/,
+                                      Evas_Object *obj,
+                                      void */*event_info*/)
+{
+    Evas_Object *chk;
+
+    chk = static_cast<Evas_Object *>(data);
+    Assert(obj && chk);
+    elm_check_state_set(chk, !elm_check_state_get(chk));
+    elm_object_signal_emit(obj, "elm,state,selected", "elm");
+}
+
+bool WhiteUriView::pushToNaviFrame(void)
+{
+    Evas_Object *btn;
+    Evas_Object *toolBar;
+    Elm_Object_Item *it;
+
+    Assert(m_naviFrame);
+
+    btn = elm_button_add(m_naviFrame);
+    if (!btn)
+        return false;
+
+    toolBar = addToolBar(m_naviFrame);
+    if (!toolBar) {
+        evas_object_del(btn);
+        return false;
+    }
+    elm_object_style_set(btn, "naviframe/end_btn/default");
+    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
+    it = elm_naviframe_item_push(m_naviFrame,
+            m_isModify ? "Modify white URI" : "New white URI",
+            btn,
+            NULL,
+            getBase(),
+            NULL);
+    if (!it) {
+        evas_object_del(btn);
+        evas_object_del(toolBar);
+        return false;
+    }
+
+    elm_object_item_part_content_set(it, "controlbar", toolBar);
+
+
+    return false;
+}
+
+void WhiteUriView::popFromNaviFrame(void)
+{
+    Assert(m_naviFrame);
+    elm_naviframe_item_pop(m_naviFrame);
+}
+
+bool WhiteUriView::addUriField(Evas_Object *bx)
+{
+    Evas_Object *ly;
+    Evas_Object *ef;
+    Evas_Object *entry;
+    const char *str;
+
+    Assert(bx);
+
+    ly = elm_layout_add(bx);
+    if (!ly)
+        return false;
+    elm_layout_theme_set(ly, "layout", "dialogue", "1icon");
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+
+    ef = elm_layout_add(ly);
+    if (!ef) {
+        evas_object_del(ly);
+        return false;
+    }
+    elm_layout_theme_set(ef, "layout", "editfield", "title");
+
+    entry = elm_entry_add(ef);
+    if (!entry) {
+        evas_object_del(ly);
+        return false;
+    }
+    evas_object_data_set(entry, "editfield", static_cast<void *>(ef));
+    elm_entry_single_line_set(entry, EINA_TRUE);
+    elm_object_part_content_set(ef, "elm.swallow.content", entry);
+
+    elm_object_signal_callback_add(ef,
+                                   "elm,eraser,clicked",
+                                   "elm",
+                                   onUriErase,
+                                   static_cast<void *>(entry));
+    evas_object_smart_callback_add(entry,
+                                   "focused",
+                                   onUriFocused,
+                                   static_cast<void *>(ef));
+    evas_object_smart_callback_add(entry,
+                                   "unfocused",
+                                   onUriUnfocused,
+                                   static_cast<void *>(ef));
+    evas_object_smart_callback_add(entry, "changed", onUriChanged, this);
+
+    elm_object_part_text_set(ef, "elm.text", "URI");
+    if (m_isModify) {
+        str = m_uri.c_str();
+        if (str) {
+            elm_entry_entry_set(entry, str);
+            elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
+        }
+    }
+
+    elm_object_part_text_set(ef, "elm.guidetext", "Put white URI");
+    elm_object_part_content_set(ly, "elm.icon", ef);
+    elm_box_pack_end(bx, ly);
+    evas_object_show(ly);
+
+    return true;
+}
+
+bool WhiteUriView::addSubDomainField(Evas_Object *bx)
+{
+    Evas_Object *ly;
+    Evas_Object *chk;
+
+    Assert(bx);
+    ly = elm_layout_add(bx);
+    if (!ly)
+        return false;
+    elm_object_focus_allow_set(ly, EINA_TRUE);
+
+    chk = elm_check_add(ly);
+    if (!chk) {
+        evas_object_del(ly);
+        return false;
+    }
+    elm_check_state_pointer_set(chk, &m_supportSubDomain);
+    evas_object_propagate_events_set(chk, EINA_FALSE);
+    elm_layout_theme_set(ly, "layout", "dialogue", "1text.1icon");
+    elm_object_part_text_set(ly, "elm.text", "Include sub-domains");
+    elm_object_part_content_set(ly, "elm.icon", chk);
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+    evas_object_event_callback_add(ly,
+                                   EVAS_CALLBACK_MOUSE_UP,
+                                   onSubDomainReleased,
+                                   NULL);
+    evas_object_event_callback_add(ly,
+                                   EVAS_CALLBACK_MOUSE_DOWN,
+                                   onSubDomainClicked,
+                                   static_cast<void *>(chk));
+    elm_box_pack_end(bx, ly);
+    evas_object_show(ly);
+
+    return true;
+}
+
+Evas_Object *WhiteUriView::addToolBar(Evas_Object *parent)
+{
+    Evas_Object *toolBar;
+
+    toolBar = elm_toolbar_add(parent);
+    if (!toolBar)
+        return NULL;
+    elm_object_style_set(toolBar, "naviframe");
+    elm_toolbar_shrink_mode_set(toolBar, ELM_TOOLBAR_SHRINK_EXPAND);
+    m_saveBtn = elm_toolbar_item_append(toolBar,
+                                        ICON_SAVE,
+                                        NULL,
+                                        onSaveBtnClicked,
+                                        this);
+
+    if (!m_uri.size())
+        elm_object_item_disabled_set(m_saveBtn, EINA_TRUE);
+
+    return toolBar;
+}
+
+bool WhiteUriView::loadView(void)
+{
+    Evas_Object *win;
+    Evas_Object *conform;
+    Evas_Object *scr;
+    Evas_Object *bx;
+
+    Assert(m_naviFrame);
+    resetBase();
+
+    win = static_cast<Evas_Object *>(ug_get_window());
+    Assert(win);
+
+    elm_win_conformant_set(win, EINA_TRUE);
+    conform = elm_conformant_add(m_naviFrame);
+    if (!conform)
+        return NULL;
+    elm_object_style_set(conform, "internal_layout");
+
+    scr = elm_scroller_add(conform);
+    if (!scr)
+        return false;
+
+    bx = elm_box_add(scr);
+    if (!bx) {
+        evas_object_del(conform);
+        return false;
+    }
+
+    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
+    elm_object_content_set(scr, bx);
+    evas_object_show(bx);
+    evas_object_show(scr);
+    if (!addUriField(bx) || !addSubDomainField(bx)) {
+        evas_object_del(conform);
+        return false;
+    }
+
+    elm_object_content_set(conform, scr);
+    resetBase(conform);
+    pushToNaviFrame();
+
+    return true;
+}
+
+void WhiteUriView::save(void)
+{
+    /* FIXME: what if uri is already exist?
+              there is no error code */
+    WrtDB::GlobalDAO::AddWhiteURI(m_uri, m_supportSubDomain);
+    elm_naviframe_item_pop(m_naviFrame);
+}
+
+void WhiteUriView::updateUri(const char *uri)
+{
+    m_uri.clear();
+    if (uri && strlen(uri)) {
+        m_uri.assign(uri);
+        elm_object_item_disabled_set(m_saveBtn, EINA_FALSE);
+    } else {
+        elm_object_item_disabled_set(m_saveBtn, EINA_TRUE);
+    }
+}
+
+WhiteUriView::WhiteUriView(Evas_Object *naviFrame) :
+    m_naviFrame(naviFrame),
+    m_saveBtn(NULL),
+    m_isModify(false),
+    m_supportSubDomain(false)
+{
+}
+
+WhiteUriView::WhiteUriView(Evas_Object *naviFrame,
+                           std::string uri) :
+    m_naviFrame(naviFrame),
+    m_saveBtn(NULL),
+    m_uri(uri),
+    m_isModify(true),
+    m_supportSubDomain(false)
+{
+}
+
+WhiteUriView::~WhiteUriView(void)
+{
+}
+
+} /* WebAppCommonSetting */
diff --git a/webapp-common/whiteuriview.h b/webapp-common/whiteuriview.h
new file mode 100644 (file)
index 0000000..807628f
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_COMMON_WHITEURIVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_COMMON_WHITEURIVIEW_H_
+
+#include <Evas.h>
+
+#include <string>
+
+#include "view.h"
+
+namespace WebAppCommonSetting {
+
+class WhiteUriView : public View
+{
+    Evas_Object *m_naviFrame;
+    Elm_Object_Item *m_saveBtn;
+    std::string m_uri;
+    bool m_isModify;
+    Eina_Bool m_supportSubDomain;
+
+    static void onBackBtnClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onSaveBtnClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onUriErase(void *data,
+                           Evas_Object *obj,
+                           const char *emission,
+                           const char *source);
+    static void onUriFocused(void *data,
+                             Evas_Object *obj,
+                             void *event_info);
+    static void onUriUnfocused(void *data,
+                               Evas_Object *obj,
+                               void *event_info);
+    static void onUriChanged(void *data,
+                             Evas_Object *obj,
+                             void *event_info);
+    static void onSubDomainReleased(void *data,
+                                    Evas *e,
+                                    Evas_Object *obj,
+                                    void *event_info);
+    static void onSubDomainClicked(void *data,
+                                   Evas *e,
+                                   Evas_Object *obj,
+                                   void *event_info);
+
+    bool pushToNaviFrame(void);
+    void popFromNaviFrame(void);
+    bool addUriField(Evas_Object *bx);
+    bool addSubDomainField(Evas_Object *bx);
+    Evas_Object *addToolBar(Evas_Object *parent);
+
+  public:
+    WhiteUriView(Evas_Object *naviFrame);
+    WhiteUriView(Evas_Object *naviFrame,
+                 std::string uri);
+    ~WhiteUriView(void);
+
+    bool loadView(void);
+    void save(void);
+    void updateUri(const char *uri);
+};
+
+} /* WebAppCommonSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_COMMON_WHITEURIVIEW_H_ */
diff --git a/webapp-detail/CMakeLists.txt b/webapp-detail/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..0f07eb2
--- /dev/null
@@ -0,0 +1,63 @@
+#
+# Copyright 2012  Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+SET(TARGET_UG_DETAIL_LIB "ug-webapp-detail-efl")
+SET(TARGET_UG_EDJ "webapp-detail.edj")
+SET(UGDIR "${UG_INSTALL_PREFIX}/ug/lib")
+SET(EDJDIR "${UG_INSTALL_PREFIX}/ug/res/edje/${TARGET_UG_DETAIL_LIB}")
+
+# Compiler flags
+SET(CMAKE_BUILD_TYPE           "Release")
+SET(CMAKE_C_FLAGS_PROFILING    "-O0 -g -pg")
+SET(CMAKE_CXX_FLAGS_PROFILING  "-O0 -std=c++0x -g -pg")
+SET(CMAKE_C_FLAGS_DEBUG        "-O0 -g")
+SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -std=c++0x -g")
+SET(CMAKE_C_FLAGS_RELEASE      "-O2 -g")
+SET(CMAKE_CXX_FLAGS_RELEASE    "-O2 -std=c++0x -g")
+
+PKG_CHECK_MODULES(UG_WEB_APP_DETAIL_DEPS
+    ecore
+    elementary
+    ui-gadget-1
+    dpl-efl
+    dpl-wrt-dao-rw
+    dpl-utils-efl
+    security-settings
+    wrt-commons-security-origin-dao
+    REQUIRED)
+
+SET(UG_DETAIL_SOURCES
+    ug.cpp
+    view.cpp
+    mainview.cpp
+    detailview.cpp
+    permview.cpp
+    advancedview.cpp
+    exceptionsview.cpp
+    wac_feature.cpp
+    tizen_feature.cpp
+)
+
+INCLUDE_DIRECTORIES(${UG_WEB_APP_DETAIL_DEPS_INCLUDE_DIRS})
+ADD_LIBRARY(${TARGET_UG_DETAIL_LIB} SHARED ${UG_DETAIL_SOURCES})
+ADD_DEFINITIONS("-DEDJFILE=\"${EDJDIR}/${TARGET_UG_EDJ}\"")
+
+SET_TARGET_PROPERTIES(${TARGET_UG_DETAIL_LIB} PROPERTIES SOVERSION ${PROJECT_API_VERSION})
+SET_TARGET_PROPERTIES(${TARGET_UG_DETAIL_LIB} PROPERTIES VERSION   ${PROJECT_VERSION})
+TARGET_LINK_LIBRARIES(${TARGET_UG_DETAIL_LIB} ${UG_WEB_APP_DETAIL_DEPS_LDFLAGS} ${UG_WEB_APP_DETAIL_DEPS_LIBRARIES})
+INSTALL(TARGETS ${TARGET_UG_DETAIL_LIB} DESTINATION ${UGDIR})
+
+ADD_SUBDIRECTORY(edc)
diff --git a/webapp-detail/advancedview.cpp b/webapp-detail/advancedview.cpp
new file mode 100644 (file)
index 0000000..7981f72
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include "advancedview.h"
+
+#include <vector>
+#include <map>
+#include <string>
+#include <cstring>
+#include <Elementary.h>
+#include <vconf.h>
+
+#include <dpl/foreach.h>
+#include <dpl/assert.h>
+#include <dpl/wrt-dao-ro/WrtDatabase.h>
+#include <dpl/wrt-dao-ro/vconf_config.h>
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include "exceptionsview.h"
+#include "util.h"
+
+namespace WebAppDetailSetting {
+
+namespace  {
+const char* const ELM_STYLE_ON_OFF = "on&off";
+const char* const ELM_PART_ICON = "elm.icon";
+const char* const EVAS_SMART_CALLBACK_CHANGED = "changed";
+const char* const ELM_GENLIST_ITEM_CLASS_STYLE_GROUPINDEX = "groupindex";
+const char* const ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT = "1text";
+const char* const ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT_1ICON_6 = "1text.1icon.6";
+const char* const TEXT_NAVIFRAME_TITLE = "Advanced Settings";
+}
+
+AdvancedView::AdvancedView(Evas_Object *navi, int appID) :
+    m_naviframe(navi),
+    m_appID(appID)
+{
+    m_groupMenuMap[GROUP_IDX_SECURITY_SETTINGS] = "Security Settings";
+    m_groupMenuMap[GROUP_IDX_DEVELOPER_OPTIONS] = "Developer Options";
+
+    m_menuMap[SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE] =
+        "Show security warnings";
+    m_menuMap[SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE] =
+        "Location";
+    m_menuMap[SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE] =
+        "Web notification";
+    m_menuMap[SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE] =
+        "Web database";
+    m_menuMap[SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE] =
+        "File system access";
+    m_menuMap[SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS] =
+        "Exceptions Settings";
+    m_menuMap[DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE] =
+        "Memory Saving Mode";
+}
+
+AdvancedView::~AdvancedView(void)
+{
+}
+
+char* AdvancedView::getGroupText(void* data,
+                                 Evas_Object* /*obj*/,
+                                 const char* /*part*/)
+{
+    Assert(data);
+    AdvancedSettingsGroupData* advancedSettingsData =
+        static_cast<AdvancedSettingsGroupData*>(data);
+    return strdup(advancedSettingsData->m_menuText.c_str());
+}
+
+void AdvancedView::delGroupData(void* data,
+                                Evas_Object* /*obj*/)
+{
+    Assert(data);
+    AdvancedSettingsGroupData* advancedSettingsData =
+        static_cast<AdvancedSettingsGroupData*>(data);
+    delete advancedSettingsData;
+}
+
+char* AdvancedView::getSettingText(void *data,
+                                           Evas_Object* /*obj*/,
+                                           const char* /*part*/)
+{
+    Assert(data);
+    SettingData* settingData = static_cast<SettingData*>(data);
+    return strdup(settingData->m_menuText.c_str());
+}
+
+Evas_Object* AdvancedView::getSettingContent(void* data,
+                                                     Evas_Object* obj,
+                                                     const char* /*part*/)
+{
+    Assert(data);
+    SettingData* settingData =
+        static_cast<SettingData*>(data);
+
+    Assert(obj);
+    Evas_Object* icon = elm_check_add(obj);
+    elm_check_state_set(icon, EINA_TRUE);
+    elm_object_style_set(icon, ELM_STYLE_ON_OFF);
+    settingData->m_iconPart = ELM_PART_ICON;
+
+    evas_object_propagate_events_set(
+        icon,
+        EINA_FALSE);
+    elm_check_state_set(icon, settingData->isEnabled() ? EINA_TRUE : EINA_FALSE);
+    evas_object_smart_callback_add(icon,
+                                   EVAS_SMART_CALLBACK_CHANGED,
+                                   settingChangedCallback,
+                                   data);
+
+    return icon;
+}
+
+void AdvancedView::delSettingData(void* data,
+                                          Evas_Object* /*obj*/)
+{
+    Assert(data);
+    SettingData* settingData = static_cast<SettingData*>(data);
+    delete settingData;
+}
+
+void AdvancedView::settingSelectedCallback(void* data,
+                                                   Evas_Object* obj,
+                                                   void* eventInfo)
+{
+    Assert(eventInfo);
+    Elm_Object_Item* item = static_cast<Elm_Object_Item*>(eventInfo);
+    elm_genlist_item_selected_set(item, EINA_FALSE);
+
+    SettingData* settingData =
+        static_cast<SettingData*>(elm_object_item_data_get(item));
+    Assert(settingData);
+
+    Evas_Object* check =
+        elm_object_item_part_content_get(item,
+                                         settingData->m_iconPart.c_str());
+    Assert(check);
+    bool state = !elm_check_state_get(check);
+    settingData->saveChange(state);
+    elm_check_state_set(check, state);
+}
+
+void AdvancedView::settingChangedCallback(void* data,
+                                                  Evas_Object* obj,
+                                                  void* eventInfo)
+{
+    Assert(data);
+    SettingData* settingData =
+        static_cast<SettingData*>(data);
+    Assert(obj);
+    settingData->saveChange(elm_check_state_get(obj));
+}
+
+char* AdvancedView::getSecurityExceptionsSettingsText(void *data,
+                                                      Evas_Object *obj,
+                                                      const char *part)
+{
+    Assert(data);
+    return strdup("Exceptions Settings");
+}
+
+void AdvancedView::securityExceptionsSettingsSelectedCallback(void* data,
+                                                              Evas_Object* obj,
+                                                              void* eventInfo)
+{
+    Assert(eventInfo);
+    Elm_Object_Item* item = static_cast<Elm_Object_Item*>(eventInfo);
+    elm_genlist_item_selected_set(item, EINA_FALSE);
+
+    AdvancedView* This =
+        static_cast<AdvancedView*>(elm_object_item_data_get(item));
+    Assert(This);
+    This->m_exceptionsView.Reset(
+        new ExceptionsView(This->m_naviframe, This->m_appID));
+    if (!This->m_exceptionsView->loadView()) {
+        This->m_exceptionsView.Reset();
+    }
+}
+
+bool AdvancedView::loadView(void)
+{
+    resetBase();
+
+    Evas_Object* genlist = NULL;
+    genlist = elm_genlist_add(m_naviframe);
+
+    // create group menu
+    static Elm_Genlist_Item_Class itcGroup = {0,};
+    itcGroup.item_style = ELM_GENLIST_ITEM_CLASS_STYLE_GROUPINDEX;
+    itcGroup.func.text_get = getGroupText;
+    itcGroup.func.del = delGroupData;
+
+    for (int index = GROUP_IDX_START; index <= GROUP_IDX_END; index++) {
+        Elm_Object_Item* groupItem =
+            elm_genlist_item_append(genlist,
+                                    &itcGroup,
+                                    static_cast<void*>(
+                                        new AdvancedSettingsGroupData(
+                                            m_groupMenuMap[index])),
+                                    NULL,
+                                    ELM_GENLIST_ITEM_NONE,
+                                    NULL,
+                                    NULL);
+        elm_genlist_item_select_mode_set(groupItem,
+                                         ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+        if (index == GROUP_IDX_SECURITY_SETTINGS) {
+            // create Security Settings menu
+            loadSecuritySettingsMenu(genlist);
+        } else if (index == GROUP_IDX_DEVELOPER_OPTIONS) {
+            // create developer Options menu
+            loadDeveloperOptionsMenu(genlist);
+        } else {
+            LogError("Wrong index");
+        }
+    }
+    elm_naviframe_item_push(m_naviframe,
+                            TEXT_NAVIFRAME_TITLE,
+                            NULL,
+                            NULL,
+                            genlist,
+                            NULL);
+    resetBase(genlist);
+    return true;
+}
+
+void AdvancedView::loadSecuritySettingsMenu(Evas_Object* genlist)
+{
+    for (int index = SECURITY_SETTINGS_IDX_START; index <= SECURITY_SETTINGS_IDX_END; index++) {
+        if (index == SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS) {
+            // create exceptions security settings menu
+            static Elm_Genlist_Item_Class itcSecurityExceptionsSettings = {0,};
+            itcSecurityExceptionsSettings.item_style =
+                ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT;
+            itcSecurityExceptionsSettings.func.text_get = getSecurityExceptionsSettingsText;
+            itcSecurityExceptionsSettings.func.content_get = NULL;
+            itcSecurityExceptionsSettings.func.state_get = NULL;
+            itcSecurityExceptionsSettings.func.del = NULL;
+            elm_genlist_item_append(genlist,
+                                    &itcSecurityExceptionsSettings,
+                                    static_cast<void*>(this),
+                                    NULL,
+                                    ELM_GENLIST_ITEM_NONE,
+                                    securityExceptionsSettingsSelectedCallback,
+                                    NULL);
+
+        } else {
+            // create usage menu
+            static Elm_Genlist_Item_Class itcSecuritySettings = {0,};
+            itcSecuritySettings.item_style =
+                ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT_1ICON_6;
+            itcSecuritySettings.func.text_get = getSettingText;
+            itcSecuritySettings.func.content_get = getSettingContent;
+            itcSecuritySettings.func.state_get = NULL;
+            itcSecuritySettings.func.del = delSettingData;
+
+            elm_genlist_item_append(genlist,
+                                    &itcSecuritySettings,
+                                    static_cast<void*>(
+                                        new SettingData(
+                                            m_appID, index, m_menuMap[index])),
+                                    NULL,
+                                    ELM_GENLIST_ITEM_NONE,
+                                    settingSelectedCallback,
+                                    NULL);
+        }
+    }
+}
+
+void AdvancedView::loadDeveloperOptionsMenu(Evas_Object* genlist)
+{
+    static Elm_Genlist_Item_Class itcDeveloperOptions = {0,};
+    itcDeveloperOptions.item_style =
+        ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT_1ICON_6;
+    itcDeveloperOptions.func.text_get = getSettingText;
+    itcDeveloperOptions.func.content_get = getSettingContent;
+    itcDeveloperOptions.func.state_get = NULL;
+    itcDeveloperOptions.func.del = delSettingData;
+
+    for (int index = DEVELOPER_OPTIONS_IDX_START; index <= DEVELOPER_OPTIONS_IDX_END; index++) {
+        elm_genlist_item_append(genlist,
+                                &itcDeveloperOptions,
+                                static_cast<void*>(
+                                    new SettingData(
+                                        m_appID, index, m_menuMap[index])),
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                settingSelectedCallback,
+                                NULL);
+    }
+}
+
+SettingData::SettingData(int appID, int index, std::string menuText) :
+    m_index(static_cast<MenuIndex>(index)),
+    m_menuText(menuText)
+{
+    m_dao.Reset(new WrtDB::WidgetDAO(appID));
+}
+
+bool SettingData::isEnabled()
+{
+    using namespace WrtDB;
+    std::string key;
+    if (m_index == SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE) {
+        key = VconfConfig::GetVconfKeyPopupUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE) {
+        key = VconfConfig::GetVconfKeyGeolocationUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE) {
+        key = VconfConfig::GetVconfKeyWebNotificationUsage(
+            m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE) {
+        key = VconfConfig::GetVconfKeyWebDatabaseUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE) {
+        key = VconfConfig::GetVconfKeyFilesystemUsage(m_dao->getPkgName());
+    } else if (m_index == DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE) {
+        key = VconfConfig::GetVconfKeyMemorySavingMode(m_dao->getPkgName());
+    } else {
+        Assert("Wrong menu index");
+    }
+
+    int ret = 0;
+    vconf_get_int(key.c_str(), &ret);
+    if (static_cast<SettingsType>(ret) == SETTINGS_TYPE_ON) {
+        return true;
+    } else if (static_cast<SettingsType>(ret) == SETTINGS_TYPE_OFF) {
+        return false;
+    }
+
+    Assert("Unsupported value");
+    // For preventing compile warning, even this code isn't necessary.
+    return false;
+}
+
+void SettingData::saveChange(bool state)
+{
+    using namespace WrtDB;
+    SettingsType result = state ? SETTINGS_TYPE_ON : SETTINGS_TYPE_OFF;
+
+    std::string key;
+    if (m_index == SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE) {
+        key = VconfConfig::GetVconfKeyPopupUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE) {
+        key = VconfConfig::GetVconfKeyGeolocationUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE) {
+        key = VconfConfig::GetVconfKeyWebNotificationUsage(
+            m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE) {
+        key = VconfConfig::GetVconfKeyWebDatabaseUsage(m_dao->getPkgName());
+    } else if (m_index == SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE) {
+        key = VconfConfig::GetVconfKeyFilesystemUsage(m_dao->getPkgName());
+    } else if (m_index == DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE) {
+        key = VconfConfig::GetVconfKeyMemorySavingMode(m_dao->getPkgName());
+    } else {
+        Assert("Wrong menu index");
+    }
+    vconf_set_int(key.c_str(), static_cast<int>(result));
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/advancedview.h b/webapp-detail/advancedview.h
new file mode 100644 (file)
index 0000000..4099084
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_ADVANCEDVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_ADVANCEDVIEW_H_
+
+#include <Evas.h>
+
+#undef None
+#include <string>
+#include <map>
+#include <dpl/scoped_ptr.h>
+
+#include "view.h"
+
+namespace WrtDB {
+class WidgetDAO;
+}
+
+namespace WebAppDetailSetting {
+
+class ExceptionsView;
+
+enum GroupSettingsIndex {
+    GROUP_IDX_START = 0,
+    GROUP_IDX_SECURITY_SETTINGS = GROUP_IDX_START,
+    GROUP_IDX_DEVELOPER_OPTIONS,
+    GROUP_IDX_END = GROUP_IDX_DEVELOPER_OPTIONS,
+};
+
+enum MenuIndex {
+    SECURITY_SETTINGS_IDX_START = 0,
+    SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE = SECURITY_SETTINGS_IDX_START,
+    SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE,
+    SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE,
+    SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE,
+    SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE,
+    SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS,
+    SECURITY_SETTINGS_IDX_END = SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS,
+    DEVELOPER_OPTIONS_IDX_START = SECURITY_SETTINGS_IDX_END,
+    DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE = DEVELOPER_OPTIONS_IDX_START,
+    DEVELOPER_OPTIONS_IDX_END = DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE,
+};
+
+class AdvancedView : public View
+{
+  public:
+    AdvancedView(Evas_Object *naviframe, int appID);
+    ~AdvancedView(void);
+
+    bool loadView(void);
+    void loadSecuritySettingsMenu(Evas_Object* genlist);
+    void loadDeveloperOptionsMenu(Evas_Object* genlist);
+
+  private:
+    Evas_Object *m_naviframe;
+    int m_appID;
+    DPL::ScopedPtr<ExceptionsView> m_exceptionsView;
+    std::map<int, std::string> m_groupMenuMap;
+    std::map<int, std::string> m_menuMap;
+
+    static char* getGroupText(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static void delGroupData(
+        void* data,
+        Evas_Object* obj);
+
+    static char* getSettingText(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static Evas_Object* getSettingContent(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static void delSettingData(
+        void* data,
+        Evas_Object* obj);
+    static void settingSelectedCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+    static void settingChangedCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+    static char* getSecurityExceptionsSettingsText(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static void securityExceptionsSettingsSelectedCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+};
+
+class AdvancedSettingsGroupData
+{
+  public:
+    std::string m_menuText;
+    AdvancedSettingsGroupData(std::string menuText) :
+        m_menuText(menuText)
+    {
+    };
+};
+
+class SettingData
+{
+  public:
+    DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
+    MenuIndex m_index;
+    std::string m_menuText;
+    std::string m_iconPart;
+
+    SettingData(int appID, int index, std::string menuText);
+    bool isEnabled();
+    void saveChange(bool state);
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_ADVANCEDVIEW_H_ */
diff --git a/webapp-detail/detailview.cpp b/webapp-detail/detailview.cpp
new file mode 100644 (file)
index 0000000..266101c
--- /dev/null
@@ -0,0 +1,1036 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <sstream>
+#include <Elementary.h>
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include <dpl/foreach.h>
+#include <dpl/assert.h>
+#include <dpl/utils/wrt_global_settings.h>
+#include <dpl/localization/w3c_file_localization.h>
+
+#include <ui-gadget-module.h>
+
+#include "detailview.h"
+#include "advancedview.h"
+#include "util.h"
+
+namespace WebAppDetailSetting {
+namespace {
+const int MAX_PATH_LENGTH  = 255;
+const int ERROR_READ_LINK = -1;
+// need to move widget_config.h
+const char* const WRT_LAUNCHER = "wrt-launcher";
+const char* const WRT_LAUNCHER_WK_MODE_CHANGE_OPTION = "-w";
+}
+
+void DetailView::getLocalizedInfo(void)
+{
+    m_localizedInfo = W3CFileLocalization::getLocalizedInfo(m_appID);
+}
+
+void DetailView::addField(const char *title)
+{
+    Evas_Object *ly;
+
+    Assert(m_bx && title);
+
+    ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "title");
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+    elm_object_part_text_set(ly, "elm.text", title);
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+}
+
+void DetailView::addField(const char *title, const char *str)
+{
+    Evas_Object *ly;
+    Evas_Object *field;
+    Evas_Object *entry;
+
+    Assert(m_bx && title);
+
+    ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "1icon");
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+
+    field = elm_layout_add(ly);
+    if (!field) {
+        evas_object_del(ly);
+        return;
+    }
+    elm_layout_theme_set(field, "layout", "editfield", "title");
+    elm_object_part_text_set(field, "elm.text", title);
+    if (str) {
+           entry = elm_entry_add(field);
+           if (entry) {
+                   elm_entry_editable_set(entry, EINA_FALSE);
+//                 elm_entry_single_line_set(entry, EINA_TRUE);
+                   elm_object_text_set(entry, str);
+                   elm_object_part_content_set(field,
+                                   "elm.swallow.content", entry);
+           }
+    }
+    elm_object_part_content_set(ly, "elm.icon", field);
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+}
+
+void DetailView::addDefInfo(void)
+{
+    DPL::OptionalString ver;
+
+    Assert(m_dao);
+
+    addField(D_("IDS_COM_BODY_DETAILS_NAME"),
+            m_localizedInfo.name.IsNull() ? NULL :
+            DPL::ToUTF8String((*m_localizedInfo.name)).c_str());
+
+    ver = m_dao->getVersion();
+    /* FIXME: i18n */
+    addField("Version",
+            ver.IsNull() ? NULL :
+            DPL::ToUTF8String((*ver)).c_str());
+
+    /* FIXME: i18n */
+    addField("Domain",
+            m_dao->isTrusted() ? "Trusted" : "Untrusted");
+
+    addField(D_("IDS_COM_BODY_DESCRIPTION"),
+            m_localizedInfo.description.IsNull() ? NULL :
+            DPL::ToUTF8String((*m_localizedInfo.description)).c_str());
+}
+
+void DetailView::addViewModes(void)
+{
+    DPL::String mode;
+    WrtDB::WindowModeList modes;
+
+    Assert(m_dao);
+
+    modes = m_dao->getWindowModes();
+    if (modes.size() > 0) {
+        FOREACH(it, modes)
+            mode += *it + L",";
+        /* remove comma */
+        mode.resize(mode.length() - 1);
+        /* FIXME: i18n */
+        addField("View modes",
+                DPL::ToUTF8String(mode).c_str());
+    } else {
+        /* FIXME: i18n */
+        addField("View modes", NULL);
+    }
+}
+
+void DetailView::addAuthorInfo(void)
+{
+    DPL::OptionalString name;
+    DPL::OptionalString email;
+    DPL::OptionalString homepage;
+
+    Assert(m_dao);
+
+    addField(D_("IDS_COM_BODY_AUTHOR"));
+
+    name = m_dao->getAuthorName();
+    addField(D_("IDS_COM_BODY_DETAILS_NAME"),
+            name.IsNull() ? NULL :
+            DPL::ToUTF8String((*name)).c_str());
+
+    email = m_dao->getAuthorEmail();
+    if (!email.IsNull())
+        addField(D_("IDS_COM_BODY_EMAIL"),
+                DPL::ToUTF8String((*email)).c_str());
+
+    homepage = m_dao->getAuthorHref();
+    /* FIXME: i18n */
+    if (!homepage.IsNull())
+        addField("Homepage",
+                DPL::ToUTF8String((*homepage)).c_str());
+}
+
+void DetailView::addSaveLoginInfo()
+{
+    Assert(m_bx);
+
+    Evas_Object *ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "1text.1icon");
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+    elm_object_part_text_set(ly, "elm.text", "Auto save ID/password");
+
+    check_login = elm_check_add(ly);
+    if (!check_login) {
+        evas_object_del(ly);
+        return;
+    }
+
+    elm_object_style_set(check_login, "on&off");
+    evas_object_propagate_events_set(check_login, EINA_FALSE);
+    elm_object_part_content_set(ly, "elm.icon", check_login);
+
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_DOWN,
+            _mouse_down,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_MOVE,
+            _mouse_move,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_UP,
+            _mouse_up_save_login_info,
+            this);
+
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+}
+
+void DetailView::addClearData()
+{
+    Assert(m_bx);
+
+    Evas_Object *ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "1text");
+    elm_object_text_set(ly, "Clear Data");
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_DOWN,
+            _mouse_down,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_MOVE,
+            _mouse_move,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_UP,
+            _mouse_up_clear_data,
+            this);
+
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+
+}
+
+void DetailView::addAdvancedSettings()
+{
+    Assert(m_bx);
+
+    Evas_Object *ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "1text");
+    elm_object_text_set(ly, "Advanced Settings");
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_DOWN,
+            _mouse_down,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_MOVE,
+            _mouse_move,
+            NULL);
+    evas_object_event_callback_add(ly,
+            EVAS_CALLBACK_MOUSE_UP,
+            _mouse_up_advanced_settings,
+            this);
+
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+
+}
+
+void DetailView::addSeperator()
+{
+    Evas_Object *ly;
+
+    Assert(m_bx);
+
+    ly = elm_layout_add(m_bx);
+    if (!ly)
+        return;
+    elm_layout_theme_set(ly, "layout", "dialogue", "separator/hd33/with_line");
+
+    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
+    evas_object_show(ly);
+    elm_box_pack_end(m_bx, ly);
+}
+
+void DetailView::addLicense(void)
+{
+    DPL::OptionalString license;
+    DPL::OptionalString href;
+
+    std::string strLicense;
+    std::string strHref;
+
+    std::string lrepdf = "\xE2\x80\xAA\xE2\x80\xAC";
+    std::string rlepdf = "\xE2\x80\xAB\xE2\x80\xAC";
+    std::string lropdf = "\xE2\x80\xAD\xE2\x80\xAC";
+    std::string rlopdf = "\xE2\x80\xAE\xE2\x80\xAC";
+
+    Evas_Object* layout;
+
+    Assert(m_dao);
+
+    license = m_localizedInfo.license;
+    if (!license.IsNull())
+        strLicense = DPL::ToUTF8String((*license));
+
+    href = m_localizedInfo.licenseHref;
+    if (!href.IsNull())
+        strHref = DPL::ToUTF8String((*href));
+
+    m_licenseInfo = new LicenseInfo();
+    if (!m_licenseInfo)
+        return;
+
+    if (!strLicense.empty() &&
+        strLicense.compare(lrepdf) != 0 &&
+        strLicense.compare(rlepdf) != 0 &&
+        strLicense.compare(lropdf) != 0 &&
+        strLicense.compare(rlopdf) != 0) {
+        m_licenseInfo->license = strLicense;
+    }
+
+    if (!strHref.empty()) {
+        m_licenseInfo->href = strHref;
+    }
+
+    addSeperator();
+
+    layout = elm_layout_add(m_bx);
+    if (!layout)
+        return;
+    elm_layout_theme_set(layout, "layout", "dialogue", "1text");
+    evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
+    evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0);
+    elm_object_part_text_set(layout, "elm.text", "License Information");
+
+    if (m_licenseInfo->license.empty() && m_licenseInfo->href.empty()) {
+        elm_object_signal_emit(layout, "elm,state,disabled", "elm");
+    } else {
+        m_licenseInfo->evasObj = layout;
+
+    evas_object_event_callback_add(layout,
+            EVAS_CALLBACK_MOUSE_DOWN,
+            _mouse_down,
+            NULL);
+    evas_object_event_callback_add(layout,
+            EVAS_CALLBACK_MOUSE_MOVE,
+            _mouse_move,
+            NULL);
+    evas_object_event_callback_add(layout,
+            EVAS_CALLBACK_MOUSE_UP,
+            _mouse_up_license,
+            m_licenseInfo);
+    }
+
+    elm_box_pack_end(m_bx, layout);
+    evas_object_show(layout);
+}
+
+void DetailView::clearDataCallback(void *data,
+        Evas_Object *obj,
+        void* event_info )
+{
+    //TODO : implementation here.
+    Evas_Object *popup = static_cast<Evas_Object *>(data);
+    evas_object_del(popup);
+}
+
+void DetailView::viewlicenseCallback(void *data,
+                                     Evas_Object *obj,
+                                     void *event_info)
+{
+    Evas_Object *popup;
+    Evas_Object *btn;
+    DetailData *detailData;
+
+    Elm_Object_Item *it;
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    Assert(data);
+    detailData = static_cast<DetailData *>(data);
+
+    popup = elm_popup_add(detailData->m_detailView->m_naviframe);
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_text_set(popup, detailData->m_subtitle.c_str());
+    btn = elm_button_add(popup);
+    elm_object_text_set(btn, "OK");
+    elm_object_part_content_set(popup, "button1", btn);
+    evas_object_smart_callback_add(btn, "clicked", closeCallback, popup);
+    evas_object_show(popup);
+}
+
+void DetailView::closeCallback(void *data,
+        Evas_Object *obj,
+        void *event_info)
+{
+    evas_object_del(static_cast<Evas_Object *>(data));
+}
+
+void DetailView::_mouse_down(void *data,
+        Evas *e,
+        Evas_Object *obj,
+        void *event_info)
+{
+    elm_object_signal_emit(obj, "elm,state,selected", "elm");
+}
+
+void DetailView::_mouse_move(void *data,
+        Evas *e,
+        Evas_Object *obj,
+        void *event_info)
+{
+    Evas_Event_Mouse_Move *event;
+    Evas_Coord ox, oy, ow, oh;
+
+    event = static_cast<Evas_Event_Mouse_Move*>(event_info);
+    if (!event)
+        return;
+
+    evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+
+    if (event->cur.canvas.x < ox || (ox + ow) < event->cur.canvas.x ||
+        event->cur.canvas.y < oy || (oy + oh) < event->cur.canvas.y) {
+        elm_object_signal_emit(obj, "elm,state,unselected", "elm");
+    }
+
+}
+
+void DetailView::_mouse_up_license(void *data,
+        Evas *e,
+        Evas_Object *obj,
+        void* event_info)
+{
+    Evas_Event_Mouse_Up *event;
+    Evas_Object *win;
+    Evas_Object *popup;
+    Evas_Object *box;
+    Evas_Object *web;
+    Evas_Object *btn;
+    Evas_Object *l_button;
+    Evas_Object *r_button;
+    LicenseInfo *licenseInfo;
+    Evas_Coord ox, oy, ow, oh;
+    std::string label;
+
+    licenseInfo = static_cast<LicenseInfo *>(data);
+    if (!licenseInfo)
+        return;
+
+    event = static_cast<Evas_Event_Mouse_Up*>(event_info);
+    if (!event)
+        return;
+
+    evas_object_geometry_get(licenseInfo->evasObj, &ox, &oy, &ow, &oh);
+    if (event->output.x < ox || (ox + ow) < event->canvas.x ||
+        event->output.y < oy || (oy + oh) < event->canvas.y) {
+        return;
+    }
+    elm_object_signal_emit(licenseInfo->evasObj, "elm,state,unselected", "elm");
+
+    win = static_cast<Evas_Object *>(ug_get_window());
+    if (!win)
+        return;
+
+    popup = elm_popup_add(win);
+    if (!popup)
+        return;
+
+    evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_part_text_set(popup, "title,text", "License Information");
+
+    label += licenseInfo->license.c_str();
+    if (!licenseInfo->href.empty()) {
+        if (!label.empty())
+            label += "<br>";
+        label += "More license, see <br>";
+        label += licenseInfo->href.c_str();
+    }
+    elm_object_part_text_set(popup, "default", label.c_str());
+    evas_object_show(popup);
+
+    l_button = elm_button_add(popup);
+    if (!l_button) {
+        evas_object_del(popup);
+        return;
+    }
+
+    evas_object_size_hint_align_set(l_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(l_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_text_set(l_button, "YES");
+    elm_object_part_content_set(popup, "button1", l_button);
+    evas_object_smart_callback_add(l_button,
+            "clicked",
+            viewlicenseCallback,
+            (void *)popup);
+    evas_object_show(l_button);
+
+    r_button = elm_button_add(popup);
+    if (!r_button) {
+        evas_object_del(popup);
+        return;
+    }
+
+    evas_object_size_hint_align_set(r_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(r_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_object_text_set(r_button, "NO");
+    elm_object_part_content_set(popup, "button2", r_button);
+    evas_object_smart_callback_add(r_button,
+            "clicked",
+            closeCallback,
+            (void *)popup);
+    evas_object_show(r_button);
+    elm_object_focus_allow_set(popup, EINA_TRUE);
+    elm_object_focus_set(popup, EINA_TRUE);
+}
+
+void DetailView::_mouse_up_save_login_info(void *data,
+        Evas */*e*/,
+        Evas_Object *obj,
+        void *event_info)
+{
+    Assert(obj && data && event_info);
+
+    Evas_Event_Mouse_Up *event;
+    Evas_Coord ox, oy, ow, oh;
+
+    event = static_cast<Evas_Event_Mouse_Up*>(event_info);
+    evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+
+    if (event->output.x < ox || (ox + ow) < event->output.x ||
+        event->output.y < oy || (oy + oh) < event->output.y) {
+        return;
+    }
+
+    DetailView *This = static_cast<DetailView *>(data);
+    elm_check_state_set(This->check_login, !elm_check_state_get(This->check_login));
+    elm_object_signal_emit(obj, "elm,state,unselected", "elm");
+}
+
+void DetailView::_mouse_up_clear_data(void *data,
+       Evas */*e*/,
+       Evas_Object *obj,
+       void *event_info)
+{
+    Evas_Event_Mouse_Up *event;
+    Evas_Coord ox, oy, ow, oh;
+    Evas_Object *popup;
+    Evas_Object *l_button;
+    Evas_Object *r_button;
+
+    event = static_cast<Evas_Event_Mouse_Up *>(event_info);
+    if (!event)
+        return;
+
+    evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+
+    if (event->output.x < ox || (ox + ow) < event->output.x ||
+            event->output.y < oy || (oy + oh) < event->output.y) {
+        return;
+    }
+
+    DetailView *This = static_cast<DetailView *>(data);
+
+    Assert(This->m_bx);
+    elm_object_signal_emit(obj, "elm,state,unselected", "elm");
+
+    popup = elm_popup_add(This->m_bx);
+    if(!popup)
+       return;
+    evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_part_text_set(popup, "default", "Do you want to clear data?");
+
+    l_button = elm_button_add(popup);
+    elm_object_text_set(l_button, "YES");
+    evas_object_smart_callback_add(l_button, "clicked", clearDataCallback, (void*)popup);
+    elm_object_part_content_set(popup, "button1", l_button);
+    evas_object_show(l_button);
+
+    r_button = elm_button_add(popup);
+    elm_object_text_set(r_button, "NO");
+    evas_object_smart_callback_add(r_button, "clicked", closeCallback, (void*)popup);
+    elm_object_part_content_set(popup, "button2", r_button);
+    evas_object_show(r_button);
+
+    evas_object_show(popup);
+}
+
+void DetailView::_mouse_up_advanced_settings(void* data,
+                                             Evas* /*e*/,
+                                             Evas_Object* obj,
+                                             void* eventInfo)
+{
+    Evas_Event_Mouse_Up *event;
+    Evas_Coord ox, oy, ow, oh;
+
+    event = static_cast<Evas_Event_Mouse_Up *>(eventInfo);
+    if (!event)
+        return;
+
+    evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+
+    if (event->output.x < ox || (ox + ow) < event->output.x ||
+        event->output.y < oy || (oy + oh) < event->output.y)
+    {
+        return;
+    }
+
+    elm_object_signal_emit(obj, "elm,state,unselected", "elm");
+    Assert(data);
+    DetailView* This = static_cast<DetailView*>(data);
+
+    This->m_advancedView.Reset(
+        new AdvancedView(This->m_naviframe, This->m_appID));
+    if (!This->m_advancedView->loadView()) {
+        This->m_advancedView.Reset();
+    }
+}
+
+void DetailView:: clearDataPopupCallback(void *data, Evas_Object *obj,
+       void *event_info)
+{
+    Evas_Object *popup;
+    Evas_Object *btn1;
+    Evas_Object *btn2;
+    DetailData *detailData;
+
+    Elm_Object_Item *it;
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    detailData = static_cast<DetailData *>(data);
+
+    popup = elm_popup_add(detailData->m_detailView->m_naviframe);
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_text_set(popup,"Do you want to clear data?");
+    btn1 = elm_button_add(popup);
+    elm_object_text_set(btn1, "OK");
+    elm_object_part_content_set(popup, "button1", btn1);
+    evas_object_smart_callback_add(btn1, "clicked", clearDataCallback, popup);
+    btn2 = elm_button_add(popup);
+    elm_object_text_set(btn2, "Cancel");
+    elm_object_part_content_set(popup, "button2", btn2);
+    evas_object_smart_callback_add(btn2, "clicked", closeCallback, popup);
+    evas_object_show(popup);
+}
+
+void DetailView::advancedSettingsCallback(void* data,
+                                             Evas_Object* obj,
+                                             void* eventInfo)
+{
+    DetailData *detailData;
+    Assert(data);
+
+    Elm_Object_Item *it;
+    it = static_cast<Elm_Object_Item *>(eventInfo);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    detailData = static_cast<DetailData *>(data);
+    detailData->m_detailView->m_advancedView.Reset(
+        new AdvancedView(detailData->m_detailView->m_naviframe,
+        detailData->m_detailView->m_appID));
+    if (!detailData->m_detailView->m_advancedView->loadView()) {
+        detailData->m_detailView->m_advancedView.Reset();
+    }
+}
+char *DetailView::getText(void *data,
+                        Evas_Object */*obj*/,
+                        const char *part)
+{
+    DetailData *detailData;
+    const char *str;
+
+    detailData = static_cast<DetailData *>(data);
+    Assert(detailData);
+    if (!strcmp(part, "elm.text"))
+        str = detailData->m_title.c_str();
+    else if (!strcmp(part, "elm.text.1"))
+        str = detailData->m_subtitle.c_str();
+    else if(!strcmp(part, "elm.text.2"))
+        str = detailData->m_title.c_str();
+    else
+        return NULL;
+    return strdup(str);
+}
+
+char *DetailView::getTitle(void *data,
+                        Evas_Object */*obj*/,
+                        const char *part)
+{
+    DetailData *detailData;
+    const char *str;
+
+    detailData = static_cast<DetailData *>(data);
+    Assert(detailData);
+
+    if (!strcmp(part, "elm.text"))
+        str = detailData->m_title.c_str();
+    else if (!strcmp(part, "elm.text.1"))
+        str = detailData->m_title.c_str();
+    else
+        str = "";
+    return strdup(str);
+}
+
+void DetailView::addDefInfo(Evas_Object *gl)
+{
+    DPL::OptionalString ver;
+
+    Assert(m_dao);
+
+    ver = m_dao->getVersion();
+    bindtextdomain("ug-webapp-common-efl", "/usr/ug/res/locale");
+    addTitleText(gl,D_("IDS_COM_BODY_DETAILS_NAME"),
+                 m_localizedInfo.name.IsNull() ? "" :
+                 DPL::ToUTF8String((*m_localizedInfo.name)).c_str());
+    addTitleText(gl,U_("IDS_ST_BODY_VERSION"), ver.IsNull() ? "" :
+                 DPL::ToUTF8String((*ver)).c_str());
+    addTitleText(gl,U_("IDS_ST_BODY_DOMAIN_SECURITY_STATUS"),
+                 m_dao->isTrusted() ? "Trusted" : "Untrusted");
+    addTitleText(gl,D_("IDS_COM_BODY_DESCRIPTION"),
+                 m_localizedInfo.description.IsNull() ? "" :
+                 DPL::ToUTF8String((*m_localizedInfo.description)).c_str());
+}
+
+void DetailView::addViewModes(Evas_Object *gl)
+{
+    DPL::String mode;
+    WrtDB::WindowModeList modes;
+
+    Assert(m_dao);
+    bindtextdomain("ug-webapp-common-efl", "/usr/ug/res/locale");
+    modes = m_dao->getWindowModes();
+    if (modes.size() > 0) {
+        FOREACH(it, modes)
+            mode += *it + L",";
+        /* remove comma */
+        mode.resize(mode.length() - 1);
+        /* FIXME: i18n */
+        addTitleText(gl,U_("IDS_WRT_BODY_VIEW_M_MODE"),
+            DPL::ToUTF8String(mode).c_str());
+    } else {
+        /* FIXME: i18n */
+      addTitleText(gl,U_("IDS_WRT_BODY_VIEW_M_MODE"), "");
+    }
+}
+
+void DetailView::addAuthorInfo(Evas_Object *gl)
+{
+    DPL::OptionalString name;
+    DPL::OptionalString email;
+    DPL::OptionalString homepage;
+
+    Assert(m_dao);
+    addTitle(gl,D_("IDS_COM_BODY_AUTHOR"));
+
+    name = m_dao->getAuthorName();
+    addTitleText(gl,D_("IDS_COM_BODY_DETAILS_NAME"),
+            name.IsNull() ? "" :
+            DPL::ToUTF8String((*name)).c_str());
+
+    email = m_dao->getAuthorEmail();
+    if (!email.IsNull())
+        addTitleText(gl,D_("IDS_COM_BODY_EMAIL"),
+                DPL::ToUTF8String((*email)).c_str());
+
+    homepage = m_dao->getAuthorHref();
+    /* FIXME: i18n */
+    if (!homepage.IsNull())
+        addTitleText(gl,"Homepage",
+                DPL::ToUTF8String((*homepage)).c_str());
+}
+
+void DetailView::addDepth(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    Assert(gl);
+
+    try {
+        itc.item_style = "dialogue/separator/21/with_line";
+        itc.func.text_get = NULL;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+        it = elm_genlist_item_append(gl,
+                                &itc,
+                                NULL,
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                NULL,
+                                NULL);
+        elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addTitle(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+
+    DetailData *detailData;
+    Assert(gl);
+    try {
+
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/title";
+    itc.func.text_get = getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addTitleText(
+    Evas_Object *gl, const char* title, const char* subtitle)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    DetailData *detailData;
+    Assert(gl);
+    try {
+    detailData = new DetailData(this,
+                              title,
+                              subtitle);
+    itc.item_style = "dialogue/2text.2";
+    itc.func.text_get =getText ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addLicenseInfo(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    try {
+        detailData = new DetailData(
+            this,
+            title,
+            m_localizedInfo.license.IsNull() ?
+            "" : DPL::ToUTF8String((*m_localizedInfo.license)).c_str());
+        itc.item_style = "dialogue/1text";
+        itc.func.text_get =getTitle ;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+
+        it = elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(detailData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     viewlicenseCallback,
+                                     static_cast<void *>(detailData));
+        if (m_localizedInfo.license.IsNull()) {
+            elm_object_item_disabled_set(it, EINA_TRUE);
+        }
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addClearData(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    try {
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get =getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            clearDataPopupCallback,
+                            static_cast<void *>(detailData));
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_ALWAYS);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addAdvancedSetting(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    try {
+        detailData = new DetailData(this,
+                                  title,
+                                  title);
+        itc.item_style = "dialogue/1text";
+        itc.func.text_get =getTitle ;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+        it = elm_genlist_item_append(gl,
+                                &itc,
+                                static_cast<void *>(detailData),
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                advancedSettingsCallback,
+                                static_cast<void *>(detailData));
+        elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_ALWAYS);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+Evas_Object *DetailView::loadView(void)
+{
+    Evas_Object *win;
+    resetBase();
+    try {
+        win = static_cast<Evas_Object *>(ug_get_window());
+        Assert(win);
+        m_gl = elm_genlist_add(m_naviframe);
+        elm_object_style_set(m_gl, "dialogue");
+
+        m_dao.Reset(new WrtDB::WidgetDAO(m_appID));
+        getLocalizedInfo();
+
+        if (!m_gl) {
+            evas_object_del(m_naviframe);
+            return NULL;
+        }
+        addDepth(m_gl);
+        addDefInfo(m_gl);
+        addViewModes(m_gl);
+        addAuthorInfo(m_gl);
+        bindtextdomain("ug-webapp-common-efl", "/usr/ug/res/locale");
+        if (!GlobalSettings::TestModeEnabled())
+            addLicenseInfo(m_gl,U_("IDS_WRT_BODY_LICENCE_INFORMATION"));
+        addClearData(m_gl, U_("IDS_ST_BODY_CLEAR_DATA"));
+        addAdvancedSetting(m_gl, U_("IDS_ST_HEADER_ADVANCED_SETTINGS"));
+        pushToNaviFrame();
+
+        return win;
+    } catch (const std::bad_alloc &) {
+         return NULL;
+    }
+}
+
+void DetailView::onBackBtnClicked(void *data,
+                                Evas_Object */*obj*/,
+                                void */*event_info*/)
+{
+    DetailView* This;
+
+    This= static_cast<DetailView *>(data);
+    Assert(This);
+    ug_destroy_me(This->m_ug);
+}
+bool DetailView::pushToNaviFrame(void)
+{
+    Evas_Object *btn;
+
+    Assert(m_naviframe);
+    btn = elm_button_add(m_naviframe);
+    if (!btn)
+        return false;
+
+    elm_object_style_set(btn, "naviframe/end_btn/default");
+    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
+    bindtextdomain("ug-webapp-common-efl", "/usr/ug/res/locale");
+    elm_naviframe_item_push(m_naviframe,
+                            U_("IDS_ST_BODY_MORE_DETAILS"),
+                            btn,
+                            NULL,
+                            m_gl,
+                            NULL);
+    return true;
+}
+
+DetailView::DetailView(Evas_Object* navi, ui_gadget_h ug, int appID) :
+    m_naviframe(navi),
+    m_bx(NULL),
+    m_appID(appID),
+    m_licenseInfo(NULL),
+    m_ug(ug)
+{
+    Assert(navi);
+    m_dao.Reset();
+}
+
+DetailView::~DetailView(void)
+{
+    if (m_licenseInfo)
+        delete m_licenseInfo;
+}
+}
diff --git a/webapp-detail/detailview.h b/webapp-detail/detailview.h
new file mode 100755 (executable)
index 0000000..0268fc4
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_
+
+#include <Evas.h>
+#include <ui-gadget.h>
+
+#undef None
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include <dpl/scoped_ptr.h>
+
+#include "view.h"
+
+namespace WebAppDetailSetting {
+
+class AdvancedView;
+
+typedef struct {
+    std::string license;
+    std::string href;
+    Evas_Object* evasObj;
+} LicenseInfo;
+
+class DetailView : public View
+{
+    enum WebkitVersion {
+        WEBKIT_VERSION_WK1,
+        WEBKIT_VERSION_WK2,
+        WEBKIT_VERSION_UNKNOWN
+    };
+
+    Evas_Object *m_naviframe;
+    Evas_Object *m_parent;
+    Evas_Object *m_bx;
+    Evas_Object *check_webkit;
+    Evas_Object *check_login;
+    Evas_Object *m_gl;
+    ui_gadget_h m_ug;
+    DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
+    WrtDB::WidgetLocalizedInfo m_localizedInfo;
+    int m_appID;
+    LicenseInfo *m_licenseInfo;
+    DPL::ScopedPtr<AdvancedView> m_advancedView;
+
+    void getLocalizedInfo(void);
+
+    void addField(const char *title);
+    void addField(const char *title, const char *str);
+    void addDefInfo(void);
+    void addViewModes(void);
+    void addAuthorInfo(void);
+    void addLicense(void);
+    void addSaveLoginInfo();
+    void addClearData();
+    void addAdvancedSettings();
+    void addSeperator();
+
+    static void clearDataCallback(void *data,
+            Evas_Object *obj,
+            void* event_info );
+    static void viewlicenseCallback(void *data,
+            Evas_Object *obj,
+            void *event_info);
+    static void closeCallback(void* data,
+            Evas_Object* obj,
+            void* event_info);
+
+    static void _mouse_down(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void* event_info);
+    static void _mouse_move(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void* event_info);
+    static void _mouse_up_license(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void* event_info);
+    static void _mouse_up_save_login_info(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void *event_info);
+    static void _mouse_up_clear_data(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void *event_info);
+    static void _mouse_up_advanced_settings(void *data,
+            Evas *e,
+            Evas_Object *obj,
+            void *event_info);
+    static void clearDataPopupCallback(void *data,
+            Evas_Object *obj,
+            void *event_info);
+    static void advancedSettingsCallback(void* data,
+                                             Evas_Object* obj,
+                                             void* eventInfo);
+    static char *getText(void *data,
+                        Evas_Object *obj,
+                        const char *part);
+    static char *getTitle(void *data,
+                        Evas_Object *obj,
+                        const char *part);
+    void addDefInfo(Evas_Object *gl);
+    void addViewModes(Evas_Object *gl);
+    void addAuthorInfo(Evas_Object *gl);
+    void addDepth(Evas_Object *gl);
+    void addTitle(Evas_Object *gl, const char* title);
+    void addTitleText(
+        Evas_Object *gl, const char* title, const char* subtitle);
+    void addLicenseInfo(Evas_Object *gl, const char* title);
+    void addClearData(Evas_Object *gl, const char* title);
+    void addAdvancedSetting(Evas_Object *gl, const char* title);
+    static void onBackBtnClicked(void *data,
+                                    Evas_Object *obj,
+                                    void *event_info);
+    bool pushToNaviFrame(void);
+  public:
+    DetailView(Evas_Object* naviframe, ui_gadget_h ug, int appID);
+    ~DetailView(void);
+
+    Evas_Object *loadView(void);
+};
+
+class DetailData
+{
+  public:
+    DetailView *m_detailView;
+    std::string m_title;
+    std::string m_subtitle;
+    int m_dataType;
+    DetailData(DetailView *detailView,
+              const char *title,
+              const char *subtitle) :
+        m_detailView(detailView),
+        m_title(title),
+        m_subtitle(subtitle) { };
+
+    ~DetailData(void) { };
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ */
diff --git a/webapp-detail/edc/CMakeLists.txt b/webapp-detail/edc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..abe79c0
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# Copyright 2012  Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://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.
+#
+
+ADD_CUSTOM_TARGET(${TARGET_UG_EDJ}
+               COMMAND edje_cc
+               ${CMAKE_CURRENT_SOURCE_DIR}/main.edc ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ}
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/main.edc
+)
+ADD_DEPENDENCIES(${TARGET_UG_DETAIL_LIB} ${TARGET_UG_EDJ})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ} DESTINATION ${EDJDIR})
diff --git a/webapp-detail/edc/defs.h b/webapp-detail/edc/defs.h
new file mode 100644 (file)
index 0000000..4a9799a
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_
+
+#define GRP_CONTENT "content"
+#define PART_DETAIL "swallow.detail"
+#define PART_PERM "swallow.permission"
+#define SIG_SHOW_PERM "show,permission"
+#define SIG_SHOW_DETAIL "show,detail"
+#define SRC_PROG "prog"
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_ */
diff --git a/webapp-detail/edc/main.edc b/webapp-detail/edc/main.edc
new file mode 100644 (file)
index 0000000..4880c18
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include "defs.h"
+
+collections {
+       group {
+               name, GRP_CONTENT;
+
+               parts {
+                       part {
+                               name, PART_DETAIL;
+                               type, SWALLOW;
+                               description {
+                                       state, "default" 0.0;
+                               }
+                               description {
+                                       state, "permission" 0.0;
+                                       inherit, "default" 0.0;
+                                       rel1.relative, -1.0 0.0;
+                                       rel2.relative, 0.0 1.0;
+                               }
+                       }
+
+                       part {
+                               name, PART_PERM;
+                               type, SWALLOW;
+                               description {
+                                       state, "default" 0.0;
+                                       rel1.relative, 1.0 0.0;
+                                       rel2.relative, 2.0 1.0;
+                               }
+                               description {
+                                       state, "permission" 0.0;
+                                       inherit, "default" 0.0;
+                                       rel1.relative, 0.0 0.0;
+                                       rel2.relative, 1.0 1.0;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name, "show_detail";
+                               signal, SIG_SHOW_DETAIL;
+                               source, SRC_PROG;
+                               action, STATE_SET "default" 0.0;
+                               target, PART_DETAIL;
+                               target, PART_PERM;
+                       }
+                       program {
+                               name, "show_permission";
+                               signal, SIG_SHOW_PERM;
+                               source, SRC_PROG;
+                               action, STATE_SET "permission" 0.0;
+                               target, PART_DETAIL;
+                               target, PART_PERM;
+                       }
+               }
+       }
+}
diff --git a/webapp-detail/exceptionsview.cpp b/webapp-detail/exceptionsview.cpp
new file mode 100644 (file)
index 0000000..867bc05
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include "exceptionsview.h"
+
+#include <vector>
+#include <string>
+#include <cstring>
+#include <Elementary.h>
+
+#include <dpl/foreach.h>
+#include <dpl/assert.h>
+#include <dpl/string.h>
+#include <wrt-commons/security-origin-dao/security_origin_dao.h>
+
+//#include <ui-gadget.h>
+#include "util.h"
+
+namespace WebAppDetailSetting {
+
+namespace  {
+// ELM
+const char* const ELM_PART_TEXT_1 = "elm.text.1";
+const char* const ELM_PART_TEXT_2 = "elm.text.2";
+const char* const ELM_PART_TEXT_3 = "elm.text.3";
+const char* const ELM_PART_DEFAULT = "default";
+const char* const ELM_PART_BUTTON1 = "button1";
+const char* const ELM_PART_BUTTON2 = "button2";
+const char* const ELM_WIDGET_TYPE_POPUP = "elm_popup";
+const char* const ELM_GENLIST_ITEM_CLASS_STYLE_DEFAULT = "default";
+const char* const ELM_GENLIST_ITEM_CLASS_STYLE_3TEXT_1ICON = "3text.1icon";
+const char* const EVAS_SMART_CALLBACK_CLICKED = "clicked";
+// TEXT
+std::vector<std::string> featureText =
+    {"Geolocation", "Web Notification", "Web database", "FileSystem API"};
+std::vector<std::string> resultText = {"Allow", "Deny"};
+const unsigned int INDEX_TEXT_ALLOW = 0;
+const unsigned int INDEX_TEXT_DENY = 1;
+const char* const SCHEME_FILE = "file";
+const char* const TEXT_LOCAL = "local";
+const char* const TEXT_EMPTY = "No exceptions data";
+const char* const TEXT_POPUP_CONTENT = "Do you want to remove data?";
+const char* const TEXT_POPUP_L_BUTTON = "YES";
+const char* const TEXT_POPUP_R_BUTTON = "NO";
+const char* const TEXT_NAVIFRAME_TITLE = "Exceptions Settings";
+
+}
+
+ExceptionsView::ExceptionsView(Evas_Object* navi, int appID) :
+    m_naviframe(navi)
+{
+    m_securityOriginDao =
+        SecurityOriginDB::SecurityOriginDAOPtr(
+            new SecurityOriginDB::SecurityOriginDAO(appID));
+}
+
+ExceptionsView::~ExceptionsView(void)
+{
+}
+
+bool ExceptionsView::loadView(void)
+{
+    using namespace SecurityOriginDB;
+    resetBase();
+
+    Evas_Object* genlist = NULL;
+    genlist = elm_genlist_add(m_naviframe);
+
+    SecurityOriginDB::SecurityOriginDataList securityOriginDataList =
+        m_securityOriginDao->getSecurityOriginDataList();
+
+    if (securityOriginDataList.empty()) {
+        loadEmptyView(genlist);
+    } else {
+        loadExceptionsSettingsView(genlist, securityOriginDataList);
+    }
+
+    elm_naviframe_item_push(m_naviframe,
+                            TEXT_NAVIFRAME_TITLE,
+                            NULL,
+                            NULL,
+                            genlist,
+                            NULL);
+    resetBase(genlist);
+    return true;
+}
+
+void ExceptionsView::loadEmptyView(Evas_Object* genlist)
+{
+    using namespace SecurityOriginDB;
+
+    Assert(genlist);
+    elm_genlist_block_count_set(genlist, 1);
+
+    // create Security Settings menu
+    static Elm_Genlist_Item_Class itcData = {0,};
+    itcData.item_style = ELM_GENLIST_ITEM_CLASS_STYLE_DEFAULT;
+    itcData.func.text_get = getEmptyTextCallback;
+    itcData.func.content_get = NULL;
+    itcData.func.state_get = NULL;
+    itcData.func.del = NULL;
+
+    Elm_Object_Item* emptyItem =
+        elm_genlist_item_append(genlist,
+                                &itcData,
+                                NULL,
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                NULL,
+                                NULL);
+    elm_genlist_item_select_mode_set(emptyItem,
+                                     ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void ExceptionsView::loadExceptionsSettingsView(
+    Evas_Object* genlist,
+    SecurityOriginDB::SecurityOriginDataList securityOriginDataList)
+{
+    using namespace SecurityOriginDB;
+
+    Assert(genlist);
+    elm_genlist_block_count_set(genlist, securityOriginDataList.size());
+    // create Security Settings menu
+    static Elm_Genlist_Item_Class itcExceptionsSettings = {0,};
+    FOREACH(it, securityOriginDataList) {
+        itcExceptionsSettings.item_style =
+            ELM_GENLIST_ITEM_CLASS_STYLE_3TEXT_1ICON;
+        itcExceptionsSettings.func.text_get = getTextCallback;
+        itcExceptionsSettings.func.content_get = NULL;
+        itcExceptionsSettings.func.state_get = NULL;
+        itcExceptionsSettings.func.del = delCallback;
+
+        ExceptionsSettingsData* data =
+            new ExceptionsSettingsData(m_securityOriginDao.get(),
+                                       *(*it));
+        elm_genlist_item_append(genlist,
+                                &itcExceptionsSettings,
+                                static_cast<void*>(data),
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                selectedCallback,
+                                NULL);
+    }
+}
+
+char* ExceptionsView::getEmptyTextCallback(
+    void* /*data*/,
+    Evas_Object* /*obj*/,
+    const char* /*part*/)
+{
+    return strdup(TEXT_EMPTY);
+}
+
+char* ExceptionsView::getTextCallback(
+    void* data,
+    Evas_Object* obj,
+    const char* part)
+{
+    using namespace SecurityOriginDB;
+    Assert(data);
+    ExceptionsSettingsData* settingsData =
+        static_cast<ExceptionsSettingsData*>(data);
+    Assert(part);
+    std::string partStr = part;
+
+    if (partStr == ELM_PART_TEXT_1) {
+        // display feature text
+        return strdup(
+            featureText[settingsData->m_originData.feature].c_str());
+    } else if (partStr == ELM_PART_TEXT_2) {
+        // display host text
+        if (DPL::ToUTF8String(settingsData->m_originData.origin.scheme) ==
+                SCHEME_FILE)
+        {
+            // in case of file scheme, display "local"
+            return strdup(TEXT_LOCAL);
+        } else {
+            return strdup(
+                DPL::ToUTF8String(
+                    settingsData->m_originData.origin.host).c_str());
+        }
+    } else if (partStr == ELM_PART_TEXT_3) {
+        // display result text
+        Result result =
+            settingsData->m_originDao->getResult(
+                settingsData->m_originData);
+        if (result == RESULT_ALLOW_ALWAYS) {
+            return strdup(resultText[INDEX_TEXT_ALLOW].c_str());
+        } else if (result == RESULT_DENY_ALWAYS) {
+            return strdup(resultText[INDEX_TEXT_DENY].c_str());
+        } else {
+            return NULL;
+        }
+    }
+
+    return NULL;
+}
+
+void ExceptionsView::delCallback(void* data, Evas_Object* /*obj*/)
+{
+    Assert(data);
+    ExceptionsSettingsData* exceptionsSettingsData =
+        static_cast<ExceptionsSettingsData*>(data);
+    delete exceptionsSettingsData;
+}
+
+void ExceptionsView::selectedCallback(
+    void* data,
+    Evas_Object* obj,
+    void* eventInfo)
+{
+    Assert(eventInfo);
+    Elm_Object_Item* item = static_cast<Elm_Object_Item*>(eventInfo);
+    elm_genlist_item_selected_set(item, EINA_FALSE);
+
+    // create popup
+    Evas_Object* topObject = elm_object_top_widget_get(obj);
+
+    Evas_Object* popup = elm_popup_add(topObject);
+    if (!popup) {
+        return;
+    }
+    evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_size_hint_weight_set(popup,
+                                     EVAS_HINT_EXPAND,
+                                     EVAS_HINT_EXPAND);
+    elm_object_part_text_set(popup, ELM_PART_DEFAULT, TEXT_POPUP_CONTENT);
+
+    Evas_Object* lButton = elm_button_add(popup);
+    elm_object_text_set(lButton, TEXT_POPUP_L_BUTTON);
+    evas_object_smart_callback_add(lButton,
+                                   EVAS_SMART_CALLBACK_CLICKED,
+                                   removeItemCallback,
+                                   static_cast<void*>(item));
+    elm_object_part_content_set(popup, ELM_PART_BUTTON1, lButton);
+    evas_object_show(lButton);
+
+    Evas_Object* rButton = elm_button_add(popup);
+    elm_object_text_set(rButton, TEXT_POPUP_R_BUTTON);
+    evas_object_smart_callback_add(rButton,
+                                   EVAS_SMART_CALLBACK_CLICKED,
+                                   closePopupCallback,
+                                   static_cast<void*>(popup));
+    elm_object_part_content_set(popup, ELM_PART_BUTTON2, rButton);
+    evas_object_show(rButton);
+    evas_object_show(popup);
+}
+
+void ExceptionsView::removeItemCallback(
+    void* data,
+    Evas_Object* obj,
+    void* eventInfo)
+{
+    Assert(data);
+    Elm_Object_Item* item = static_cast<Elm_Object_Item*>(data);
+    ExceptionsSettingsData* settingsData =
+        static_cast<ExceptionsSettingsData*>(elm_object_item_data_get(item));
+    Assert(settingsData);
+
+    // remove data in the security origin dao
+    settingsData ->m_originDao->removeSecurityOriginData(
+        settingsData->m_originData);
+
+    // remove item in the genlist
+    elm_object_item_del(item);
+
+    // remove popup
+    Evas_Object* popup = obj;
+    const char* type = elm_object_widget_type_get(popup);
+    while (type != NULL && strcmp(type, ELM_WIDGET_TYPE_POPUP)) {
+        popup = elm_object_parent_widget_get(popup);
+        type = elm_object_widget_type_get(popup);
+    }
+    evas_object_del(popup);
+}
+
+void ExceptionsView::closePopupCallback(
+    void* data,
+    Evas_Object* /*obj*/,
+    void* /*eventInfo*/)
+{
+    Assert(data);
+    evas_object_del(static_cast<Evas_Object*>(data));
+}
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/exceptionsview.h b/webapp-detail/exceptionsview.h
new file mode 100644 (file)
index 0000000..042bd19
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_EXCEPTIONSVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_EXCEPTIONSVIEW_H_
+
+#include <Evas.h>
+
+#undef None
+#include <memory>
+#include <wrt-commons/security-origin-dao/security_origin_dao.h>
+#include <wrt-commons/security-origin-dao/security_origin_dao_types.h>
+
+#include "view.h"
+
+namespace SecurityOriginDB {
+class SecurityOriginDAO;
+struct SecurityOriginData;
+}
+
+namespace WebAppDetailSetting {
+
+class ExceptionsView : public View
+{
+  public:
+    ExceptionsView(Evas_Object *naviframe, int appID);
+    ~ExceptionsView(void);
+
+    bool loadView(void);
+    void loadEmptyView(Evas_Object* genlist);
+    void loadExceptionsSettingsView(
+        Evas_Object* genlist,
+        SecurityOriginDB::SecurityOriginDataList securityOriginDataList);
+
+  private:
+    Evas_Object *m_naviframe;
+    int m_appID;
+    SecurityOriginDB::SecurityOriginDAOPtr m_securityOriginDao;
+
+    //Genlist
+    static char* getEmptyTextCallback(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static char* getTextCallback(
+        void* data,
+        Evas_Object* obj,
+        const char* part);
+    static void delCallback(
+        void* data,
+        Evas_Object* obj);
+    static void selectedCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+
+    //Popup
+    static void removeItemCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+    static void closePopupCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+};
+
+class ExceptionsSettingsData
+{
+  public:
+    SecurityOriginDB::SecurityOriginDAO* m_originDao;
+    SecurityOriginDB::SecurityOriginData m_originData;
+
+    ExceptionsSettingsData(
+        SecurityOriginDB::SecurityOriginDAO* dao,
+        SecurityOriginDB::SecurityOriginData data) :
+            m_originDao(dao),
+            m_originData(data)
+    {
+    };
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_EXCEPTIONSVIEW_H_ */
diff --git a/webapp-detail/feature.h b/webapp-detail/feature.h
new file mode 100755 (executable)
index 0000000..83568d6
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include <ace-settings/ace_api_settings.h>
+
+namespace WebAppDetailSetting {
+
+class Feature
+{
+    std::string m_name;
+    std::string m_uri;
+    ace_preference_t m_perm;
+
+  public:
+    Feature(const char *name = NULL, const char *uri = NULL) :
+        m_perm(ACE_PREFERENCE_DEFAULT)
+    {
+        if (name)
+            m_name.assign(name);
+        if (uri)
+            m_uri.assign(uri);
+    }
+    void setPerm(ace_preference_t perm) { m_perm = perm; }
+
+    std::string& getName(void) { return m_name; }
+    std::string& getUri(void) { return m_uri; }
+    ace_preference_t getPerm(void) { return m_perm; }
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_ */
diff --git a/webapp-detail/mainview.cpp b/webapp-detail/mainview.cpp
new file mode 100755 (executable)
index 0000000..640debc
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+#include <dpl/assert.h>
+
+#include "mainview.h"
+#include "edc/defs.h"
+#include "util.h"
+
+namespace WebAppDetailSetting {
+
+void MainView::onBackBtnClicked(void *data,
+                                Evas_Object */*eo*/,
+                                void */*event_info*/)
+{
+    MainView *mainView;
+
+    mainView = static_cast<MainView *>(data);
+    Assert(mainView);
+    ug_destroy_me(mainView->getUG());
+}
+
+void MainView::onSegCtrlChanged(void *data,
+                                Evas_Object */*eo*/,
+                                void *event_info)
+{
+    MainView *mainView;
+    Evas_Object *subCtnt;
+    Elm_Object_Item *it;
+
+    mainView = static_cast<MainView *>(data);
+    Assert(mainView);
+    it = reinterpret_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+
+    subCtnt = mainView->getSubCtnt();
+    if (!subCtnt)
+        return;
+
+    if (it == mainView->getSegCtrlDetail())
+        elm_object_signal_emit(subCtnt,
+                SIG_SHOW_DETAIL, SRC_PROG);
+    else if (it == mainView->getSegCtrlPerm())
+        elm_object_signal_emit(subCtnt,
+                SIG_SHOW_PERM, SRC_PROG);
+}
+
+Evas_Object *MainView::createToolBar(Evas_Object *parent)
+{
+    Evas_Object *toolBar;
+    Evas_Object *segCtrl;
+    Elm_Object_Item *it;
+
+    toolBar = elm_toolbar_add(parent);
+    if (!toolBar)
+        return NULL;
+    elm_object_style_set(toolBar, "naviframe");
+    elm_toolbar_shrink_mode_set(toolBar, ELM_TOOLBAR_SHRINK_EXPAND);
+    elm_toolbar_select_mode_set(toolBar, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+    segCtrl = elm_segment_control_add(toolBar);
+    if (!segCtrl) {
+        evas_object_del(toolBar);
+        return NULL;
+    }
+
+    m_segCtrlDetail = elm_segment_control_item_add(segCtrl,
+                                                   NULL,
+                                                   D_("IDS_COM_BODY_DETAILS"));
+    /* FIXME: i18n */
+    m_segCtrlPerm = elm_segment_control_item_add(segCtrl, NULL, "Permissions");
+    elm_segment_control_item_selected_set(m_segCtrlDetail, EINA_TRUE);
+    it = elm_toolbar_item_append(toolBar, NULL, NULL, NULL, NULL);
+    elm_object_item_part_content_set(it, "object", segCtrl);
+    evas_object_smart_callback_add(segCtrl, "changed", onSegCtrlChanged, this);
+
+    return toolBar;
+}
+
+Evas_Object *MainView::createContent(Evas_Object *parent)
+{
+    Evas_Object *nf;
+
+    Assert(parent);
+    nf = elm_naviframe_add(parent);
+    if (!nf)
+    return NULL;
+
+    try {
+    m_detail.Reset(new DetailView(nf, m_ug, m_appID));
+    if (!m_detail->loadView())
+        goto del_list;
+    return nf;
+
+    } catch (const std::bad_alloc &) {
+    m_detail.Reset();
+    goto del_nf;
+    }
+
+    del_list:
+    m_detail.Reset();
+    del_nf:
+    evas_object_del(nf);
+    return NULL;
+}
+
+Evas_Object *MainView::loadView(void)
+{
+    Evas_Object *ly;
+    Evas_Object *eo;
+    Evas_Object *parent;
+
+    Assert(m_ug);
+    resetBase();
+
+    parent = static_cast<Evas_Object *>(ug_get_parent_layout(m_ug));
+    Assert(parent);
+
+    ly = elm_layout_add(parent);
+    if (!ly)
+        return NULL;
+    elm_layout_theme_set(ly, "layout", "application", "default");
+
+    eo = elm_bg_add(ly);
+    if (!eo)
+        goto del_ly;
+    elm_object_part_content_set(ly, "elm.swallow.bg", eo);
+
+    eo = createContent(ly);
+    if (!eo)
+        goto del_ly;
+    elm_object_part_content_set(ly, "elm.swallow.content", eo);
+
+    resetBase(ly);
+
+    return ly;
+
+del_ly:
+    evas_object_del(ly);
+
+    return NULL;
+}
+
+MainView::MainView(ui_gadget_h ug, int appId) :
+    m_ug(ug),
+    m_appID(appId),
+    m_subCtnt(NULL),
+    m_segCtrlDetail(NULL),
+    m_segCtrlPerm(NULL)
+{
+    Assert(ug);
+
+    m_detail.Reset();
+    m_perm.Reset();
+}
+
+MainView::~MainView(void)
+{
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/mainview.h b/webapp-detail/mainview.h
new file mode 100644 (file)
index 0000000..1063c10
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_
+
+#include <Evas.h>
+#include <ui-gadget.h>
+#include <dpl/scoped_ptr.h>
+
+#include "detailview.h"
+#include "permview.h"
+#include "view.h"
+
+namespace WebAppDetailSetting {
+
+class MainView : public View
+{
+    ui_gadget_h m_ug;
+    int m_appID;
+    Evas_Object *m_subCtnt;
+    DPL::ScopedPtr<DetailView> m_detail;
+    DPL::ScopedPtr<PermView> m_perm;
+    Elm_Object_Item *m_segCtrlDetail;
+    Elm_Object_Item *m_segCtrlPerm;
+
+    static void onBackBtnClicked(void *data,
+                                 Evas_Object *eo,
+                                 void *event_info);
+    static void onSegCtrlChanged(void *data,
+                                 Evas_Object *eo,
+                                 void *event_info);
+
+    Evas_Object *createContent(Evas_Object *parent);
+    Evas_Object *createToolBar(Evas_Object *parent);
+
+  public:
+    MainView(ui_gadget_h ug, int appId);
+    ~MainView(void);
+
+    Evas_Object *loadView(void);
+    ui_gadget_h getUG(void) { return m_ug; }
+    Evas_Object *getSubCtnt(void) { return m_subCtnt; }
+    Elm_Object_Item *getSegCtrlDetail(void) { return m_segCtrlDetail; }
+    Elm_Object_Item *getSegCtrlPerm(void) { return m_segCtrlPerm; }
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_ */
diff --git a/webapp-detail/permview.cpp b/webapp-detail/permview.cpp
new file mode 100755 (executable)
index 0000000..896ce10
--- /dev/null
@@ -0,0 +1,550 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Elementary.h>
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include <dpl/foreach.h>
+#include <dpl/assert.h>
+
+#include "permview.h"
+#include "wac_feature.h"
+#include "tizen_feature.h"
+#include "util.h"
+
+namespace WebAppDetailSetting {
+
+void PermView::onFeatureClicked(void */*data*/,
+                                Evas_Object */*obj*/,
+                                void *event_info)
+{
+    Elm_Object_Item *it;
+
+    it = static_cast<Elm_Object_Item*>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    elm_genlist_item_expanded_set(it, !elm_genlist_item_expanded_get(it));
+}
+
+void PermView::onPermClicked(void *data,
+                             Evas_Object */*obj*/,
+                             void *event_info)
+{
+    PermData *permData;
+    FeatureData *featureData;
+    Elm_Object_Item *it;
+    Elm_Object_Item *parent_it;
+
+    it = static_cast<Elm_Object_Item*>(event_info);
+    Assert(it);
+    permData = static_cast<PermData *>(data);
+    Assert(permData);
+    featureData = permData->m_featureData;
+    Assert(featureData);
+    ace_set_widget_resource_preference(
+            featureData->m_appID,
+            const_cast<char *>(featureData->m_feature->getUri().c_str()),
+            permData->m_type);
+    ace_preference_t perm;
+    ace_get_widget_resource_preference(
+        featureData->m_appID,
+        const_cast<char *>(featureData->m_feature->getUri().c_str()),
+        &perm);
+    featureData->m_feature->setPerm(perm);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    elm_genlist_item_update(it);
+    parent_it = elm_genlist_item_parent_get(it);
+    if (parent_it)
+        elm_genlist_item_update(parent_it);
+}
+
+void PermView::onExpanded(void */*data*/, Evas_Object *obj, void *event_info)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    Elm_Object_Item *newIt;
+    PermData *permData;
+    FeatureData *featureData;
+
+    Assert(obj && event_info);
+    it = static_cast<Elm_Object_Item *>(event_info);
+    featureData = static_cast<FeatureData *>(elm_object_item_data_get(it));
+    Assert(featureData);
+
+    itc.item_style = "dialogue/1text.1icon.2/expandable2";
+    itc.func.text_get = getPermStr;
+    itc.func.content_get = getPermRadio;
+    itc.func.state_get = NULL;
+    itc.func.del = delPermData;
+
+    try {
+        permData = new PermData(featureData, ACE_PREFERENCE_DENY);
+        newIt = elm_genlist_item_append(obj,
+                                        &itc,
+                                        permData,
+                                        it,
+                                        ELM_GENLIST_ITEM_NONE,
+                                        onPermClicked,
+                                        permData);
+        if (!newIt)
+            delete permData;
+
+        permData = new PermData(featureData, ACE_PREFERENCE_DENY);
+        newIt = elm_genlist_item_append(obj,
+                                        &itc,
+                                        permData,
+                                        it,
+                                        ELM_GENLIST_ITEM_NONE,
+                                        onPermClicked,
+                                        permData);
+        if (!newIt)
+            delete permData;
+
+    } catch (const std::bad_alloc &) {
+    }
+
+}
+
+void PermView::onContracted(void */*data*/,
+                            Evas_Object */*obj*/,
+                            void *event_info)
+{
+    Elm_Object_Item *it;
+
+    Assert(event_info);
+    it = static_cast<Elm_Object_Item *>(event_info);
+    elm_genlist_item_subitems_clear(it);
+
+}
+char *PermView::getPermStr(void *data,
+                           Evas_Object */*obj*/,
+                           const char */*part*/)
+{
+    PermData *permData;
+
+    Assert(data);
+    permData = static_cast<PermData *>(data);
+    switch (permData->m_type) {
+        case ACE_PREFERENCE_DENY:
+            /* FIXME: i18n */
+            return strdup("Deny");
+        case ACE_PREFERENCE_DEFAULT:
+        default:
+            /* FIXME: i18n */
+            return strdup("Default");
+    }
+
+    return NULL;
+}
+
+Evas_Object *PermView::getPermRadio(void *data,
+                                    Evas_Object */*obj*/,
+                                    const char */*part*/)
+{
+    PermData *permData;
+    FeatureData *featureData;
+    Evas_Object *radio;
+    Evas_Object *radio_grp;
+    int type;
+
+    Assert(data);
+    permData = static_cast<PermData *>(data);
+    featureData = permData->m_featureData;
+    Assert(featureData);
+
+    radio_grp = featureData->m_rg;
+    Assert(radio_grp);
+    radio = elm_radio_add(radio_grp);
+    if (!radio)
+        return NULL;
+
+    type = static_cast<int>(permData->m_type);
+    elm_radio_state_value_set(radio, type);
+    elm_radio_group_add(radio, radio_grp);
+    if (permData->m_type == featureData->m_feature->getPerm())
+        elm_radio_value_set(radio, type);
+
+    return radio;
+}
+
+void PermView::delPermData(void *data, Evas_Object */*obj*/)
+{
+    PermData *permData;
+
+    permData = static_cast<PermData *>(data);
+    delete permData;
+}
+
+char *PermView::getFeatureTitle(void */*data*/,
+                                Evas_Object */*obj*/,
+                                const char */*part*/)
+{
+    const char *title;
+
+    /* FIXME: i18n */
+    title = "Features";
+
+    return strdup(title);
+}
+
+char *PermView::getFeatureStr(void *data,
+                              Evas_Object */*obj*/,
+                              const char */*part*/)
+{
+    const char *str;
+    FeatureData *featureData;
+
+    featureData = static_cast<FeatureData *>(data);
+    if (!featureData)
+        return NULL;
+
+    str = featureData->m_feature->getName().c_str();
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+char *PermView::getFeatureStrWithPerm(void *data,
+                                      Evas_Object */*obj*/,
+                                      const char *part)
+{
+    const char *str;
+    FeatureData *featureData;
+
+    featureData = static_cast<FeatureData *>(data);
+    if (!featureData)
+        return NULL;
+
+    str = NULL;
+    if (!strcmp(part, "elm.text.1")) {
+        str = featureData->m_feature->getName().c_str();
+    } else if (!strcmp(part, "elm.text.2")) {
+
+        switch (featureData->m_feature->getPerm()) {
+        case ACE_PREFERENCE_DENY:
+            /* FIXME: i18n */
+            str = "Deny";
+            break;
+        case ACE_PREFERENCE_DEFAULT:
+        default:
+            /* FIXME: i18n */
+            str = "Default";
+            break;
+        }
+    }
+
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+void PermView::delFeatureData(void *data, Evas_Object */*obj*/)
+{
+    FeatureData *featureData;
+
+    featureData = static_cast<FeatureData *>(data);
+    if (featureData) {
+        if (featureData->m_rg)
+            evas_object_del(featureData->m_rg);
+        delete featureData;
+    }
+}
+
+char *PermView::getUriTitle(void */*data*/,
+                            Evas_Object */*obj*/,
+                            const char */*part*/)
+{
+    const char *title;
+
+    /* FIXME: i18n */
+    title = "URI";
+
+    return strdup(title);
+}
+
+char *PermView::getUriStr(void *data,
+                          Evas_Object */*obj*/,
+                          const char */*part*/)
+{
+    const char *str;
+    UriData *uriData;
+
+    uriData = static_cast<UriData *>(data);
+    if (!uriData)
+        return NULL;
+
+    str = uriData->m_uri.c_str();
+    if (!str)
+        return NULL;
+
+    return strdup(str);
+}
+
+void PermView::delUriData(void *data, Evas_Object */*obj*/)
+{
+    UriData *uriData;
+
+    uriData = static_cast<UriData*>(data);
+    delete uriData;
+}
+
+void PermView::addFeatureTitle(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+    itc.item_style = "dialogue/title";
+    itc.func.text_get = getFeatureTitle;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    elm_genlist_item_append(gl,
+                            &itc,
+                            NULL,
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+}
+
+void PermView::addFeatureWithPerm(Evas_Object *gl, int idx)
+{
+    static Elm_Genlist_Item_Class itc;
+    FeatureData *featureData;
+    Elm_Object_Item *it;
+    Evas_Object *rg;
+
+    Assert(gl);
+    itc.item_style = "dialogue/2text.3/expandable";
+    itc.func.text_get = getFeatureStrWithPerm;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = delFeatureData;
+
+    rg = elm_radio_add(gl);
+    if (!rg)
+        return;
+
+    try {
+        featureData = new FeatureData(&m_featureMap[idx], m_appID, rg);
+        it = elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(featureData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_TREE,
+                                     onFeatureClicked,
+                                     NULL);
+        if (!it) {
+            delete featureData;
+            return;
+        }
+    } catch (const std::bad_alloc &) {
+        evas_object_del(rg);
+    }
+}
+
+void PermView::addFeature(Evas_Object *gl, int idx)
+{
+    static Elm_Genlist_Item_Class itc;
+    FeatureData *featureData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get = getFeatureStr;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = delFeatureData;
+
+    try {
+        featureData = new FeatureData(&m_featureMap[idx], m_appID);
+        it = elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(featureData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     NULL,
+                                     NULL);
+        if (!it) {
+            delete featureData;
+            return;
+        }
+        elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void PermView::addFeatureList(Evas_Object *gl)
+{
+    std::map<int, Feature>::iterator it;
+
+    if (m_featureMap.empty())
+        return;
+
+    addFeatureTitle(gl);
+    switch (m_appType) {
+    case WrtDB::APP_TYPE_WAC20:
+        for (it = m_featureMap.begin(); it != m_featureMap.end(); it++)
+            addFeatureWithPerm(gl, it->first);
+        break;
+    case WrtDB::APP_TYPE_TIZENWEBAPP:
+        for (it = m_featureMap.begin(); it != m_featureMap.end(); it++)
+            addFeature(gl, it->first);
+        break;
+    default:
+        break;
+    }
+
+    evas_object_smart_callback_add(gl, "expanded", onExpanded, NULL);
+    evas_object_smart_callback_add(gl, "contracted", onContracted, NULL);
+}
+
+void PermView::addUriTitle(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+
+    Assert(gl);
+    itc.item_style = "dialogue/title";
+    itc.func.text_get = getUriTitle;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    elm_genlist_item_append(gl,
+                            &itc,
+                            NULL,
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+}
+
+void PermView::addUri(Evas_Object *gl, DPL::String &uri)
+{
+    UriData *uriData;
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get = getUriStr;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = delUriData;
+
+    try {
+        uriData = new UriData(DPL::ToUTF8String(uri));
+        it = elm_genlist_item_append(gl,
+                                     &itc,
+                                     static_cast<void *>(uriData),
+                                     NULL,
+                                     ELM_GENLIST_ITEM_NONE,
+                                     NULL,
+                                     NULL);
+        if (!it) {
+            delete uriData;
+            return;
+        }
+        elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void PermView::addAccessInfo(Evas_Object *gl)
+{
+    if (m_accessInfo.empty())
+        return;
+
+    addUriTitle(gl);
+    FOREACH(accessInfo, m_accessInfo)
+        addUri(gl, accessInfo->strIRI);
+}
+
+Evas_Object *PermView::createContent(Evas_Object *parent)
+{
+    Evas_Object *eo;
+
+    Assert(parent);
+    if (m_featureMap.empty() && m_accessInfo.empty()) {
+       eo = elm_layout_add(parent);
+        if (!eo)
+            return NULL;
+       elm_layout_theme_set(eo, "layout", "nocontents", "full");
+        elm_object_part_text_set(eo, "elm.text", D_("IDS_COM_BODY_NO_CONTENTS"));
+        return eo;
+    }
+
+    eo = elm_genlist_add(parent);
+    if (!eo)
+        return NULL;
+
+    addFeatureList(eo);
+    addAccessInfo(eo);
+
+    return eo;
+}
+
+Evas_Object *PermView::loadView(void)
+{
+    Evas_Object *ctnt;
+    WrtDB::DbWidgetFeatureSet features;
+
+    resetBase();
+
+    try {
+        m_dao.Reset(new WrtDB::WidgetDAO(m_appID));
+        features = m_dao->getFeaturesList();
+        m_appType = m_dao->getWidgetType().appType;
+        switch (m_appType) {
+        case WrtDB::APP_TYPE_WAC20:
+            m_featureMap = WacFeature::getFeatureMap(features, m_appID);
+            break;
+        case WrtDB::APP_TYPE_TIZENWEBAPP:
+            m_featureMap = TizenFeature::getFeatureMap(features);
+            break;
+        default:
+            break;
+        }
+        m_dao->getWidgetAccessInfo(m_accessInfo);
+
+        ctnt = createContent(m_parent);
+        if (!ctnt)
+            return NULL;
+        resetBase(ctnt);
+
+        return ctnt;
+
+    } catch (const std::bad_alloc &) {
+        return NULL;
+    }
+}
+
+PermView::PermView(Evas_Object *parent, int appID) :
+    m_parent(parent),
+    m_appType(WrtDB::APP_TYPE_UNKNOWN),
+    m_appID(appID)
+{
+    m_dao.Reset();
+    m_featureMap.clear();
+    m_accessInfo.clear();
+}
+
+PermView::~PermView(void)
+{
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/permview.h b/webapp-detail/permview.h
new file mode 100644 (file)
index 0000000..a80d511
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_
+
+#include <Evas.h>
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+#include <dpl/scoped_ptr.h>
+
+#include "view.h"
+#include "feature.h"
+
+namespace WebAppDetailSetting {
+
+class PermView : public View
+{
+    Evas_Object *m_parent;
+    WrtDB::AppType m_appType;
+    int m_appID;
+    DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
+    std::map<int, Feature> m_featureMap;
+    WrtDB::WidgetAccessInfoList m_accessInfo;
+
+    /* Smart callbacks */
+    static void onFeatureClicked(void *data,
+                                 Evas_Object *obj,
+                                 void *event_info);
+    static void onPermClicked(void *data, Evas_Object *obj, void *event_info);
+    static void onExpanded(void *data, Evas_Object *obj, void *event_info);
+    static void onContracted(void *data, Evas_Object *obj, void *event_info);
+
+    /* Genlist item callbacks */
+    static char *getPermStr(void *data, Evas_Object *obj, const char *part);
+    static Evas_Object *getPermRadio(void *data,
+                                     Evas_Object *obj,
+                                     const char *part);
+    static void delPermData(void *data, Evas_Object *obj);
+    static char *getFeatureTitle(void *data, Evas_Object *obj, const char *part);
+    static char *getFeatureStr(void *data, Evas_Object *obj, const char *part);
+    static char *getFeatureStrWithPerm(void *data,
+                                       Evas_Object *obj,
+                                       const char *part);
+    static void delFeatureData(void *data, Evas_Object *obj);
+    static char *getUriTitle(void *data, Evas_Object *obj, const char *part);
+    static char *getUriStr(void *data, Evas_Object *obj, const char *part);
+    static void delUriData(void *data, Evas_Object *obj);
+
+    void addFeatureTitle(Evas_Object *gl);
+    void addFeature(Evas_Object *gl, int idx);
+    void addFeatureWithPerm(Evas_Object *gl, int idx);
+    void addFeatureList(Evas_Object *gl);
+    void addUriTitle(Evas_Object *gl);
+    void addUri(Evas_Object *gl, DPL::String &uri);
+    void addAccessInfo(Evas_Object *gl);
+    Evas_Object *createContent(Evas_Object *parent);
+
+  public:
+    PermView(Evas_Object *parent, int appID);
+    ~PermView(void);
+
+    Evas_Object *loadView(void);
+
+};
+
+class FeatureData
+{
+  public:
+    Feature *m_feature;
+    Evas_Object *m_rg;
+    int m_appID;
+
+    FeatureData(Feature *feature, int appID, Evas_Object *rg = NULL) :
+        m_feature(feature),
+        m_rg(rg),
+        m_appID(appID) { };
+};
+
+class PermData
+{
+  public:
+    FeatureData *m_featureData;
+    ace_preference_t m_type;
+
+    PermData(FeatureData *featureData, ace_preference_t type) :
+        m_featureData(featureData),
+        m_type(type) { };
+};
+
+class UriData
+{
+  public:
+    std::string m_uri;
+
+    UriData(std::string uri) :
+        m_uri(uri) { };
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_ */
diff --git a/webapp-detail/tizen_feature.cpp b/webapp-detail/tizen_feature.cpp
new file mode 100644 (file)
index 0000000..ddef78d
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 <dpl/foreach.h>
+
+#include "tizen_feature.h"
+#include "util.h"
+
+namespace WebAppDetailSetting {
+
+const char *TizenFeature::m_feature[] = {
+    "http://tizen.org/api/application",
+    "http://tizen.org/api/time",
+    "http://tizen.org/api/contact",
+    "http://tizen.org/api/calendar",
+    "http://tizen.org/api/call",
+    "http://tizen.org/api/messaging",
+    "http://tizen.org/api/bluetooth",
+    "http://tizen.org/api/geocoder",
+    "http://tizen.org/api/nfc",
+    "http://tizen.org/api/sensors",
+    "http://tizen.org/api/systeminfo",
+};
+
+/* FIXME: i18n */
+const char *TizenFeature::m_featureName[] = {
+    N_("Installed application"),
+    N_("Timezone"),
+    N_("Contacts"),
+    N_("Calendar"),
+    N_("Call Log"),
+    N_("Messaging"),
+    N_("Bluetooth"),
+    N_("Geocoder"),
+    N_("NFC"),
+    N_("Sensor"),
+    N_("System infomation"),
+};
+
+std::map<int, Feature> TizenFeature::getFeatureMap(
+        WrtDB::DbWidgetFeatureSet &features)
+{
+    std::string uri;
+    std::map<int, Feature> featureMap;
+    unsigned int i;
+
+    FOREACH(feature, features) {
+        for (i = 0; i < sizeof(m_feature) / sizeof(*m_feature); i++) {
+            if (featureMap.find(i) != featureMap.end())
+                continue;
+
+            uri = DPL::ToUTF8String(feature->name);
+            if (!uri.compare(0,
+                        strlen(m_feature[i]),
+                        m_feature[i])) {
+                featureMap[i] = Feature(m_featureName[i],
+                               uri.c_str());
+                break;
+            }
+        }
+    }
+
+    return featureMap;
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/tizen_feature.h b/webapp-detail/tizen_feature.h
new file mode 100644 (file)
index 0000000..cc90247
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+
+#include "feature.h"
+
+namespace WebAppDetailSetting {
+
+enum tizenFeature {
+    TIZEN_FEATURE_APP = 0x00,
+    TIZEN_FEATURE_TIME,
+    TIZEN_FEATURE_CONTACTS,
+    TIZEN_FEATURE_CALENDAR,
+    TIZEN_FEATURE_CALL,
+    TIZEN_FEATURE_MESSAGING,
+    TIZEN_FEATURE_BLUETOOTH,
+    TIZEN_FEATURE_GEOCODER,
+    TIZEN_FEATURE_NFC,
+    TIZEN_FEATURE_SENSOR,
+    TIZEN_FEATURE_SYSTEMINFO,
+    TIZEN_FEATURE_MAX,
+};
+
+class TizenFeature
+{
+    static const char *m_feature[];
+    static const char *m_featureName[];
+  public:
+    static std::map<int, Feature> getFeatureMap(
+            WrtDB::DbWidgetFeatureSet &features);
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_ */
diff --git a/webapp-detail/ug.cpp b/webapp-detail/ug.cpp
new file mode 100644 (file)
index 0000000..3ad9cea
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <malloc.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <string.h>
+#include <Elementary.h>
+#include <bundle.h>
+
+#undef None
+#include <dpl/wrt-dao-ro/WrtDatabase.h>
+#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
+
+#include "mainview.h"
+
+#define EXPORT_SYMBOL extern "C" __attribute__((visibility("default")))
+
+struct priv {
+    WebAppDetailSetting::MainView *mainView;
+};
+
+static void *onCreate(ui_gadget_h ug,
+                      enum ug_mode /*mode*/,
+                      service_h service,
+                      void *user_data)
+{
+    struct priv *priv;
+    int appID;
+    char *pkgname = NULL;
+
+    Assert(ug && user_data);
+    priv = static_cast<struct priv *>(user_data);
+
+    service_get_extra_data(service, "pkg_name", &pkgname);
+    if (!pkgname)
+        return NULL;
+
+    appID = static_cast<int>
+        (WrtDB::WidgetDAOReadOnly::getHandle(DPL::FromASCIIString
+                                             (std::string(pkgname))));
+
+    /* Create MainView */
+    try {
+        priv->mainView = new WebAppDetailSetting::MainView(ug, appID);
+        return priv->mainView->loadView();
+    } catch (const std::bad_alloc &) {
+        return NULL;
+    }
+}
+
+static void onDestroy(ui_gadget_h /*ug*/,
+                      service_h /*service*/,
+                      void *user_data)
+{
+    struct priv *priv;
+
+    Assert(user_data);
+    priv = static_cast<struct priv *>(user_data);
+    delete priv->mainView;
+    priv->mainView = NULL;
+}
+
+EXPORT_SYMBOL int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+    struct priv *priv;
+
+    Assert(ops);
+    priv = static_cast<struct priv *>(calloc(1, sizeof(*priv)));
+    if (!priv)
+        return -1;
+
+    WrtDB::WrtDatabase::attachToThreadRW();
+    //AceDB::AceDAOReadOnly::attachToThreadRW();
+
+    memset(ops, 0x00, sizeof(*ops));
+    ops->priv = priv;
+    ops->create = onCreate;
+    ops->destroy = onDestroy;
+    ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+    return 0;
+}
+
+EXPORT_SYMBOL void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+    struct priv *priv;
+
+    Assert(ops);
+    priv = static_cast<struct priv *>(ops->priv);
+    if (priv->mainView)
+        delete priv->mainView;
+    free(priv);
+
+    //AceDB::AceDAOReadOnly::detachFromThread();
+    WrtDB::WrtDatabase::detachFromThread();
+}
diff --git a/webapp-detail/util.h b/webapp-detail/util.h
new file mode 100755 (executable)
index 0000000..c46d8cd
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_ 
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_
+
+#include <libintl.h>
+
+#define D_(str) dgettext("sys_string", str)
+#define gettext_noop(str) (str)
+#define N_(str) gettext_noop(str)
+#define U_(str) dgettext("ug-webapp-common-efl", str)
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_ */
diff --git a/webapp-detail/view.cpp b/webapp-detail/view.cpp
new file mode 100644 (file)
index 0000000..47bf8d9
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <Evas.h>
+#include <dpl/assert.h>
+#include "view.h"
+
+namespace WebAppDetailSetting {
+
+void delCb(void *data,
+        Evas */*e*/,
+        Evas_Object */*eo*/,
+        void */*event_info*/)
+{
+    View *v;
+
+    v = static_cast<View *>(data);
+    Assert(v);
+    v->onDel();
+    v->resetBase();
+}
+
+void showCb(void *data,
+        Evas */*e*/,
+        Evas_Object */*eo*/,
+        void */*event_info*/)
+{
+    View *v;
+
+    v = static_cast<View *>(data);
+    Assert(v);
+    v->onShow();
+}
+
+void hideCb(void *data,
+        Evas */*e*/,
+        Evas_Object */*eo*/,
+        void */*event_info*/)
+{
+    View *v;
+
+    v = static_cast<View *>(data);
+    Assert(v);
+    v->onHide();
+}
+
+void View::resetBase(Evas_Object *base)
+{
+    if (m_base) {
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this);
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_SHOW, showCb, this);
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_HIDE, hideCb, this);
+    }
+
+    m_base = base;
+
+    if (m_base) {
+           evas_object_event_callback_add(base, EVAS_CALLBACK_DEL, delCb, this);
+           evas_object_event_callback_add(base, EVAS_CALLBACK_SHOW, showCb, this);
+           evas_object_event_callback_add(base, EVAS_CALLBACK_HIDE, hideCb, this);
+    }
+}
+
+View::~View(void)
+{
+    if (m_base) {
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this);
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_SHOW, showCb, this);
+        evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_HIDE, hideCb, this);
+        evas_object_del(m_base);
+    }
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/view.h b/webapp-detail/view.h
new file mode 100644 (file)
index 0000000..d55e083
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://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 WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_ 
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_
+
+#include <Evas.h>
+
+namespace WebAppDetailSetting {
+class View
+{
+    Evas_Object *m_base;
+
+  public:
+    View(void) : m_base(NULL) { };
+    virtual ~View(void);
+
+    void resetBase(Evas_Object *base = NULL);
+    Evas_Object *getBase(void) { return m_base; }
+    virtual void onShow(void) { };
+    virtual void onHide(void) { };
+    virtual void onDel(void) { };
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_ */
diff --git a/webapp-detail/wac_feature.cpp b/webapp-detail/wac_feature.cpp
new file mode 100755 (executable)
index 0000000..b0fc9b8
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#include <dpl/foreach.h>
+#include "wac_feature.h"
+#include "util.h"
+#include <ace-settings/ace_api_settings.h>
+
+namespace WebAppDetailSetting {
+
+const char *WacFeature::m_feature[] = {
+    "http://wacapps.net/api/accelerometer",
+    "http://wacapps.net/api/orientation",
+    "http://wacapps.net/api/camera",
+    "http://wacapps.net/api/devicestatus",
+    "http://wacapps.net/api/filesystem",
+    "http://wacapps.net/api/messaging",
+    "http://www.w3.org/TR/geolocation-API/",
+    "http://wacapps.net/api/pim.contact",
+    "http://wacapps.net/api/pim.calendar",
+    "http://wacapps.net/api/pim.task",
+    "http://wacapps.net/api/deviceinteraction",
+};
+
+/* FIXME: i18n */
+const char *WacFeature::m_featureName[] = {
+    N_("Accelerometer"),
+    N_("Rotation"),
+    N_("Camera"),
+    N_("Device status"),
+    N_("File system"),
+    N_("Messaging"),
+    N_("Location"),
+    N_("Contacts"),
+    N_("Calendar"),
+    N_("Task"),
+    N_("Device interaction"),
+};
+
+std::map<int, Feature> WacFeature::getFeatureMap(
+        WrtDB::DbWidgetFeatureSet &features,
+        int appID)
+{
+    std::string uri;
+    std::map<int, Feature> featureMap;
+    unsigned int i;
+
+    FOREACH(feature, features) {
+        for (i = 0; i < sizeof(m_feature) / sizeof(*m_feature); i++) {
+            if (featureMap.find(i) != featureMap.end())
+                continue;
+
+            uri = DPL::ToUTF8String(feature->name);
+            if (!uri.compare(0,
+                        strlen(m_feature[i]),
+                        m_feature[i])) {
+                featureMap[i] = Feature(m_featureName[i],
+                               m_feature[i]);
+                ace_preference_t perm;
+                ace_get_widget_resource_preference(
+                        appID,
+                        const_cast<char *>(m_feature[i]),
+                        &perm);
+                featureMap[i].setPerm(perm);
+
+                break;
+            }
+        }
+    }
+
+    return featureMap;
+}
+
+} /* WebAppDetailSetting */
diff --git a/webapp-detail/wac_feature.h b/webapp-detail/wac_feature.h
new file mode 100644 (file)
index 0000000..1660b87
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+  * Copyright 2012  Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *     http://floralicense.org/license/
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_ 
+#define WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_
+
+#include <dpl/wrt-dao-rw/widget_dao.h>
+
+#include "feature.h"
+
+namespace WebAppDetailSetting {
+
+enum wacFeature {
+    WAC_FEATURE_ACCELEROMETER = 0x00,
+    WAC_FEATURE_ORIENTATION,
+    WAC_FEATURE_CAMERA,
+    WAC_FEATURE_DEV_STAT,
+    WAC_FEATURE_FILE_SYSTEM,
+    WAC_FEATURE_MESSAGING,
+    WAC_FEATURE_GEOLOCATION,
+    WAC_FEATURE_CONTACTS,
+    WAC_FEATURE_CALENDAR,
+    WAC_FEATURE_TASK,
+    WAC_FEATURE_DEV_INTERATION,
+    WAC_FEATURE_MAX,
+};
+
+class WacFeature
+{
+    static const char *m_feature[];
+    static const char *m_featureName[];
+  public:
+    static std::map<int, Feature> getFeatureMap(
+            WrtDB::DbWidgetFeatureSet &features,
+            int appID);
+};
+
+} /* WebAppDetailSetting */
+
+#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_ */
diff --git a/wrt-setting.manifest b/wrt-setting.manifest
new file mode 100644 (file)
index 0000000..2a0cec5
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+  <request>
+    <domain name="_"/>
+  </request>
+</manifest>