source code open - cert-svc-ui 2.0alpha master 2.0_alpha submit/master/20120920.151107
authorKidong Kim <kd0228.kim@samsung.com>
Wed, 22 Aug 2012 08:51:43 +0000 (17:51 +0900)
committerKidong Kim <kd0228.kim@samsung.com>
Thu, 23 Aug 2012 00:29:18 +0000 (09:29 +0900)
Change-Id: I209f29bf2b68aa5cf3b65ae1359759a8263aaef0

103 files changed:
AUTHORS [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0755]
LICENSE [new file with mode: 0644]
build.sh [new file with mode: 0755]
cert-selection-ug-test/CMakeLists.txt [new file with mode: 0755]
cert-selection-ug-test/cert-selection-ug-test.c [new file with mode: 0644]
cert-selection-ug/CMakeLists.txt [new file with mode: 0755]
cert-selection-ug/include/cert-selection-uigadget.h [new file with mode: 0755]
cert-selection-ug/src/cert-selection-uigadget.c [new file with mode: 0644]
cert-selection-ug/src/cert-selection.c [new file with mode: 0644]
common/CMakeLists.txt [new file with mode: 0755]
common/include/mgr-app-common-debug.h [new file with mode: 0755]
common/include/mgr-app-common-error.h [new file with mode: 0755]
common/include/mgr-app-common-util.h [new file with mode: 0755]
common/include/mgr-app-view-manager.h [new file with mode: 0755]
common/include/mgr-app-widget.h [new file with mode: 0755]
common/src/mgr-app-common-util.c [new file with mode: 0755]
common/src/mgr-app-view-manager.c [new file with mode: 0755]
common/src/mgr-app-widget.c [new file with mode: 0755]
data/CMakeLists.txt [new file with mode: 0755]
data/edc/mgr-app.edc [new file with mode: 0755]
data/edc/ug-setting-manage-certificates-efl.edc [new file with mode: 0755]
data/icons/ManageApplications.png [new file with mode: 0644]
data/icons/ManageApplications_default.png [new file with mode: 0644]
data/icons/com.samsung.mgr-app.png [new file with mode: 0755]
debian/changelog [new file with mode: 0755]
debian/changelog.app [new file with mode: 0755]
debian/changelog.ug [new file with mode: 0755]
debian/com.samsung.mgr-app-0.install.in [new file with mode: 0755]
debian/com.samsung.mgr-app-dbg.install.in [new file with mode: 0755]
debian/com.samsung.mgr-app.desktop.in [new file with mode: 0755]
debian/com.samsung.mgr-app.postinst.in [new file with mode: 0755]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0755]
debian/control.app [new file with mode: 0755]
debian/control.ug [new file with mode: 0755]
debian/libcert-svc-dev.install [new file with mode: 0644]
debian/libcert-svc1-test.install [new file with mode: 0644]
debian/libcert-svc1-ui.install [new file with mode: 0644]
debian/libcert-svc1.dirs [new file with mode: 0644]
debian/libcert-svc1.install [new file with mode: 0644]
debian/libcert-svc1.links [new file with mode: 0644]
debian/libcert-svc1.postinst [new file with mode: 0755]
debian/rules [new file with mode: 0755]
packaging/cert-svc-ui.spec [new file with mode: 0644]
po/CMakeLists.txt [new file with mode: 0755]
po/ar.po [new file with mode: 0644]
po/bg.po [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de_DE.po [new file with mode: 0644]
po/el_GR.po [new file with mode: 0644]
po/en.po [new file with mode: 0644]
po/en_US.po [new file with mode: 0644]
po/es_ES.po [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/fr_FR.po [new file with mode: 0644]
po/he.po [new file with mode: 0644]
po/hi.po [new file with mode: 0644]
po/hr.po [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/it_IT.po [new file with mode: 0644]
po/ja_JP.po [new file with mode: 0644]
po/ko_KR.po [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/lv.po [new file with mode: 0644]
po/ms.po [new file with mode: 0644]
po/nl_NL.po [new file with mode: 0644]
po/no.po [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt_PT.po [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/ru_RU.po [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/th.po [new file with mode: 0644]
po/tr_TR.po [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
po/zh_HK.po [new file with mode: 0644]
po/zh_TW.po [new file with mode: 0644]
ug/CMakeLists.txt [new file with mode: 0755]
ug/include/mgr-app-uigadget.h [new file with mode: 0755]
ug/src/mgr-app-uigadget.c [new file with mode: 0755]
view/CMakeLists.txt [new file with mode: 0755]
view/include/certificates/certificate_util.h [new file with mode: 0644]
view/include/certificates/certificates.h [new file with mode: 0644]
view/src/certificates/certificate_util.c [new file with mode: 0644]
view/src/certificates/certificates_menu.c [new file with mode: 0644]
view/src/certificates/detail_info_cert.c [new file with mode: 0644]
view/src/certificates/pfx_cert/pfx_cert.c [new file with mode: 0644]
view/src/certificates/pfx_cert/pfx_cert_install.c [new file with mode: 0644]
view/src/certificates/pfx_cert/pfx_cert_remove.c [new file with mode: 0644]
view/src/certificates/put_password_certificate.c [new file with mode: 0644]
view/src/certificates/trusted_root_ca_cert/trusted_root_ca_cert.c [new file with mode: 0644]
view/src/certificates/uninstall_certificate.c [new file with mode: 0644]
view/src/certificates/user_cert/install_certificate.c [new file with mode: 0644]
view/src/certificates/user_cert/user_cert.c [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..ce40e2d
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Janusz Kozerski <j.kozerski@samsung.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..b4bce72
--- /dev/null
@@ -0,0 +1,47 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-setting-manage-certificates-efl C)
+
+INCLUDE(FindPkgConfig)
+
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -Wall -g -ggdb")
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(PKGNAME "lib${PROJECT_NAME}")
+SET(LIBDIR "${PREFIX}/lib")
+SET(VERSION 0.1.0)
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${RESDIR}/etc")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/images")
+SET(EDJDIR "${RESDIR}/edje")
+SET(IMGDIR "${RESDIR}/images")
+
+SET(TARGET_CERT_COMMON "mgr-cert-common")
+SET(TARGET_CERT_VIEW "mgr-cert-view")
+SET(TARGET_CERT_SELECTION_UG "ug-cert-selection-ug-efl")
+SET(TARGET_CERT_SELECTION_TEST "cert-selection-ug-test")
+SET(TARGET_CERT_MANAGER_UG "ug-setting-manage-certificates-efl")
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DPKGNAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+
+ADD_SUBDIRECTORY(common)
+ADD_SUBDIRECTORY(view)
+ADD_SUBDIRECTORY(ug)
+
+ADD_SUBDIRECTORY(data)
+# i18n
+ADD_SUBDIRECTORY(po)
+
+ADD_SUBDIRECTORY(cert-selection-ug)
+
+ADD_SUBDIRECTORY(cert-selection-ug-test)
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..9c13a9b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+\r
+                                 Apache License\r
+                           Version 2.0, January 2004\r
+                        http://www.apache.org/licenses/\r
+\r
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
+\r
+   1. Definitions.\r
+\r
+      "License" shall mean the terms and conditions for use, reproduction,\r
+      and distribution as defined by Sections 1 through 9 of this document.\r
+\r
+      "Licensor" shall mean the copyright owner or entity authorized by\r
+      the copyright owner that is granting the License.\r
+\r
+      "Legal Entity" shall mean the union of the acting entity and all\r
+      other entities that control, are controlled by, or are under common\r
+      control with that entity. For the purposes of this definition,\r
+      "control" means (i) the power, direct or indirect, to cause the\r
+      direction or management of such entity, whether by contract or\r
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
+      outstanding shares, or (iii) beneficial ownership of such entity.\r
+\r
+      "You" (or "Your") shall mean an individual or Legal Entity\r
+      exercising permissions granted by this License.\r
+\r
+      "Source" form shall mean the preferred form for making modifications,\r
+      including but not limited to software source code, documentation\r
+      source, and configuration files.\r
+\r
+      "Object" form shall mean any form resulting from mechanical\r
+      transformation or translation of a Source form, including but\r
+      not limited to compiled object code, generated documentation,\r
+      and conversions to other media types.\r
+\r
+      "Work" shall mean the work of authorship, whether in Source or\r
+      Object form, made available under the License, as indicated by a\r
+      copyright notice that is included in or attached to the work\r
+      (an example is provided in the Appendix below).\r
+\r
+      "Derivative Works" shall mean any work, whether in Source or Object\r
+      form, that is based on (or derived from) the Work and for which the\r
+      editorial revisions, annotations, elaborations, or other modifications\r
+      represent, as a whole, an original work of authorship. For the purposes\r
+      of this License, Derivative Works shall not include works that remain\r
+      separable from, or merely link (or bind by name) to the interfaces of,\r
+      the Work and Derivative Works thereof.\r
+\r
+      "Contribution" shall mean any work of authorship, including\r
+      the original version of the Work and any modifications or additions\r
+      to that Work or Derivative Works thereof, that is intentionally\r
+      submitted to Licensor for inclusion in the Work by the copyright owner\r
+      or by an individual or Legal Entity authorized to submit on behalf of\r
+      the copyright owner. For the purposes of this definition, "submitted"\r
+      means any form of electronic, verbal, or written communication sent\r
+      to the Licensor or its representatives, including but not limited to\r
+      communication on electronic mailing lists, source code control systems,\r
+      and issue tracking systems that are managed by, or on behalf of, the\r
+      Licensor for the purpose of discussing and improving the Work, but\r
+      excluding communication that is conspicuously marked or otherwise\r
+      designated in writing by the copyright owner as "Not a Contribution."\r
+\r
+      "Contributor" shall mean Licensor and any individual or Legal Entity\r
+      on behalf of whom a Contribution has been received by Licensor and\r
+      subsequently incorporated within the Work.\r
+\r
+   2. Grant of Copyright License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      copyright license to reproduce, prepare Derivative Works of,\r
+      publicly display, publicly perform, sublicense, and distribute the\r
+      Work and such Derivative Works in Source or Object form.\r
+\r
+   3. Grant of Patent License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      (except as stated in this section) patent license to make, have made,\r
+      use, offer to sell, sell, import, and otherwise transfer the Work,\r
+      where such license applies only to those patent claims licensable\r
+      by such Contributor that are necessarily infringed by their\r
+      Contribution(s) alone or by combination of their Contribution(s)\r
+      with the Work to which such Contribution(s) was submitted. If You\r
+      institute patent litigation against any entity (including a\r
+      cross-claim or counterclaim in a lawsuit) alleging that the Work\r
+      or a Contribution incorporated within the Work constitutes direct\r
+      or contributory patent infringement, then any patent licenses\r
+      granted to You under this License for that Work shall terminate\r
+      as of the date such litigation is filed.\r
+\r
+   4. Redistribution. You may reproduce and distribute copies of the\r
+      Work or Derivative Works thereof in any medium, with or without\r
+      modifications, and in Source or Object form, provided that You\r
+      meet the following conditions:\r
+\r
+      (a) You must give any other recipients of the Work or\r
+          Derivative Works a copy of this License; and\r
+\r
+      (b) You must cause any modified files to carry prominent notices\r
+          stating that You changed the files; and\r
+\r
+      (c) You must retain, in the Source form of any Derivative Works\r
+          that You distribute, all copyright, patent, trademark, and\r
+          attribution notices from the Source form of the Work,\r
+          excluding those notices that do not pertain to any part of\r
+          the Derivative Works; and\r
+\r
+      (d) If the Work includes a "NOTICE" text file as part of its\r
+          distribution, then any Derivative Works that You distribute must\r
+          include a readable copy of the attribution notices contained\r
+          within such NOTICE file, excluding those notices that do not\r
+          pertain to any part of the Derivative Works, in at least one\r
+          of the following places: within a NOTICE text file distributed\r
+          as part of the Derivative Works; within the Source form or\r
+          documentation, if provided along with the Derivative Works; or,\r
+          within a display generated by the Derivative Works, if and\r
+          wherever such third-party notices normally appear. The contents\r
+          of the NOTICE file are for informational purposes only and\r
+          do not modify the License. You may add Your own attribution\r
+          notices within Derivative Works that You distribute, alongside\r
+          or as an addendum to the NOTICE text from the Work, provided\r
+          that such additional attribution notices cannot be construed\r
+          as modifying the License.\r
+\r
+      You may add Your own copyright statement to Your modifications and\r
+      may provide additional or different license terms and conditions\r
+      for use, reproduction, or distribution of Your modifications, or\r
+      for any such Derivative Works as a whole, provided Your use,\r
+      reproduction, and distribution of the Work otherwise complies with\r
+      the conditions stated in this License.\r
+\r
+   5. Submission of Contributions. Unless You explicitly state otherwise,\r
+      any Contribution intentionally submitted for inclusion in the Work\r
+      by You to the Licensor shall be under the terms and conditions of\r
+      this License, without any additional terms or conditions.\r
+      Notwithstanding the above, nothing herein shall supersede or modify\r
+      the terms of any separate license agreement you may have executed\r
+      with Licensor regarding such Contributions.\r
+\r
+   6. Trademarks. This License does not grant permission to use the trade\r
+      names, trademarks, service marks, or product names of the Licensor,\r
+      except as required for reasonable and customary use in describing the\r
+      origin of the Work and reproducing the content of the NOTICE file.\r
+\r
+   7. Disclaimer of Warranty. Unless required by applicable law or\r
+      agreed to in writing, Licensor provides the Work (and each\r
+      Contributor provides its Contributions) on an "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+      implied, including, without limitation, any warranties or conditions\r
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
+      PARTICULAR PURPOSE. You are solely responsible for determining the\r
+      appropriateness of using or redistributing the Work and assume any\r
+      risks associated with Your exercise of permissions under this License.\r
+\r
+   8. Limitation of Liability. In no event and under no legal theory,\r
+      whether in tort (including negligence), contract, or otherwise,\r
+      unless required by applicable law (such as deliberate and grossly\r
+      negligent acts) or agreed to in writing, shall any Contributor be\r
+      liable to You for damages, including any direct, indirect, special,\r
+      incidental, or consequential damages of any character arising as a\r
+      result of this License or out of the use or inability to use the\r
+      Work (including but not limited to damages for loss of goodwill,\r
+      work stoppage, computer failure or malfunction, or any and all\r
+      other commercial damages or losses), even if such Contributor\r
+      has been advised of the possibility of such damages.\r
+\r
+   9. Accepting Warranty or Additional Liability. While redistributing\r
+      the Work or Derivative Works thereof, You may choose to offer,\r
+      and charge a fee for, acceptance of support, warranty, indemnity,\r
+      or other liability obligations and/or rights consistent with this\r
+      License. However, in accepting such obligations, You may act only\r
+      on Your own behalf and on Your sole responsibility, not on behalf\r
+      of any other Contributor, and only if You agree to indemnify,\r
+      defend, and hold each Contributor harmless for any liability\r
+      incurred by, or claims asserted against, such Contributor by reason\r
+      of your accepting any such warranty or additional liability.\r
+\r
+   END OF TERMS AND CONDITIONS\r
+\r
+   APPENDIX: How to apply the Apache License to your work.\r
+\r
+      To apply the Apache License to your work, attach the following\r
+      boilerplate notice, with the fields enclosed by brackets "[]"\r
+      replaced with your own identifying information. (Don't include\r
+      the brackets!)  The text should be enclosed in the appropriate\r
+      comment syntax for the file format. We also recommend that a\r
+      file or class name and description of purpose be included on the\r
+      same "printed page" as the copyright notice for easier\r
+      identification within third-party archives.\r
+\r
+   Copyright [yyyy] [name of copyright owner]\r
+\r
+   Licensed under the Apache License, Version 2.0 (the "License");\r
+   you may not use this file except in compliance with the License.\r
+   You may obtain a copy of the License at\r
+\r
+       http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+\r
diff --git a/build.sh b/build.sh
new file mode 100755 (executable)
index 0000000..59d06a4
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+if [ $1 == "app" ]
+then
+       echo "Build App"
+       cp ./debian/control.app ./debian/control
+       cp ./debian/changelog.app ./debian/changelog
+       find ./debian -name "rules" -exec perl -pi -e 's/TYPE\ \?\=\ ug/TYPE\ \?\=\ app/g' {} \;
+else
+       echo "Build UG"
+       cp ./debian/control.ug ./debian/control
+       cp ./debian/changelog.ug ./debian/changelog
+       find ./debian -name "rules" -exec perl -pi -e 's/TYPE\ \?\=\ app/TYPE\ \?\=\ ug/g' {} \;
+fi
+
+sbs -b
diff --git a/cert-selection-ug-test/CMakeLists.txt b/cert-selection-ug-test/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..0c1fa36
--- /dev/null
@@ -0,0 +1,44 @@
+pkg_check_modules(cert-selection-ug-test_pkgs
+    REQUIRED
+    elementary
+    evas
+    ecore-x
+    ui-gadget-1
+    dlog
+    capi-appfw-application
+    cert-svc-vcore
+)
+
+SET(SRCS
+    cert-selection-ug-test.c
+)
+
+INCLUDE_DIRECTORIES(${cert-selection-ug-test_pkgs_INCLUDE_DIRS})
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+
+IF("${ARCH}" STREQUAL "arm")
+    ADD_DEFINITIONS("-DTARGET")
+    MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+MESSAGE("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
+
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${TARGET_CERT_SELECTION_TEST} ${SRCS})
+
+SET_TARGET_PROPERTIES(${TARGET_CERT_SELECTION_TEST} PROPERTIES SOVERSION 0.1.0)
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_SELECTION_TEST}
+    ${cert-selection-ug-test_pkgs_LIBRARIES}
+)
+
+INSTALL(TARGETS
+    ${TARGET_CERT_SELECTION_TEST}
+    DESTINATION
+    /usr/bin
+)
diff --git a/cert-selection-ug-test/cert-selection-ug-test.c b/cert-selection-ug-test/cert-selection-ug-test.c
new file mode 100644 (file)
index 0000000..16ecddb
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        cert-selection-ug-test.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ */
+
+/**
+ * To use this test app:
+ * 1) Install cert-svc-test and cert-svc-ui packages on target
+ * 2) In first console run "dlogutil" on target
+ * 3) In second console run /usr/bin/cert-selection-ug-test
+ * 4) In app that will show on taget click "Selecttion screen" button
+ * 5) test "Selection screen" and check in logs (on first terminal) if
+ *    it works correctly
+ * 6) Push "Exit" button to exit test app.
+ */
+
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include "dlog.h"
+#include <Evas.h>
+#include <app.h>
+
+#include <stdio.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <SLP_UI_Gadget_PG.h>
+#include <ui-gadget-engine.h>
+
+typedef struct appdata_t {
+    ui_gadget_h ug;
+    Evas_Object *win;
+    Evas_Object *box;
+    Evas_Object *lab;
+    Evas_Object *btn_show_selection_screen;
+    Evas_Object *btn_exit;
+} appdata;
+
+static appdata *ad;
+
+static service_h service;
+
+static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) {
+    Evas_Object *base, *win;
+    appdata *mydata;
+
+    if (!ug || !priv)
+        return;
+
+    mydata = priv;
+
+    base = ug_get_layout(ug);
+    if (!base)
+        return;
+
+    win = ug_get_window();
+
+    switch (mode) {
+    case UG_MODE_FULLVIEW:
+        evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        elm_win_resize_object_add(win, base);
+        ug_disable_effect(ug);
+        evas_object_show(base);
+        break;
+    default:
+        break;
+    }
+}
+
+static void result_cb(ui_gadget_h ug, service_h service, void *priv) {
+
+    LOGD("result_cb");
+
+    if (!ug || !priv)
+        return;
+
+    char *value;
+    service_get_extra_data(service, "selected-cert", &value);
+
+    LOGD("#################################################");
+    LOGD("Value catch in return");
+    LOGD("seleted-cert = %s", value);
+    LOGD("#################################################");
+
+    free(value);
+}
+
+static void destroy_cb(ui_gadget_h ug, void *priv) {
+
+    if (!ug || !priv)
+        return;
+
+    ug_destroy(ug);
+    ((appdata *) priv)->ug = NULL;
+}
+
+ui_gadget_h create_ug(appdata *data) {
+
+    struct ug_cbs cbs = { 0, };
+    cbs.layout_cb = layout_cb;
+    cbs.result_cb = result_cb;
+    cbs.destroy_cb = destroy_cb;
+    cbs.priv = (void *) data;
+
+    data->ug = ug_create(NULL, "cert-selection-ug-efl", UG_MODE_FULLVIEW, service, &cbs);
+
+    return data->ug;
+}
+
+static void on_done(void *data, Evas_Object *obj, void *event_info) {
+    (void) data;
+    (void) obj;
+    (void) event_info;
+
+    elm_exit();
+}
+
+static void ok_button(void *data, Evas_Object *obj, void *event_info) {
+
+    (void) obj;
+    (void) event_info;
+
+    appdata *mydata = (appdata *) data;
+    mydata->ug = create_ug(ad);
+}
+
+EAPI_MAIN int elm_main(int argc, char **argv) {
+
+    appdata appd;
+
+    ad = &appd;
+
+    service_create(&service);
+
+    // new window - do the usual and give it a name (hello) and title (Hello)
+    ad->win = elm_win_util_standard_add("Test app", "Test app");
+    // when the user clicks "close" on a window there is a request to delete
+    evas_object_smart_callback_add(ad->win, "delete,request", on_done, NULL);
+
+    // add a box object - default is vertical. a box holds children in a row,
+    // either horizontally or vertically. nothing more.
+    ad->box = elm_box_add(ad->win);
+    // make the box horizontal
+    elm_box_horizontal_set(ad->box, EINA_TRUE);
+    // add object as a resize object for the window (controls window minimum
+    // size as well as gets resized if window is resized)
+    elm_win_resize_object_add(ad->win, ad->box);
+    evas_object_show(ad->box);
+
+    // add a label widget, set the text and put it in the pad frame
+    //lab = elm_label_add(win);
+    // set default text of the label
+    //elm_object_text_set(lab, "");
+    // pack the label at the end of the box
+    //elm_box_pack_end(box, lab);
+    //evas_object_show(lab);
+
+    ad->btn_show_selection_screen = elm_button_add(ad->win);
+    elm_object_text_set(ad->btn_show_selection_screen, "Selection screen");
+    elm_box_pack_end(ad->box, ad->btn_show_selection_screen);
+    evas_object_show(ad->btn_show_selection_screen);
+    evas_object_smart_callback_add(ad->btn_show_selection_screen, "clicked", ok_button, ad);
+
+    ad->btn_exit = elm_button_add(ad->win);
+    elm_object_text_set(ad->btn_exit, "Exit App");
+    elm_box_pack_end(ad->box, ad->btn_exit);
+    evas_object_show(ad->btn_exit);
+    evas_object_smart_callback_add(ad->btn_exit, "clicked", on_done, NULL);
+
+    UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+
+    // now we are done, show the window
+    evas_object_show(ad->win);
+
+    // run the mainloop and process events and callbacks
+    elm_run();
+    elm_shutdown();
+
+    service_destroy(service);
+
+    return 0;
+}
+ELM_MAIN();
diff --git a/cert-selection-ug/CMakeLists.txt b/cert-selection-ug/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..c01a49b
--- /dev/null
@@ -0,0 +1,36 @@
+pkg_check_modules(ug-cert-selection-ug-efl_pkgs
+    REQUIRED
+    elementary
+    ui-gadget-1
+    evas
+    dlog
+    capi-appfw-application
+    cert-svc-vcore
+)
+
+SET(SRCS
+    src/cert-selection.c
+    src/cert-selection-uigadget.c
+)
+
+SET(CMAKE_INSTALL_RPATH "${PREFIX}/lib")
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/view/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+
+ADD_DEFINITIONS(${ug-cert-selection-ug-efl_pkgs_DEPS_CFLAGS})
+ADD_DEFINITIONS(${ug-cert-selection-ug-efl_pkgs_DEPS_OTHER})
+
+INCLUDE_DIRECTORIES(${ug-cert-selection-ug-efl_pkgs_INCLUDE_DIRS})
+
+ADD_LIBRARY(${TARGET_CERT_SELECTION_UG} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET_CERT_SELECTION_UG} PROPERTIES SOVERSION 0.1.0)
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_SELECTION_UG}
+    ${ug-cert-selection-ug-efl_pkgs_LIBRARIES}
+    ${TARGET_CERT_COMMON}
+    ${TARGET_CERT_VIEW}
+)
+
+INSTALL(TARGETS ${TARGET_CERT_SELECTION_UG} DESTINATION /opt/ug/lib)
diff --git a/cert-selection-ug/include/cert-selection-uigadget.h b/cert-selection-ug/include/cert-selection-uigadget.h
new file mode 100755 (executable)
index 0000000..8dac232
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        cert-selection-uigadget.h
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ */
+
+#ifndef __UG_SETTING_MANAGE_APPLICATION_EFL_H__
+#define __UG_SETTING_MANAGE_APPLICATION_EFL_H__
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <glib.h>
+#include <app.h>
+
+#ifndef PACKAGE
+#define PACKAGE "ug-setting-manage-certificates-efl"
+#endif
+
+#ifndef LOCALEDIR
+#define LOCALEDIR PREFIX"/res/locale"
+#endif
+
+#define IMAGE_PATH PREFIX"/res/images"
+
+struct ug_data {
+    Evas_Object         *win_main;
+    Evas_Object         *bg;
+    Evas_Object         *layout_main;
+    Evas_Object         *navi_bar;
+    GList               *view_list;
+    ui_gadget_h         ug;
+    ui_gadget_h         sub_ug;
+    service_h           *service;
+    void                *data;
+
+    //Evas_Object         *popup;
+    //Evas_Object *indicator;
+    //Ecore_Pipe *msg_pipe;
+
+};
+
+struct ug_data *get_ug_data();
+
+void cert_selection_cb(void *data, Evas_Object *obj, void *event_info);
+
+#endif /* __UG_SETTING_MANAGE_APPLICATION_EFL_H__ */
diff --git a/cert-selection-ug/src/cert-selection-uigadget.c b/cert-selection-ug/src/cert-selection-uigadget.c
new file mode 100644 (file)
index 0000000..0d0a3d3
--- /dev/null
@@ -0,0 +1,243 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        cert-ui-api.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ */
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <stdio.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <app.h>
+
+#include "cert-selection-uigadget.h"
+#include "mgr-app-common-debug.h"
+#include "mgr-app-common-error.h"
+#include "mgr-app-view-manager.h"
+#include "mgr-app-widget.h"
+#include "mgr-app-common-util.h"
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+#include <cert-svc/cpkcs12.h>
+#include <cert-svc/cstring.h>
+
+#define STR_VIEWTYPE                "viewtype"
+#define STR_MANAGE_APPLICATIONS     "manage-applications"
+
+static struct ug_data *ugd = NULL;
+struct ug_data *get_ug_data() {
+    LOGD("get_ug_data()");
+    return ugd;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)mode;
+
+    retv_if(ug == NULL, NULL);
+    retv_if(priv == NULL, NULL);
+
+    ugd = priv;
+    ugd->ug = ug;
+
+    ugd->service = &service;
+
+    bindtextdomain(PACKAGE, LOCALEDIR);
+
+    ugd->win_main = ug_get_parent_layout(ug);
+    retv_if(ugd->win_main == NULL, NULL);
+
+    ugd->bg = mgr_app_widget_create_bg(ugd->win_main);
+    if (!ugd->bg) {
+        MGR_APP_DEBUG_ERR("ugd->bg is null");
+        MGR_APP_MEM_FREE(ugd->win_main);
+        return NULL;
+    }
+
+    ugd->layout_main = mgr_app_widget_create_main_layout(ugd->win_main);
+    if (!ugd->layout_main) {
+        MGR_APP_DEBUG_ERR("ugd->layout_main is null");
+        MGR_APP_MEM_FREE(ugd->win_main);
+        MGR_APP_MEM_FREE(ugd->bg);
+        MGR_APP_END();
+        return NULL;
+    }
+
+    elm_object_part_content_set(ugd->layout_main, "elm.swallow.bg", ugd->bg);
+
+    ugd->navi_bar = mgr_app_view_create_base_navigation(ugd->layout_main);
+    if (!ugd->navi_bar) {
+        MGR_APP_DEBUG_ERR("ugd->navi_bar is null");
+        MGR_APP_MEM_FREE(ugd->win_main);
+        MGR_APP_MEM_FREE(ugd->bg);
+        MGR_APP_MEM_FREE(ugd->layout_main);
+        MGR_APP_END();
+        return NULL;
+    }
+
+    mgr_app_view_set_win_main(ugd->win_main);
+    mgr_app_view_set_bg(ugd->bg);
+    mgr_app_view_set_layout_main(ugd->layout_main);
+    mgr_app_view_set_navibar(ugd->navi_bar);
+    mgr_app_view_set_viewlist(ugd->view_list);
+
+    cert_selection_cb((void*) ugd, NULL, NULL);
+
+    MGR_APP_END();
+    return ugd->layout_main;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)ug;
+    (void)service;
+    (void)priv;
+    MGR_APP_END();
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)ug;
+    (void)service;
+    (void)priv;
+    MGR_APP_END();
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)ug;
+    (void)service;
+    (void)priv;
+    MGR_APP_END();
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)service;
+
+    ret_if(ug == NULL);
+    ret_if(priv == NULL);
+
+    ugd = priv;
+
+    evas_object_del(ugd->layout_main);
+    ugd->layout_main = NULL;
+    MGR_APP_END();
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+
+    (void)ug;
+    (void)msg;
+    (void)service;
+    (void)priv;
+    MGR_APP_END();
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)ug;
+    (void)service;
+    (void)priv;
+
+    switch (event) {
+    case UG_EVENT_LOW_MEMORY:
+        break;
+    case UG_EVENT_LOW_BATTERY:
+        break;
+    case UG_EVENT_LANG_CHANGE:
+        break;
+    case UG_EVENT_ROTATE_PORTRAIT:
+        break;
+    case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+        break;
+    case UG_EVENT_ROTATE_LANDSCAPE:
+        break;
+    case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+        break;
+    default:
+        break;
+    }
+    MGR_APP_END();
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)service;
+    (void)priv;
+
+    ret_if(ug == NULL);
+
+    switch (event) {
+    case UG_KEY_EVENT_END:
+        ug_destroy_me(ug);
+        break;
+    default:
+        break;
+    }
+    MGR_APP_END();
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) {
+    MGR_APP_BEGIN();
+
+    retv_if(ops == NULL, -1);
+
+    MGR_APP_MEM_MALLOC(ugd, (1), struct ug_data);
+
+    ops->create = on_create;
+    ops->start = on_start;
+    ops->pause = on_pause;
+    ops->resume = on_resume;
+    ops->destroy = on_destroy;
+    ops->message = on_message;
+    ops->event = on_event;
+    ops->key_event = on_key_event;
+    ops->priv = ugd;
+    ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+    MGR_APP_END();
+    return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) {
+    MGR_APP_BEGIN();
+
+    ret_if(ops == NULL);
+
+    ugd = ops->priv;
+    MGR_APP_MEM_FREE(ugd);
+
+    MGR_APP_END();
+}
+
+UG_MODULE_API int setting_plugin_reset(service_h service, void *priv) {
+    MGR_APP_BEGIN();
+    (void)service;
+    (void)priv;
+    /* nothing to do for Setting>Reset */
+    MGR_APP_END();
+    return 0;
+}
diff --git a/cert-selection-ug/src/cert-selection.c b/cert-selection-ug/src/cert-selection.c
new file mode 100644 (file)
index 0000000..e97229e
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        cert-selection.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ */
+
+#include <Elementary.h>
+#include "dlog.h"
+
+#include <stdio.h>
+#include <dirent.h>
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+#include <cert-svc/cpkcs12.h>
+#include <cert-svc/cstring.h>
+
+#include "cert-selection-uigadget.h"
+
+#define CERT_MAX_DATA_SIZE  256
+
+static CertSvcInstance instance;
+static CertSvcStringList stringList;
+static Elm_Genlist_Item_Class itc;
+static int state_index = 0; //selected radio index
+static char *selected_name = NULL;
+static Eina_Bool selected = EINA_FALSE;
+static Evas_Object *radio_main = NULL;
+
+static void _open(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("selected index = %d", state_index);
+    (void)obj;
+    (void)event_info;
+
+    struct ug_data *ad = (struct ug_data*) data;
+
+    if (selected) {
+        service_h service;
+        service_create(&service);
+        service_add_extra_data(service, "selected-cert", selected_name);
+        ug_send_result(ad->ug, service);
+        LOGD("result send");
+    }
+
+    /* bg must delete before starting on_destroy */
+    LOGD("Closing UG");
+    free(selected_name);
+    evas_object_del(ad->bg);
+    ad->bg = NULL;
+    ug_destroy_me(ad->ug);
+}
+
+static void _cancel(void *data, Evas_Object *obj, void *event_info) {
+
+    (void)obj;
+    (void)event_info;
+
+    struct ug_data *ad = (struct ug_data*) data;
+
+    /* bg must delete before starting on_destroy */
+    LOGD("Closing UG");
+    free(selected_name);
+    evas_object_del(ad->bg);
+    ad->bg = NULL;
+    ug_destroy_me(ad->ug);
+}
+
+static char *_gl_text_get(void *data, Evas_Object *obj, const char *part) {
+
+    (void)obj;
+    int index = (int) data;
+
+    CertSvcString buffer;
+    if (certsvc_string_list_get_one(stringList, index, &buffer) != CERTSVC_SUCCESS) {
+        return strdup("ERROR WHILE LOADING STRING");
+    }
+    char *char_buffer;
+    char_buffer = strndup(buffer.privateHandler, buffer.privateLength);
+    certsvc_string_free(buffer);
+
+    if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
+        return char_buffer;
+    } else if (!strcmp(part, "elm.text.2")) {
+        return strdup("example@address.net");
+    }
+
+    return NULL;
+}
+
+static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part) {
+
+    int index = (int) data;
+    Evas_Object *radio;
+
+    if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
+        radio = elm_radio_add(obj);
+        elm_radio_state_value_set(radio, index);
+        elm_radio_group_add(radio, radio_main);
+        if (index == state_index)
+            elm_radio_value_set(radio, state_index);
+        evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+        return radio;
+    }
+    return NULL;
+}
+
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part) {
+
+    (void)data;
+    (void)obj;
+    (void)part;
+
+    return EINA_FALSE;
+}
+
+static void _gl_del(void *data, Evas_Object *obj) {
+
+    (void)data;
+    (void)obj;
+
+    return;
+}
+
+static void _gl_sel(void *data, Evas_Object *obj, void *event_info) {
+
+    (void)obj;
+
+    int pkcs_index = (int) data;
+    int index;
+    Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+    if (item) {
+        index = (int) elm_object_item_data_get(item);
+        state_index = index;
+        elm_genlist_item_update(item);
+    }
+    selected = EINA_TRUE;
+
+    CertSvcString buffer;
+    if (certsvc_string_list_get_one(stringList, pkcs_index, &buffer) != CERTSVC_SUCCESS) {
+        selected = EINA_FALSE;
+        return;
+    }
+    if(selected_name)
+        free(selected_name);
+    selected_name = malloc((buffer.privateLength+1) * sizeof(char));
+    strncpy(selected_name, buffer.privateHandler, buffer.privateLength);
+    selected_name[buffer.privateLength] = 0;
+    LOGD("SELECTED NAME = %s", selected_name);
+    certsvc_string_free(buffer);
+}
+
+void cert_selection_cb(void *data, Evas_Object *obj, void *event_info) {
+    LOGD("cert_selection");
+
+    (void)data;
+    (void)obj;
+    (void)event_info;
+
+    struct ug_data *ad = (struct ug_data *) data;
+    Evas_Object *genlist = NULL;
+    Evas_Object *layout = NULL;
+    Evas_Object *toolbar = NULL;
+
+    layout = elm_layout_add(ad->win_main);
+    if (!layout)
+        return;
+
+    toolbar = elm_toolbar_add(layout);
+    if (!toolbar)
+        return;
+    elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+    elm_toolbar_item_append(toolbar, NULL, "Open", _open, ad);
+    elm_toolbar_item_append(toolbar, NULL, "Cancel", _cancel, ad);
+
+    // Create genlist;
+    genlist = elm_genlist_add(layout);
+    if (!radio_main) {
+        radio_main = elm_radio_add(genlist);
+        elm_radio_state_value_set(radio_main, 0);
+        elm_radio_value_set(radio_main, 0);
+    }
+
+    // Set genlist item class
+    itc.item_style = "2text.1icon.2";
+    itc.func.text_get = _gl_text_get;
+    itc.func.content_get = _gl_content_get;
+    itc.func.state_get = _gl_state_get;
+    itc.func.del = _gl_del;
+
+    if (certsvc_instance_new(&instance) == CERTSVC_FAIL) {
+        LOGD("CERTSVC_FAIL");
+        return;
+    }
+    certsvc_pkcs12_get_id_list(instance, &stringList);
+
+    int i;
+    int list_length;
+    certsvc_string_list_get_length(stringList, &list_length);
+    for (i = 0; i < list_length; i++) {
+        elm_genlist_item_append(genlist, &itc, (void*) i, NULL, ELM_GENLIST_ITEM_NONE, _gl_sel, (void*) i);
+
+    }
+
+    Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, "Pick Certificate", NULL, NULL, genlist, NULL);
+    elm_object_item_part_content_set(itm, "controlbar", toolbar);
+
+    LOGD("end of cert_selection");
+}
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..b01c582
--- /dev/null
@@ -0,0 +1,40 @@
+pkg_check_modules(pkgs_common
+    REQUIRED
+    appcore-efl
+    elementary
+    dlog
+    glib-2.0
+    evas
+    edje
+)
+
+SET(SRCS
+    src/mgr-app-common-util.c
+    src/mgr-app-view-manager.c
+    src/mgr-app-widget.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+INCLUDE_DIRECTORIES(${pkgs_common_INCLUDE_DIRS})
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_LIBRARY(${TARGET_CERT_COMMON} SHARED ${SRCS})
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_COMMON} ${pkgs_common_LDFLAGS})
+
+INSTALL(TARGETS
+    ${TARGET_CERT_COMMON}
+    DESTINATION
+    ${LIBDIR}
+)
diff --git a/common/include/mgr-app-common-debug.h b/common/include/mgr-app-common-debug.h
new file mode 100755 (executable)
index 0000000..e93b44d
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __MGR_APP_DEBUG_H__
+#define __MGR_APP_DEBUG_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <dlog.h>
+
+#define COLOR_RED              "\033[0;31m"
+#define COLOR_GREEN    "\033[0;32m"
+#define COLOR_BROWN    "\033[0;33m"
+#define COLOR_BLUE             "\033[0;34m"
+#define COLOR_PURPLE   "\033[0;35m"
+#define COLOR_CYAN             "\033[0;36m"
+#define COLOR_LIGHTBLUE "\033[0;37m"
+#define COLOR_END              "\033[0;m"
+
+
+#ifdef LOG_TAG
+    #undef LOG_TAG
+#endif
+
+#ifndef LOG_TAG
+    #define LOG_TAG "CERT-SVC-UI"
+#endif
+
+#define MGR_APP_ENABLE_DLOG
+
+#ifdef MGR_APP_ENABLE_DLOG
+#define MGR_APP_DEBUG(fmt, ...)\
+       do\
+       {\
+               LOGD("[%s(): %d]" fmt, __FUNCTION__, __LINE__,##__VA_ARGS__);\
+       } while (0)
+
+#define MGR_APP_DEBUG_ERR(fmt, ...)\
+       do\
+       {\
+               LOGE(COLOR_RED"[%s(): %d]" fmt COLOR_END, __FUNCTION__, __LINE__,##__VA_ARGS__);\
+       }while (0)
+
+#define MGR_APP_BEGIN() \
+       do\
+    {\
+               LOGD(COLOR_BLUE"[%s(): %d] BEGIN >>>>"COLOR_END, __FUNCTION__ ,__LINE__);\
+    } while( 0 )
+
+#define MGR_APP_END() \
+       do\
+    {\
+               LOGD(COLOR_BLUE"[%s(): %d] END <<<<"COLOR_END, __FUNCTION__,__LINE__ );\
+    } \
+    while( 0 )
+
+#else
+#define MGR_APP_DEBUG(fmt, ...) \
+       do\
+       {\
+               printf("\n [%s: %s: %s(): %d] " fmt"\n",  APPNAME, rindex(__FILE__, '/')+1, __FUNCTION__, __LINE__, ##__VA_ARGS__);\
+       } while (0)
+
+#define MGR_APP_BEGIN() \
+       do\
+    {\
+        printf("\n [%s: %s: %d] : BEGIN >>>> %s() \n", APPNAME, rindex(__FILE__, '/')+1,  __LINE__ , __FUNCTION__);\
+    } while( 0 )
+
+#define MGR_APP_END() \
+       do\
+    {\
+        printf("\n [%s: %s: %d]: END   <<<< %s()\n", APPNAME, rindex(__FILE__, '/')+1,  __LINE__ , __FUNCTION__); \
+    } \
+    while( 0 )
+#endif
+
+
+#define ret_if(expr) do { \
+       if (expr) { \
+               MGR_APP_DEBUG_ERR("(%s) ", #expr); \
+               MGR_APP_END();\
+               return; \
+       } \
+} while (0)
+#define retm_if(expr, fmt, arg...) do { \
+        if (expr) { \
+                MGR_APP_DEBUG_ERR("(%s) "fmt, #expr, ##arg); \
+                MGR_APP_END();\
+                return; \
+        } \
+ } while (0)
+#define retv_if(expr, val) do { \
+               if (expr) { \
+                       MGR_APP_DEBUG_ERR("(%s) ", #expr); \
+                       MGR_APP_END();\
+                       return (val); \
+               } \
+       } while (0)
+#define retvm_if(expr, val, fmt, arg...) do { \
+       if (expr) { \
+               MGR_APP_DEBUG_ERR("(%s) "fmt, #expr, ##arg); \
+               MGR_APP_END();\
+               return (val); \
+       } \
+} while (0)
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__MGR_APP_DEBUG_H__*/
+
diff --git a/common/include/mgr-app-common-error.h b/common/include/mgr-app-common-error.h
new file mode 100755 (executable)
index 0000000..de4c98a
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __MGR_APP_ERROR_H__
+#define __MGR_APP_ERROR_H__
+
+typedef enum {
+       MGR_APP_ERROR   = -1,
+       MGR_APP_OK              = 0
+} mgr_app_result_e;
+
+#endif /*__MGR_APP_ERROR_H__*/
diff --git a/common/include/mgr-app-common-util.h b/common/include/mgr-app-common-util.h
new file mode 100755 (executable)
index 0000000..5d55e42
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __MGR_APP_COMMON_UTIL_H__
+#define __MGR_APP_COMMON_UTIL_H__
+
+#include <glib.h>
+#include <assert.h>
+
+
+#define _STRNCPY(DEST, SRC, LEN)               _strncpy(DEST, SRC, LEN , __FILE__, __LINE__)
+#define _STRNCAT(DEST, SRC, DEST_SIZE)         _strncat(DEST, SRC, DEST_SIZE, __FILE__, __LINE__)
+#define _STRNCMP(SRC1, SRC2, LEN)              _strncmp(SRC1, SRC2, LEN, __FILE__, __LINE__)
+
+char*  _strncpy(char *dest, const char *src, int len, char *file, int line);
+char*  _strncat(char *dest, const char *src, int dest_size, char *file, int line);
+int            _strncmp(const char *src1, const char *src2, int len, char *file, int line);
+
+
+#define MGR_APP_MAX_HEAP_SIZE  5*1024*1024
+#define _EDJ(obj)                              elm_layout_edje_get(obj)
+
+#define MGR_APP_MEM_MALLOC(ptr,no_elements,type)       \
+               do {\
+                       if ((gint)(no_elements)<=0) {\
+                               ptr = NULL;\
+                       }\
+                       else if (MGR_APP_MAX_HEAP_SIZE<(gint)(no_elements)*sizeof(type)) {\
+                               assert(0);\
+                       }\
+                       else {\
+                               ptr=(type*)g_malloc0((gint)(no_elements)*sizeof(type));\
+                               assert(ptr);\
+                               MGR_APP_DEBUG("Allocate memory. pointer:%p\n", ptr);\
+                       }\
+               } while (0)
+
+#define MGR_APP_MEM_STRDUP(ptr,str)    \
+               do {\
+                       if ((str) != NULL) {\
+                               ptr = strdup((const char *)(str));\
+                               assert(ptr);\
+                               MGR_APP_DEBUG("Allocate memory. pointer:%p\n", (ptr));\
+                       }\
+                       else {\
+                               (ptr) = NULL;\
+                       }\
+               } while (0)
+
+#define MGR_APP_MEM_STRNDUP(ptr,str,buf_size)\
+               do {\
+                       if ((str) != NULL && (buf_size) >= 0 ) {\
+                               ptr = strndup((const char *)(str),(buf_size));\
+                               assert(ptr);\
+                               MGR_APP_DEBUG("Allocate memory. pointer:%p\n", (ptr));\
+                       }\
+                       else {\
+                               (ptr) = NULL;\
+                       }\
+               } while (0)
+
+#define MGR_APP_MEM_FREE(ptr)  \
+               do {\
+                       if (ptr != NULL) {\
+                               MGR_APP_DEBUG("Free memory. pointer:%p\n", ptr);\
+                               g_free(ptr);\
+                               ptr = NULL;\
+                       }\
+               } while (0)
+
+#endif /*__MGR_APP_COMMON_UTIL_H__*/
+
diff --git a/common/include/mgr-app-view-manager.h b/common/include/mgr-app-view-manager.h
new file mode 100755 (executable)
index 0000000..4cf198c
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __MGR_APP_VIEW_MANAGER_H__
+#define __MGR_APP_VIEW_MANAGER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "mgr-app-common-error.h"
+
+typedef struct _mgr_app_view_common_data_t {
+       Evas_Object     *common_win_main;
+       Evas_Object             *common_bg;
+       Evas_Object     *common_layout_main;
+       Evas_Object     *common_navibar;
+
+       Evas_Object     *view_cbar;
+       Evas_Object     *view_layout;
+
+       char                    *title;
+       char                    *btn1_label;
+       Evas_Smart_Cb   btn1_func;
+
+       void                    *user_view_data;
+} mgr_app_view_common_data_t;
+
+typedef struct _mgr_app_view_t {
+       Eina_Bool                       is_created;
+
+       Evas_Object             *(*create)(void *data);
+       Evas_Object             *(*setcbar)(void *data);
+       int                     (*setnavibar)(void *data);
+       int                     (*destroy)(void *data);
+       int                     (*update)(void *data);
+
+       mgr_app_view_common_data_t *view_common_data;
+} mgr_app_view_t;
+
+void mgr_app_view_set_win_main(Evas_Object *winmain);
+void mgr_app_view_set_bg(Evas_Object *bg);
+void mgr_app_view_set_layout_main(Evas_Object *layoutmain);
+void mgr_app_view_set_navibar(Evas_Object *navibar);
+void mgr_app_view_set_popup(Evas_Object *popup);
+void mgr_app_view_set_viewlist(GList *viewlist);
+
+Evas_Object *mgr_app_view_get_win_main(void);
+Evas_Object *mgr_app_view_get_bg(void);
+Evas_Object *mgr_app_view_get_layout_main(void);
+Evas_Object *mgr_app_view_get_navibar(void);
+Evas_Object *mgr_app_view_get_popup(void);
+GList *mgr_app_view_get_viewlist(void *data);
+
+mgr_app_result_e mgr_app_view_create(mgr_app_view_t *view, void *data);
+mgr_app_result_e mgr_app_view_destroy(mgr_app_view_t *view, void *data);
+mgr_app_result_e mgr_app_view_update(mgr_app_view_t *view, void *data);
+mgr_app_result_e mgr_app_view_cleanup(mgr_app_view_t *view, void *data);
+mgr_app_result_e mgr_app_view_manager_navibar_title_update(const char *title, mgr_app_view_t *view, void *data);
+mgr_app_result_e mgr_app_view_manager_set_navibar(mgr_app_view_common_data_t *view_data, char *title, char *btn1_label, Evas_Smart_Cb btn1_func, const char *btn2_label, Evas_Smart_Cb btn2_func);
+void mgr_app_view_common_back_cb(void *data, Eina_Bool is_update);
+void mgr_app_view_go_special_view(mgr_app_view_t *target_view, void *data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__MGR_APP_VIEW_MANAGER_H__*/
+
diff --git a/common/include/mgr-app-widget.h b/common/include/mgr-app-widget.h
new file mode 100755 (executable)
index 0000000..e688e3d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+#ifndef __MGR_APP_WIDGET_H__
+#define __MGR_APP_WIDGET_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <Evas.h>
+#include <Elementary.h>
+
+Evas_Object *mgr_app_view_create_base_navigation(Evas_Object *parent);
+Evas_Object *mgr_app_widget_create_bg(Evas_Object *parent);
+Evas_Object *mgr_app_widget_create_main_layout(Evas_Object *parent);
+Evas_Object *mgr_app_create_layout(Evas_Object *parent, const char *clas, const char *group, const char *style);
+Evas_Object *mgr_app_create_layout_file(Evas_Object *parent, const char *filename, const char *group);
+Evas_Object *mgr_app_create_scroller(Evas_Object *parent);
+Evas_Object *mgr_app_create_box(Evas_Object *parent, Eina_Bool is_hori);
+Evas_Object *mgr_app_create_button(Evas_Object *parent, void (*func) (void *data, Evas_Object *obj, void *event_info), const char *label, const char *swallow, const char *style, void *data);
+Evas_Object *mgr_app_create_label(Evas_Object *parent, const char *text, const char *swallow, void *data);
+void mgr_app_box_pack_end_separator(Evas_Object *box, const char *style);
+
+void mgr_app_set_transit_effect(Evas_Object *parent, int effect_type);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /*__MGR_APP_WIDGET_H__*/
diff --git a/common/src/mgr-app-common-util.c b/common/src/mgr-app-common-util.c
new file mode 100755 (executable)
index 0000000..1ba64b1
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#include "mgr-app-common-util.h"
+#include "mgr-app-common-debug.h"
+#include <string.h>
+
+char *_strncpy(char *dest, const char *src, int len, char *file, int line)
+{
+       if (dest == NULL || src == NULL || len <= 0) {
+               MGR_APP_DEBUG_ERR("STRNCPY ERROR at %s(%d)", file, line);
+               return dest;
+       }
+
+       strncpy(dest, src, len);
+       dest[len] = '\0';
+
+       return dest;
+}
+
+char *_strncat(char *dest, const char *src, int dest_size, char *file, int line)
+{
+       if (dest == NULL || src == NULL || dest_size <= 0) {
+               MGR_APP_DEBUG_ERR("STRNCAT ERROR at %s(%d)", file, line);
+               return dest;
+       }
+
+       return strncat(dest, src, dest_size);
+}
+
+int _strncmp(const char *src1, const char *src2, int len, char *file, int line)
+{
+       if (src1 == NULL || src2 == NULL || len <= 0) {
+               MGR_APP_DEBUG_ERR("STRNCMP ERROR at %s(%d)", file, line);
+               return -1;
+       }
+
+       return strncmp(src1, src2, len);
+}
+
+
diff --git a/common/src/mgr-app-view-manager.c b/common/src/mgr-app-view-manager.c
new file mode 100755 (executable)
index 0000000..8f6df4e
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#include "mgr-app-view-manager.h"
+#include "mgr-app-widget.h"
+#include "mgr-app-common-debug.h"
+#include "mgr-app-common-util.h"
+
+static Evas_Object  *_win_main     = NULL;
+static Evas_Object  *_bg           = NULL;
+static Evas_Object  *_layout_main  = NULL;
+static Evas_Object  *_navi_bar     = NULL;
+static Evas_Object  *_popup        = NULL;
+static GList        *_view_list    = NULL;
+
+static mgr_app_result_e _mgr_app_view_navigation_push(mgr_app_view_t *view, void *data);
+
+static mgr_app_result_e _mgr_app_view_navigation_push(mgr_app_view_t *view, void *data) {
+
+    MGR_APP_BEGIN();
+
+    Evas_Object *parent_navibar = view->view_common_data->common_navibar;
+    Evas_Object *view_layout = view->view_common_data->view_layout;
+    const char *title = view->view_common_data->title;
+    Evas_Smart_Cb btn1_func = view->view_common_data->btn1_func;
+    Evas_Object *cbar = view->view_common_data->view_cbar;
+    Evas_Object *l_button = NULL;
+    Elm_Object_Item *navi_it = NULL;
+
+    retv_if(view_layout == NULL, MGR_APP_ERROR);
+    retv_if(parent_navibar == NULL, MGR_APP_ERROR);
+
+    l_button = elm_button_add(parent_navibar);
+    navi_it = elm_naviframe_item_push(parent_navibar, title, l_button, NULL, view_layout, NULL);
+
+    if (btn1_func != NULL) {
+        elm_object_style_set(l_button, "naviframe/back_btn/default");
+        evas_object_smart_callback_add(l_button, "clicked", btn1_func, data);
+    } //else {
+      //       /* remove the arrow button. */
+      //elm_object_item_part_content_set(navi_it,  "prev_btn", l_button);
+    //}
+
+    if (cbar != NULL) {
+        elm_object_item_part_content_set(navi_it, "optionheader", cbar);
+    }
+
+    MGR_APP_END();
+    return MGR_APP_OK;
+}
+
+
+void mgr_app_view_set_win_main(Evas_Object *winmain)
+{
+       _win_main = winmain;
+}
+
+Evas_Object *mgr_app_view_get_win_main(void)
+{
+       return _win_main;
+}
+
+void mgr_app_view_set_bg(Evas_Object *bg)
+{
+       _bg = bg;
+}
+
+Evas_Object *mgr_app_view_get_bg(void)
+{
+       return _bg;
+}
+
+void mgr_app_view_set_layout_main(Evas_Object *layoutmain)
+{
+       _layout_main = layoutmain;
+}
+
+Evas_Object *mgr_app_view_get_layout_main(void)
+{
+       return _layout_main;
+}
+
+void mgr_app_view_set_navibar(Evas_Object *navibar)
+{
+       _navi_bar = navibar;
+}
+
+Evas_Object *mgr_app_view_get_navibar(void)
+{
+       return _navi_bar;
+}
+
+void mgr_app_view_set_popup(Evas_Object *popup)
+{
+       _popup = popup;
+}
+
+Evas_Object *mgr_app_view_get_popup(void)
+{
+       return _popup;
+}
+
+void mgr_app_view_set_viewlist(GList *viewlist)
+{
+       _view_list = viewlist;
+}
+
+GList *mgr_app_view_get_viewlist(void *data)
+{
+       return _view_list;
+}
+
+mgr_app_result_e mgr_app_view_create(mgr_app_view_t *view, void *data)
+{
+       MGR_APP_BEGIN();
+
+       retv_if(view->is_created == TRUE, MGR_APP_ERROR);
+       retv_if(data == NULL, MGR_APP_ERROR);
+       retv_if(_win_main == NULL, MGR_APP_ERROR);
+
+       Evas_Object *view_base_ly               = NULL;
+       Evas_Object *navibar                    = NULL;
+       Evas_Object *base_layout_main = NULL;
+       Evas_Object     *bg                                     = NULL;
+       Evas_Object *cbar                               = NULL;
+       GList           *first_view             = NULL;
+       GList           *last_view              = NULL;
+       GList           *target_view            = NULL;
+       GList           *target_view_next = NULL;
+       GList           *target_view_prev = NULL;
+
+       MGR_APP_MEM_MALLOC(view->view_common_data, 1, mgr_app_view_common_data_t);
+
+       if (_bg == NULL) {
+               bg = mgr_app_widget_create_bg(_win_main);
+               retv_if(bg == NULL, MGR_APP_ERROR);
+               _bg = bg;
+       }
+       if (_layout_main == NULL) {
+               base_layout_main = mgr_app_widget_create_main_layout(_win_main);
+               retv_if(base_layout_main == NULL, MGR_APP_ERROR);
+               _layout_main = base_layout_main;
+       }
+       if (_navi_bar == NULL) {
+               navibar = mgr_app_view_create_base_navigation(_layout_main);
+               retv_if(navibar == NULL, MGR_APP_ERROR);
+               _navi_bar = navibar;
+       }
+
+       view->view_common_data->common_navibar          = _navi_bar;
+       view->view_common_data->common_layout_main      = _layout_main;
+       view->view_common_data->common_bg                       = _bg;
+
+       MGR_APP_DEBUG("view's pointer:%p\n", view);
+       target_view = g_list_find(_view_list, view);
+       if (target_view == NULL) {
+               MGR_APP_DEBUG("there is no same view in the view_list. so we should add the view to view list\n");
+               _view_list=first_view = g_list_append(_view_list, view);
+               MGR_APP_DEBUG("first_view's pointer:%p\n", first_view);
+               MGR_APP_DEBUG("last_view's pointer:%p\n", g_list_last(_view_list));
+               MGR_APP_DEBUG("first_view's pointer:%p\n", g_list_first(_view_list));
+       } else {
+               MGR_APP_DEBUG("there is same view in the view_list. so we should move the view to last of view list\n");
+               target_view_prev = g_list_previous(target_view);
+               target_view_next = g_list_next(target_view);
+               last_view = g_list_last(_view_list);
+
+               if (target_view_prev == NULL) {
+                       MGR_APP_DEBUG_ERR("target_view_prev is null");
+                       //return MGR_APP_ERROR;
+               } else if (target_view_next == NULL) {
+                       MGR_APP_DEBUG_ERR("target_view_next is null");
+                       //return MGR_APP_ERROR;
+               } else {
+                       target_view_prev->next = target_view_next;
+                       target_view_next->prev = target_view_prev;
+               }
+
+               last_view->next         = target_view;
+               target_view->prev       = last_view;
+               target_view->next       = NULL;
+       }
+
+       view_base_ly = view->create(data);
+       if (view_base_ly == NULL) {
+               return mgr_app_view_cleanup(view, data);
+       }
+       view->view_common_data->view_layout = view_base_ly;
+
+       cbar = view->setcbar(data);
+       view->view_common_data->view_cbar= cbar;
+
+       view->setnavibar(data);
+
+       _mgr_app_view_navigation_push(view, data);
+
+       view->is_created = TRUE;
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+mgr_app_result_e mgr_app_view_destroy(mgr_app_view_t *view, void *data)
+{
+       MGR_APP_BEGIN();
+       retv_if(data == NULL, -1);
+       retv_if(view == NULL, -1);
+       GList *target_view = NULL;
+
+       view->destroy(data);
+
+       retv_if(view->view_common_data == NULL, -1);
+       MGR_APP_MEM_FREE(view->view_common_data->user_view_data);
+       MGR_APP_MEM_FREE(view->view_common_data->title);
+       MGR_APP_MEM_FREE(view->view_common_data->btn1_label);
+       MGR_APP_MEM_FREE(view->view_common_data);
+
+       view->is_created = FALSE;
+       target_view = g_list_find(_view_list, view);
+       if (target_view != NULL) {
+               MGR_APP_DEBUG("find view in view_list\n");
+               _view_list = g_list_delete_link(_view_list, target_view);
+       } else {
+               MGR_APP_DEBUG("Can't find view in view_list\n");
+       }
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+mgr_app_result_e mgr_app_view_update(mgr_app_view_t *view, void *data)
+{
+       MGR_APP_BEGIN();
+
+       view->update(data);
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+mgr_app_result_e mgr_app_view_cleanup(mgr_app_view_t *view, void *data)
+{
+       MGR_APP_BEGIN();
+       retv_if(data == NULL, -1);
+
+       GList                   *last_list      = NULL;
+       mgr_app_view_t  *target_view    = NULL;
+
+       last_list = g_list_last(_view_list);
+       MGR_APP_DEBUG("last_list pointer:%p\n", last_list);
+       while (last_list != NULL) {
+               MGR_APP_DEBUG("last_list pointer:%p\n", last_list);
+               target_view = (mgr_app_view_t *)last_list->data;
+               mgr_app_view_destroy(target_view, data);
+               MGR_APP_BEGIN();
+               last_list = g_list_last(_view_list);
+       }
+
+       g_list_free(_view_list);
+       _view_list = NULL;
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+mgr_app_result_e mgr_app_view_manager_set_navibar(mgr_app_view_common_data_t *view_common_data, char *title, char *btn1_label, Evas_Smart_Cb btn1_func, const char *btn2_label,        Evas_Smart_Cb btn2_func)
+{
+       MGR_APP_BEGIN();
+
+       MGR_APP_MEM_STRDUP(view_common_data->title, title);
+       MGR_APP_MEM_STRDUP(view_common_data->btn1_label, btn1_label);
+       view_common_data->btn1_func = btn1_func;
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+mgr_app_result_e mgr_app_view_manager_navibar_title_update(const char *title, mgr_app_view_t *view, void *data)
+{
+       MGR_APP_BEGIN();
+
+       retv_if(view == NULL, MGR_APP_ERROR);
+
+       mgr_app_view_common_data_t *view_common_data = NULL;
+       Evas_Object *parent_navibar = NULL;
+       Elm_Object_Item *navi_it = NULL;
+
+       view_common_data = view->view_common_data;
+       retv_if(view_common_data == NULL, MGR_APP_ERROR);
+
+       parent_navibar = view_common_data->common_navibar;
+       retv_if(parent_navibar == NULL, MGR_APP_ERROR);
+
+       MGR_APP_MEM_FREE(view_common_data->title);
+       MGR_APP_MEM_STRDUP(view_common_data->title, title);
+
+       navi_it = elm_naviframe_top_item_get(_navi_bar);
+       elm_object_item_text_set(navi_it, view_common_data->title);
+
+       MGR_APP_END();
+       return MGR_APP_OK;
+}
+
+void mgr_app_view_common_back_cb(void *data, Eina_Bool is_update)
+{
+       MGR_APP_BEGIN();
+
+       ret_if(data == NULL);
+
+       GList *last     = NULL;
+       GList *update   = NULL;
+
+       Elm_Object_Item *top_it = NULL;
+       Elm_Object_Item *bottom_it = NULL;
+
+       top_it = elm_naviframe_top_item_get(_navi_bar);
+       bottom_it = elm_naviframe_bottom_item_get(_navi_bar);
+       
+       if (elm_object_item_content_get(top_it) == elm_object_item_content_get(bottom_it)) {
+               MGR_APP_END();
+               mgr_app_view_cleanup(NULL, data);
+       } else {
+               elm_naviframe_item_pop(_navi_bar);
+               if (_view_list != NULL) {
+                       last = g_list_last(_view_list);
+                       if (last != NULL) {
+                               mgr_app_view_t *destroy_view = NULL;
+                               mgr_app_view_t *update_view = NULL;
+
+                               update = g_list_previous(last);
+                               if (update != NULL && is_update) {
+                                       update_view = update->data;
+                                       mgr_app_view_update(update_view, data);
+                               } else {
+                                       MGR_APP_DEBUG("previous view is null or don't need to update");
+                               }
+
+                               destroy_view = last->data;
+                               mgr_app_view_destroy((mgr_app_view_t*)destroy_view, data);
+                       }
+                       MGR_APP_DEBUG("last_view pointer:%p\n", last);
+               }
+       }
+
+       MGR_APP_END();
+}
diff --git a/common/src/mgr-app-widget.c b/common/src/mgr-app-widget.c
new file mode 100755 (executable)
index 0000000..5599880
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#include "mgr-app-widget.h"
+#include "mgr-app-common-debug.h"
+#include "mgr-app-common-util.h"
+#include "mgr-app-view-manager.h"
+
+typedef struct _Custom_Effect Custom_Effect;
+
+struct _size {
+       Evas_Coord w;
+       Evas_Coord h;
+};
+
+struct _Custom_Effect {
+       struct _size from;
+       struct _size to;
+};
+
+static Elm_Transit_Effect *__custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
+{
+       MGR_APP_BEGIN();
+
+       Custom_Effect *custom_effect = NULL;
+
+       custom_effect = calloc(1, sizeof(Custom_Effect));
+       if (!custom_effect) {
+               return NULL;
+       }
+
+       custom_effect->from.w = from_w;
+       custom_effect->from.h = from_h;
+       custom_effect->to.w = to_w - from_w;
+       custom_effect->to.h = to_h - from_h;
+
+       MGR_APP_END();
+       return custom_effect;
+}
+
+static void _custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress)
+{
+       MGR_APP_BEGIN();
+
+       if (!effect) {
+               return;
+       }
+       
+       Evas_Coord w = 0;
+       Evas_Coord h = 0;
+       Evas_Object *obj = NULL;
+       const Eina_List *elist = NULL;
+
+       Custom_Effect *custom_effect = (Custom_Effect *)effect;
+       const Eina_List *objs = elm_transit_objects_get(transit);
+
+       if (progress < 0.5) {
+               h = custom_effect->from.h + (custom_effect->to.h * progress * 2);
+               w = custom_effect->from.w;
+    } else {
+        h = custom_effect->from.h + custom_effect->to.h;
+        w = custom_effect->from.w + (custom_effect->to.w * (progress - 0.5) * 2);
+       }
+
+       EINA_LIST_FOREACH(objs, elist, obj)
+       evas_object_resize(obj, w, h);
+
+       MGR_APP_END();
+}
+
+static void _custom_context_free(Elm_Transit_Effect *effect)
+{
+       MGR_APP_BEGIN();
+
+       Custom_Effect *custom_effect = (Custom_Effect *)effect;
+       MGR_APP_MEM_FREE(custom_effect);
+
+       MGR_APP_END();
+}
+
+Evas_Object *mgr_app_view_create_base_navigation(Evas_Object *parent)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *navibar = NULL;
+
+       navibar = elm_naviframe_add(parent);
+       elm_object_part_content_set(parent, "elm.swallow.content", navibar);
+
+       evas_object_show(navibar);
+
+       MGR_APP_END();
+       return navibar;
+}
+
+Evas_Object *mgr_app_widget_create_bg(Evas_Object *parent)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *bg = NULL;
+
+       bg = elm_bg_add(parent);
+    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_win_resize_object_add(parent, bg);
+    evas_object_show(bg);
+       
+       MGR_APP_END();
+       return bg;
+}
+
+Evas_Object *mgr_app_widget_create_main_layout(Evas_Object *parent)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *layout = NULL;
+
+       layout = elm_layout_add(parent);
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, layout);
+       evas_object_show(layout);
+
+       MGR_APP_END();
+       return layout;
+}
+
+Evas_Object *mgr_app_create_layout(Evas_Object *parent, const char *clas, const char *group, const char *style)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *ly = NULL;
+
+       ly = elm_layout_add(parent);
+       elm_layout_theme_set(ly, clas, group, style);
+       evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(ly);
+       MGR_APP_END();
+
+       return ly;
+}
+
+Evas_Object *mgr_app_create_layout_file(Evas_Object *parent, const char *filename, const char *group)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *ly = NULL;
+
+       ly = elm_layout_add(parent);
+       elm_layout_file_set(ly, filename, group);
+       evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(ly);
+       MGR_APP_END();
+
+       return ly;
+}
+
+Evas_Object *mgr_app_create_scroller(Evas_Object *parent)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *scroller = NULL;
+
+       scroller = elm_scroller_add(parent);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+       elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+       elm_object_part_content_set(parent, "elm.swallow.content", scroller);
+       MGR_APP_END();
+       return scroller;
+}
+
+Evas_Object *mgr_app_create_box(Evas_Object *parent, Eina_Bool is_hori)
+{
+       MGR_APP_BEGIN();
+
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *box = NULL;
+
+       box = elm_box_add(parent);
+       evas_object_size_hint_weight_set( box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set( box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box);
+       MGR_APP_END();
+       return box;
+}
+
+Evas_Object *mgr_app_create_button(Evas_Object *parent, void (*func) (void *data, Evas_Object *obj, void *event_info), const char *label, const char *swallow, const char *style, void *data)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *button = NULL;
+
+       button = elm_button_add(parent);
+       elm_object_part_content_set(parent, swallow, button);
+       elm_object_style_set(button, style);
+       elm_object_text_set(button, label);
+       evas_object_show(button);
+       evas_object_smart_callback_add(button, "clicked", func, (void*)data);
+       MGR_APP_END();
+       return button;
+}
+
+void mgr_app_box_pack_end_separator(Evas_Object *box, const char *style)
+{
+       MGR_APP_BEGIN();
+       ret_if(box == NULL);
+
+       Evas_Object *sp = NULL;
+       sp = elm_separator_add(box);
+       elm_separator_horizontal_set(sp, EINA_TRUE);
+       elm_object_style_set(sp, style);
+       evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0);
+       evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0);
+       evas_object_show(sp);
+       elm_box_pack_end(box, sp);
+       MGR_APP_END();
+}
+
+Evas_Object *mgr_app_create_label(Evas_Object *parent, const char *text, const char *swallow, void *data)
+{
+       MGR_APP_BEGIN();
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *label = NULL;
+
+       label = elm_label_add(parent);
+       elm_object_part_content_set(parent, swallow, label);
+       elm_object_text_set(label, text);
+       MGR_APP_END();
+
+       return label;
+}
+
+void mgr_app_set_transit_effect(Evas_Object *parent, int effect_type)
+{
+       MGR_APP_BEGIN();
+
+       Elm_Transit *transit = NULL;
+       Elm_Transit_Effect *effect = NULL;
+
+       transit = elm_transit_add();
+       effect = __custom_context_new(100, 100, 250, 250);
+
+       /* open */
+       if (effect_type == 0) {
+               elm_transit_effect_translation_add(transit, 480, 0, 0, 0);
+
+               elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+               elm_transit_effect_add(transit, _custom_op, effect, (Elm_Transit_Effect_End_Cb)_custom_context_free);
+               elm_transit_go(transit);
+       /* close */
+       } else if (effect_type == 1) {
+               elm_transit_effect_translation_add(transit,  -480, 0, 0, 0);
+               elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+               elm_transit_effect_add(transit, _custom_op, effect, (Elm_Transit_Effect_End_Cb)_custom_context_free);
+               elm_transit_go(transit);
+       } else {
+               elm_transit_effect_translation_add(transit,  720, 0, 0, 0);
+               elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
+
+               elm_transit_effect_add(transit, _custom_op, effect, (Elm_Transit_Effect_End_Cb)_custom_context_free);
+               elm_transit_go(transit);
+       }
+
+       elm_transit_del(transit);
+
+       MGR_APP_END();
+}
+
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..44c550e
--- /dev/null
@@ -0,0 +1,16 @@
+MESSAGE(CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR})
+MESSAGE(CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR})
+MESSAGE(CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR})
+MESSAGE(CMAKE_EDJ_DIR: ${EDJDIR})
+MESSAGE(CMAKE_ICON_DIR: ${ICONDIR})
+
+ADD_CUSTOM_TARGET(ug-setting-manage-certificates-efl.edj
+    COMMAND edje_cc ${CMAKE_CURRENT_SOURCE_DIR}/edc/ug-setting-manage-certificates-efl.edc ${CMAKE_BINARY_DIR}/data/ug-setting-manage-certificates-efl.edj
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/edc/ug-setting-manage-certificates-efl.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} ug-setting-manage-certificates-efl.edj)
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/data/ug-setting-manage-certificates-efl.edj DESTINATION ${EDJDIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ManageApplications.png DESTINATION ${ICONDIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ManageApplications_default.png DESTINATION ${ICONDIR}/${PROJECT_NAME})
diff --git a/data/edc/mgr-app.edc b/data/edc/mgr-app.edc
new file mode 100755 (executable)
index 0000000..9d9452e
--- /dev/null
@@ -0,0 +1,948 @@
+collections {
+
+#define MAIN_W 480
+#define MAIN_H 800
+
+#define INDICATOR_H    27
+#define NAVI_H         67
+//#define FONT "SLP:style=style_txt_desc"
+#define FONT "SLP"
+#define FONT_SIZE 20
+#define FONT_COLOR 0 0 0 255
+
+       styles
+       {
+               style
+               {
+                       name: "style_txt_desc";
+                       base: "font=SLP:style=Roman font_size=19 align=left color=#000000 wrap=word";
+                       tag:  "br" "\n";
+                       tag:  "tab" "\t";
+                       tag:  "em" "+ font=SLP:style=Oblique";
+                       tag:  "b" "+ font=SLP:style=Bold";
+                       tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+                       tag:  "hilight" "+ font=SLP:style=Bold";
+
+               }       
+       }
+       group
+       { 
+               name: "nfc_text_with_button";
+               parts
+               {
+                       part 
+                       { 
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       //fixed: 1 1;
+                    rel1.relative: 15/480 15/800;
+                    rel2.relative: 465/480 115/800;
+                                       align: 0.5 0.5;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                               }
+                       }
+                       part
+                       {
+                               name: "button1";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       //min: 0 75;
+                                       //align: 1 0;
+                                       //fixed: 1 1;
+                    rel1.relative: 15/480 130/800;
+                    rel2.relative: 465/480 230/800;
+                               }
+                       }
+                       part
+                       {
+                               name: "button2";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       //min: 0 75;
+                                       //align: 1 0;
+                                       //fixed: 1 1;
+                    rel1.relative: 15/480 550/800;
+                    rel2.relative: 465/480 650/800;
+
+                               }
+                       }
+                       part
+                       {
+                               name: "button3";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       //min: 0 75;
+                                       //align: 1 0;
+                                       //fixed: 1 1;
+                    rel1.relative: 15/480 685/800;
+                    rel2.relative: 465/480 785/800;
+
+                               }
+                       }
+               }
+       }
+
+       group
+       { 
+               name: "nfc_app_make_main";
+               parts
+               {
+                       part
+                       {
+                name: "bg";
+                type: RECT;
+                mouse_events: 1;    
+                scale:1;
+
+                description
+                               {    
+                    state: "default" 0.0;    
+                    color: 0 0 0 0;
+                    rel1.relative: 0.0 0.0;
+                    rel2.relative: 1.0 1.0;
+                }  
+                       }
+                       part
+                       {
+                               name: "top_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       rel1 {relative: 0 0; to: "bg";}
+                                       rel2 {relative: 1 0; to: "bg";}
+                               }
+                       }
+                       part
+                       {
+                               name: "left_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 0 0; to: "bg";}
+                                       rel2 {relative: 0 1; to: "bg";}
+                               }
+                       }
+                       part 
+                       { 
+                               name: "genlist";
+                               type: SWALLOW;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 500;
+                                       max: 5000 500;
+                                       fixed: 1 1;
+                                       rel1{relative: 0 1; to_y: "top_pad";}
+                    //rel2{relative: 480/480 200/800;}
+                                       align: 0 0;
+                                       //color: 0 0 0 255;
+                               }
+                       }
+
+                       part
+                       {
+                               name: "pad1";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 50;
+                                       max: 50000 50;
+                                       fixed: 1 1;
+                                       rel1 {relative: 1 1; to_x: "left_pad"; to_y: "genlist";}
+                                       align: 0 0;
+                               }
+                       }
+                       part 
+                       { 
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 70;
+                                       max: 5000 70;
+                                       fixed: 1 1;
+                    rel1{relative: 0 1; to_y: "pad1"; offset:10 0;}
+                    //rel2{relative: 465/480 295/800;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                               }
+                       }
+                       part
+                       {
+                               name: "make_tag_log_button";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 75;
+                                       align: 0.5 1.0;
+                                       fixed: 0 1;
+                    rel1{relative: 0 1; to_y: "left_pad"; offset:10 0;}
+                    rel2{relative: 1 1;offset: -10 -10;}
+                               }
+                       }
+               }
+       }
+       group
+       {
+               name: "contact_ready";    
+        parts
+               {
+                       part
+                       {
+                               name: "top_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 0/745;}
+                                       rel2 {relative: 480/480 14/745;}
+                                       align: 0 0;
+                               }
+                       }
+
+            part
+                       {
+                name: "label_name";
+                type: TEXTBLOCK;
+                scale:1;
+
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1{relative: 0/480 14/745; offset:10 0;}
+                    rel2{relative: 480/480 62/745; offset:-10 0;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                }
+            }
+                       part
+                       {
+                               name: "lower_pad_label_name";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 62/745;}
+                                       rel2 {relative: 480/480 86/745;}
+                                       align: 0 0;
+                               }
+                       }
+
+                       part
+                       {
+                name: "label_message";
+                type: TEXTBLOCK;
+                scale:1;
+
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1{relative: 0/480 86/745; offset:10 0;}
+                    rel2{relative: 480/480 134/745; offset:-10 0;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                }
+            }
+                       part
+                       {
+                               name: "upper_pad_image";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 134/745;}
+                                       rel2 {relative: 480/480 282/745;}
+                                       align: 0 0;
+                               }
+                       }
+
+                       part
+                       {
+                               name: "left_pad_image";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 282/745;}
+                                       rel2 {relative: 141/480 476/745;}
+                                       align: 0 0;
+                               }
+                       }
+
+            part
+                       {
+                name: "touch_image";
+                type: SWALLOW;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1{relative: 141/480 282/745; offset:0 0;}
+                    rel2{relative: 339/480 476/745; offset:0 0;}
+                                       align: 0 0;
+                               }
+            }
+                       part
+                       {
+                               name: "right_pad_image";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 339/480 282/745;}
+                                       rel2 {relative: 480/480 476/745;}
+                                       align: 0 0;
+                               }
+                       }
+                       part
+                       {
+                               name: "lower_pad_image";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 476/745;}
+                                       rel2 {relative: 480/480 622/745;}
+                                       align: 0 0;
+                               }
+                       }
+
+               part
+                       {
+                name: "label_cancel_message";
+                type: TEXTBLOCK;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1{relative: 0/480 622/745; offset:10 0;}
+                    rel2{relative: 480/480 670/745; offset: -10 0;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                }
+            }
+            part
+                       {
+                name: "cancel_button";
+                type: SWALLOW;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1{relative: 0/480 684/745; offset:10 0;}
+                    rel2{relative: 480/480 730/745; offset: -10 0;}
+                                       align:0 0;
+                }
+            }
+                       part
+                       {
+                               name: "bottom_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       rel1 {relative: 0/480 730/745;}
+                                       rel2 {relative: 480/480 745/745;}
+                                       align:0 0;
+                               }
+                       }
+
+        }
+       }
+       group
+       { 
+               name: "nfc_make_tag_choice";
+               parts
+               {
+                       part
+                       {
+                               name: "top_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       rel1 {relative: 0 0;}
+                                       rel2 {relative: 1 0;}
+                               }
+                       }
+                       part
+                       {
+                               name: "left_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 0 0;}
+                                       rel2 {relative: 0 1;}
+                               }
+                       }
+                       part
+                       {
+                               name: "right_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 1 0;}
+                                       rel2 {relative: 1 1;}
+                               }
+                       }
+
+                       part 
+                       { 
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       //fixed: 1 1;
+                                       min: 0 100;
+                                       max: 5000 100;
+                                       fixed: 1 1;
+                    rel1 {relative: 0 1; to_y: "top_pad"; offset: 10 0;}
+                    //rel2 {relative: 480/480 110/800;offset:-10 0;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                               }
+                       }
+                       part
+                       {
+                               name: "pad1";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 10;
+                                       max: 5000 10;
+                                       fixed: 1 1;
+                                       align: 0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {relative: 1 1;to_x: "left_pad"; to_y: "text";}
+                               }
+                       }
+               part
+                       {
+                name: "button1";
+                type: SWALLOW;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                                       min: 0 75;
+                                       //max: 5000 75;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                    rel1{relative: 0 1; offset:10 0;}
+                    rel2{relative: 0.5 1; offset: -5 -10;}
+                }
+            }
+
+            part
+                       {
+                name: "button2";
+                type: SWALLOW;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                                       min:0 75;
+                                       //max:5000 75;
+                                       fixed:1 1;
+                    rel1{relative: 0.5 1; offset: 5 0;}
+                    rel2{relative: 1 1; offset: -10 -10;}
+                                       align:0.5 1.0;
+                }
+            }
+
+               }
+       }
+       group
+       { 
+               name: "nfc_make_tag_bt_wifi";
+               parts
+               {
+                       part
+                       {
+                               name: "top_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       rel1 {relative: 0 0;}
+                                       rel2 {relative: 1 0;}
+                               }
+                       }
+                       part
+                       {
+                               name: "left_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 0 0;}
+                                       rel2 {relative: 0 1;}
+                               }
+                       }
+                       part
+                       {
+                               name: "right_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 1 0;}
+                                       rel2 {relative: 1 1;}
+                               }
+                       }
+
+                       part 
+                       { 
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       //fixed: 1 1;
+                                       min: 0 100;
+                                       max: 5000 100;
+                                       fixed: 1 1;
+                    rel1 {relative: 0 1; to_y: "top_pad"; offset: 10 0;}
+                    //rel2 {relative: 480/480 110/800;offset:-10 0;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                               }
+                       }
+                       part
+                       {
+                               name: "pad1";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 10;
+                                       max: 5000 10;
+                                       fixed: 1 1;
+                                       align: 0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {relative: 1 1;to_x: "left_pad"; to_y: "text";}
+                               }
+                       }
+               part
+                       {
+                name: "button";
+                type: SWALLOW;
+                scale: 1;
+                description
+                               {
+                    state: "default" 0.0;
+                                       min: 0 75;
+                                       //max: 5000 75;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                    rel1{relative: 0 1; offset:10 0;}
+                    rel2{relative: 1 1; offset: -10 -10;}
+                }
+            }
+               }
+       }
+
+       group
+       { 
+               name: "nbeat_default_view";
+               parts
+               {
+                       part
+                       {
+                name: "bg";
+                type: RECT;
+                mouse_events: 1;    
+                scale:1;
+
+                description
+                               {    
+                    state: "default" 0.0;    
+                    color: 0 0 0 0;
+                    rel1.relative: 0.0 0.0;
+                    rel2.relative: 1.0 1.0;
+                }  
+                       }
+                       part
+                       {
+                               name: "top_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       rel1 {relative: 0 0; to: "bg";}
+                                       rel2 {relative: 1 0; to: "bg";}
+                               }
+                       }
+                       part
+                       {
+                               name: "left_pad";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 0;
+                    color: 0 0 0 0;
+                                       fixed: 1 0;
+                                       rel1 {relative: 0 0; to: "bg";}
+                                       rel2 {relative: 0 1; to: "bg";}
+                               }
+                       }
+                       part 
+                       { 
+                               name: "genlist";
+                               type: SWALLOW;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 140;
+                                       max: 5000 140;
+                                       fixed: 1 1;
+                                       rel1{relative: 0 1; to_y: "top_pad";}
+                    //rel2{relative: 480/480 200/800;}
+                                       align: 0 0;
+                                       //color: 0 0 0 255;
+                               }
+                       }
+
+                       part
+                       {
+                               name: "pad1";
+                               type: RECT;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                    color: 0 0 0 0;
+                                       min: 0 10;
+                                       max: 50000 10;
+                                       fixed: 1 1;
+                                       rel1 {relative: 1 1; to_x: "left_pad"; to_y: "genlist";}
+                                       align: 0 0;
+                               }
+                       }
+                       part 
+                       { 
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 70;
+                                       max: 5000 70;
+                                       fixed: 1 1;
+                    rel1{relative: 0 1; to_y: "pad1"; offset:10 0;}
+                    //rel2{relative: 465/480 295/800;}
+                                       align: 0 0;
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+
+                               }
+                       }
+                       part
+                       {
+                               name: "tag_read_log_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 75;
+                                       align: 0.5 1.0;
+                                       fixed: 0 1;
+                    rel1{relative: 0 1; to_y: "left_pad"; offset:10 0;}
+                    rel2{relative: 1 1;offset: -10 -10;}
+                               }
+                       }
+
+               }
+       }
+
+       group 
+       {
+               name: "nfc_selectioninfo_bottom_12";
+               parts 
+               {
+                       part 
+                       {        
+                               name: "bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale : 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 480 30;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1.relative: 0.5 1.0;
+                                       rel2.relative: 0.5 1.0;
+                                       color: 217 147 26 255;
+                               }
+                       }
+                       part 
+                       { 
+                               name: "left_padding";
+                               type: RECT;
+                               scale : 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       min: 10 30;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "bg"; }
+                                       rel2 { relative: 0.0 1.0; to: "bg"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part 
+                       {
+                               name: "elm.text";
+                               type: TEXTBLOCK;
+                               mouse_events: 0;
+                               scale: 1;
+                               description 
+                               {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 1.0 0.0; to_x: "left_padding"; to_y: "bg"; }
+                                       rel2 { relative: 1.0 1.0; to: "bg"; }
+                                       
+                                       text 
+                                       {
+                                               style: style_txt_desc;
+                                       }
+                               }
+                       }       
+               }
+               programs 
+               {
+                       program 
+                       { 
+                               name: "clicked";
+                               signal: "mouse,clicked,1";
+                               source: "base";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+               }
+       }
+    group
+       {
+        name: "ug_effect";
+        parts
+               {
+            part
+                       {
+                name: "clip";
+                type: RECT;
+                description
+                               {
+                    state: "default" 0.0;
+                    rel1 { relative: 1 0; }
+                    rel2 { relative: 2 1; }
+                    color: 255 255 255 0;
+                }   
+                description
+                               {
+                    state: "show" 0.0;
+                    rel1 { relative: 0 0; }
+                    rel2 { relative: 1 1; }
+                    color: 255 255 255 255;
+                }   
+            }   
+            part
+                       {
+                name: "elm.swallow.content";
+                type: SWALLOW;
+                clip_to: "clip";
+                description
+                               {
+                    rel1.to: "clip";
+                    rel2.to: "clip";
+                }   
+            }   
+            part
+                       {
+                name: "event_blocker";
+                description
+                               {
+                    state: "default" 0.0;
+                    visible: 1;
+                }   
+                description
+                               {
+                    state: "show" 0.0;
+                    inherit: "default" 0.0;
+                }   
+                description
+                               {
+                    state: "disabled" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 0;
+                }   
+            }   
+        }   
+        programs
+               {
+            program
+                       {
+                name: "show";
+                signal: "elm,state,show";
+                action: STATE_SET "show" 0.0;
+                target: "clip";
+                target: "event_blocker";
+                transition: "DECELERATE" 0.5;
+                after: "show_end";
+            }
+            program
+                       {
+                name: "hide";
+                signal: "elm,state,hide";
+                action: STATE_SET "default" 0.0;
+                target: "clip";
+                target: "event_blocker";
+                transition: "DECELERATE" 0.5;
+                after: "hide_end";
+            }
+            program
+                       {
+                name: "disable_event_blocker";
+                               signal: "elm,state,blocker,disabled";
+                action: STATE_SET "disabled" 0.0;
+                target: "event_blocker";
+            }
+                       program
+                       {
+                               name: "disable_blocker";
+                               action: SIGNAL_EMIT "elm,state,blocker,disabled" "";
+                       }
+            program
+                       {
+                name: "show_end";
+                action: SIGNAL_EMIT "elm,action,show,finished" "";
+                after: "disable_blocker";
+            }
+            program
+                       {
+                name: "hide_end";
+                action: SIGNAL_EMIT "elm,action,hide,finished" "";
+                after: "disable_blocker";
+            }
+        }
+    }
+}
diff --git a/data/edc/ug-setting-manage-certificates-efl.edc b/data/edc/ug-setting-manage-certificates-efl.edc
new file mode 100755 (executable)
index 0000000..3f3ba56
--- /dev/null
@@ -0,0 +1,37 @@
+collections {\r
+       group {\r
+               name: "mgr-app-list";\r
+               parts {\r
+                       /* for transparency */\r
+                       part {\r
+                               name: "base";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               repeat_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "elm.swallow.content.genlist";\r
+                               type: SWALLOW;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "elm.swallow.content.index";\r
+                               type: SWALLOW;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { to: "elm.swallow.content.genlist"; }\r
+                                       rel2 { to: "elm.swallow.content.genlist"; }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
diff --git a/data/icons/ManageApplications.png b/data/icons/ManageApplications.png
new file mode 100644 (file)
index 0000000..ff97a19
Binary files /dev/null and b/data/icons/ManageApplications.png differ
diff --git a/data/icons/ManageApplications_default.png b/data/icons/ManageApplications_default.png
new file mode 100644 (file)
index 0000000..4a46e4a
Binary files /dev/null and b/data/icons/ManageApplications_default.png differ
diff --git a/data/icons/com.samsung.mgr-app.png b/data/icons/com.samsung.mgr-app.png
new file mode 100755 (executable)
index 0000000..563dabb
Binary files /dev/null and b/data/icons/com.samsung.mgr-app.png differ
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..f56e6a0
--- /dev/null
@@ -0,0 +1,18 @@
+cert-svc-ui (1.0.1-31) unstable; urgency=low
+
+  * Tizen release.
+
+  * Git : framework/security/cert-svc-ui
+  * Tag : cert-svc_1.0.1-31
+
+ -- Bartlomiej Grzelewski <b.grzelewski@samsung.com>  Fri, 17 Aug 2012 12:00:00 +0200
+
+cert-svc-ui (1.0.1-30) unstable; urgency=low
+
+  * Initial version.
+
+  * Git : framework/security/cert-svc-ui
+  * Tag : cert-svc_1.0.1-30
+
+ -- Bartlomiej Grzelewski <b.grzelewski@samsung.com>  Thu, 16 Aug 2012 17:00:00 +0200
+
diff --git a/debian/changelog.app b/debian/changelog.app
new file mode 100755 (executable)
index 0000000..bc77315
--- /dev/null
@@ -0,0 +1,6 @@
+mgr-app (0.0.1-1) unstable; urgency=low
+
+  * first source package for building
+
+ -- ManHyun Hwang <mh222.hwang@samsung.com>  Thu, 30 JUN 2011 13:43:34 +0900
+
diff --git a/debian/changelog.ug b/debian/changelog.ug
new file mode 100755 (executable)
index 0000000..a6205af
--- /dev/null
@@ -0,0 +1,6 @@
+libug-setting-manage-application-efl (0.0.1-1) unstable; urgency=low
+
+  * first source package for building
+
+ -- ManHyun Hwang <mh222.hwang@samsung.com>  Thu, 30 JUN 2011 13:43:34 +0900
+
diff --git a/debian/com.samsung.mgr-app-0.install.in b/debian/com.samsung.mgr-app-0.install.in
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/debian/com.samsung.mgr-app-dbg.install.in b/debian/com.samsung.mgr-app-dbg.install.in
new file mode 100755 (executable)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/debian/com.samsung.mgr-app.desktop.in b/debian/com.samsung.mgr-app.desktop.in
new file mode 100755 (executable)
index 0000000..8be86fa
--- /dev/null
@@ -0,0 +1,24 @@
+Name=manage application
+Exec=${PREFIX}/bin/mgr-app
+Hidden=False
+Version=@VERSION@
+Type=Application
+X-TIZEN-TaskManage=True
+X-TIZEN-Multiple=False
+
+Name[en_US]=manage application
+Name[nl_NL]=manage application
+Name[de_DE]=manage application
+Name[zh_HK]=manage application
+Name[zh_CN]=manage application
+Name[ru_RU]=manage application
+Name[ko_KR]=manage application
+Name[zh_TW]=manage application
+Name[ja_JP]=manage application
+Name[es_ES]=manage application
+Name[el_GR]=manage application
+Name[it_IT]=manage application
+Name[tr_TR]=manage application
+Name[pt_PT]=manage application
+Name[fr_FR]=manage application
+
diff --git a/debian/com.samsung.mgr-app.postinst.in b/debian/com.samsung.mgr-app.postinst.in
new file mode 100755 (executable)
index 0000000..8c57239
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# file owner
+if [ ${USER} == "root" ]
+then
+       echo "Test if"
+else
+       eche "Test else"
+fi
+
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 100755 (executable)
index 0000000..a4d4ac5
--- /dev/null
@@ -0,0 +1,71 @@
+Source: cert-svc
+Section: libs
+Priority: extra
+Maintainer: KiDong Kim <kd0228.kim@samsung.com>
+Build-Depends: debhelper (>= 5),
+ libappcore-efl-dev,
+ autotools-dev,
+ libelm-dev,
+ libslp-setting-dev,
+ libui-gadget-dev,
+ libbundle-dev,
+ libaul-1-dev,
+ libefreet-dev,
+ libeina-dev,
+ shared-mime-info,
+# java-runtime-dev,
+ libail-0-dev,
+ libpkgmgr-client-dev,
+ libjava-parser-dev,
+ debhelper (>= 7.0.50), 
+ libssl-dev, 
+ dlog-dev, 
+ ca-certificates, 
+ wrt-commons-dev, 
+ libxmlsec1-dev, 
+ libsoup2.4-dev, 
+ libecore-dev, 
+ libxml2-dev, 
+ libpcre-dev, 
+ libslp-tapi-dev,
+ libappsvc-dev
+
+Package: libcert-svc1-ui
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libappsvc-dev
+Description: Manage Application package
+
+#Package: libug-setting-manage-application-efl-dbg
+#Section: debug
+#Architecture: any
+#Depends: ${shlibs:Depends}, ${misc:Depends}, libug-setting-manage-application-efl-0 (= ${binary:Version})
+#Description: Manage Application debug(unstripped) package
+
+Package: libcert-svc-dev
+Section: libdevel
+Architecture: any
+Depends: ${misc:Depends}, libcert-svc1 (= ${binary:Version}), libssl-dev, dlog-dev
+Description: Certification service development package
+
+Package: libcert-svc1
+Section: libs
+Architecture: any
+Provides: libcert-svc-0
+Replaces: libcert-svc-0
+Depends: ${shlibs:Depends}, ${misc:Depends}, sqlite3
+Description: Certification service library and executable
+
+Package: libcert-svc1-dbg
+Section: debug
+Architecture: any
+Provides: libcert-svc-dbg
+Replaces: libcert-svc-dbg
+Depends: ${misc:Depends}, libcert-svc1 (= ${binary:Version})
+Description: debug package of cert-svc library
+
+Package: libcert-svc1-test
+Section: libs
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}, libcert-svc1 (= ${binary:Version})
+Description: test program for cert-svc
diff --git a/debian/control.app b/debian/control.app
new file mode 100755 (executable)
index 0000000..b70bc27
--- /dev/null
@@ -0,0 +1,31 @@
+Source: mgr-app
+Section: libs
+Priority: extra
+Maintainer: SangJun Na <juni.na@samsung.com>, Manhyun Hwang <mh222.hwang@samsung.com>, Eunmi Son <eunmi.son@samsung.com>
+Build-Depends: debhelper (>= 5),
+ libappcore-efl-dev,
+ autotools-dev,
+ libelm-dev,
+ libslp-setting-dev,
+ libui-gadget-dev,
+ libbundle-dev,
+ libaul-1-dev,
+ libefreet-dev,
+ libeina-dev,
+ shared-mime-info,
+# java-runtime-dev,
+ libail-0-dev,
+ libpkgmgr-client-dev,
+ libjava-parser-dev
+
+Package: mgr-app-0
+Section: libs
+Architecture: armel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Manage Application package
+
+Package: mgr-app-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, mgr-app-0 (= ${binary:Version})
+Description: Manage Application debug(unstripped) package
diff --git a/debian/control.ug b/debian/control.ug
new file mode 100755 (executable)
index 0000000..2084fb5
--- /dev/null
@@ -0,0 +1,31 @@
+Source: libug-setting-manage-application-efl
+Section: libs
+Priority: extra
+Maintainer: SangJun Na <juni.na@samsung.com>, Manhyun Hwang <mh222.hwang@samsung.com>, Eunmi Son <eunmi.son@samsung.com>
+Build-Depends: debhelper (>= 5),
+ libappcore-efl-dev,
+ autotools-dev,
+ libelm-dev,
+ libslp-setting-dev,
+ libui-gadget-dev,
+ libbundle-dev,
+ libaul-1-dev,
+ libefreet-dev,
+ libeina-dev,
+ shared-mime-info,
+# java-runtime-dev,
+ libail-0-dev,
+ libpkgmgr-client-dev,
+ libjava-parser-dev
+
+Package: libug-setting-manage-application-efl-0
+Section: libs
+Architecture: armel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Manage Application package
+
+Package: libug-setting-manage-application-efl-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libug-setting-manage-application-efl-0 (= ${binary:Version})
+Description: Manage Application debug(unstripped) package
diff --git a/debian/libcert-svc-dev.install b/debian/libcert-svc-dev.install
new file mode 100644 (file)
index 0000000..a3d41f0
--- /dev/null
@@ -0,0 +1,3 @@
+/usr/include/*
+/usr/lib/pkgconfig/*
+/usr/lib/*.so
diff --git a/debian/libcert-svc1-test.install b/debian/libcert-svc1-test.install
new file mode 100644 (file)
index 0000000..f1becfa
--- /dev/null
@@ -0,0 +1,6 @@
+/usr/bin/cert-svc-test*
+/opt/apps/widget/tests/vcore_widget_uncompressed/*
+/opt/apps/widget/tests/vcore_keys/*
+/opt/apps/widget/tests/vcore_certs/*
+/opt/apps/widget/tests/pkcs12/*
+/opt/share/cert-svc/certs/code-signing/wac/root_cacert0.pem
diff --git a/debian/libcert-svc1-ui.install b/debian/libcert-svc1-ui.install
new file mode 100644 (file)
index 0000000..2b88b10
--- /dev/null
@@ -0,0 +1,7 @@
+/opt/ug/lib/libmgr-cert-common.so
+/opt/ug/lib/libmgr-cert-view.so
+/opt/ug/lib/libug-setting-manage-certificates-efl.so.*
+/opt/ug/lib/libug-setting-manage-certificates-efl.so
+/opt/ug/res/edje/ug-setting-manage-certificates-efl/
+/opt/ug/res/images/ug-setting-manage-certificates-efl/
+/opt/ug/res/locale/*/*/ug-setting-manage-certificates-efl.mo
diff --git a/debian/libcert-svc1.dirs b/debian/libcert-svc1.dirs
new file mode 100644 (file)
index 0000000..6fd0611
--- /dev/null
@@ -0,0 +1,15 @@
+/usr/share/cert-svc/ca-certs/code-signing/java/operator
+/usr/share/cert-svc/ca-certs/code-signing/java/manufacture
+/usr/share/cert-svc/ca-certs/code-signing/java/thirdparty
+/usr/share/cert-svc/ca-certs/code-signing/debian
+/usr/share/cert-svc/ca-certs/code-signing/wac
+/opt/share/cert-svc/certs/code-signing/java/operator
+/opt/share/cert-svc/certs/code-signing/java/manufacture
+/opt/share/cert-svc/certs/code-signing/java/thirdparty
+/opt/share/cert-svc/certs/code-signing/wac
+/opt/share/cert-svc/certs/sim/operator
+/opt/share/cert-svc/certs/sim/thirdparty
+/opt/share/cert-svc/certs/ssl
+/opt/share/cert-svc/certs/user
+/opt/share/cert-svc/certs/trusteduser
+/opt/share/cert-svc/certs/mdm/security/cert
diff --git a/debian/libcert-svc1.install b/debian/libcert-svc1.install
new file mode 100644 (file)
index 0000000..73f8c2f
--- /dev/null
@@ -0,0 +1,13 @@
+/usr/bin/cert_svc_create_clean_db.sh
+/usr/lib/*.so.*
+/usr/bin/dpkg-pki-sig
+/opt/share/cert-svc/targetinfo
+/usr/share/cert-svc/cert_svc_vcore_db.sql
+/usr/share/cert-svc/fingerprint_list.xml
+/usr/share/cert-svc/fingerprint_list.xsd
+/usr/share/cert-svc/schema.xsd
+/opt/share/cert-svc/certs/code-signing/wac/wac0.root.preproduction.pem
+/opt/share/cert-svc/certs/code-signing/wac/wac0.root.production.pem
+/opt/share/cert-svc/certs/code-signing/wac/wac0.publisherid.pem
+/opt/share/cert-svc/certs/code-signing/wac/tizen0.root.preproduction.cert.pem
+
diff --git a/debian/libcert-svc1.links b/debian/libcert-svc1.links
new file mode 100644 (file)
index 0000000..d422ef3
--- /dev/null
@@ -0,0 +1 @@
+/opt/etc/ssl/certs/ /usr/share/cert-svc/ca-certs/ssl
diff --git a/debian/libcert-svc1.postinst b/debian/libcert-svc1.postinst
new file mode 100755 (executable)
index 0000000..fef53d3
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh -e
+
+USE_CERT=6524
+
+case "$1" in
+    configure)
+    if [ `whoami` = "root" ]
+    then
+        chown -R root:${USE_CERT} /opt/share/cert-svc/certs/
+        chmod -R 0775 /opt/share/cert-svc/certs/
+    fi
+
+    if [ -z ${2} ]
+    then
+        echo "This is new install of wrt-security"
+        echo "Calling /usr/bin/cert_svc_create_clean_db.sh"
+        /usr/bin/cert_svc_create_clean_db.sh
+    else
+        # Find out old and new version of databases
+        VCORE_OLD_DB_VERSION=`sqlite3 /opt/dbspace/.cert_svc_vcore.db ".tables" | grep "DB_VERSION_"`
+        VCORE_NEW_DB_VERSION=`cat /usr/share/cert-svc/cert_svc_vcore_db.sql | tr '[:blank:]' '\n' | grep DB_VERSION_`
+        echo "OLD vcore database version ${VCORE_OLD_DB_VERSION}"
+        echo "NEW vcore database version ${VCORE_NEW_DB_VERSION}"
+
+        if [ ${VCORE_OLD_DB_VERSION} -a ${VCORE_NEW_DB_VERSION} ]
+        then
+            if [ ${VCORE_OLD_DB_VERSION} = ${VCORE_NEW_DB_VERSION} ]
+            then
+                echo "Equal database detected so db installation ignored"
+            else
+                echo "Calling /usr/bin/cert_svc_create_clean_db.sh"
+                /usr/bin/cert_svc_create_clean_db.sh
+            fi
+        else
+            echo "Calling /usr/bin/cert_svc_create_clean_db.sh"
+            /usr/bin/cert_svc_create_clean_db.sh
+        fi
+    fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..a9214ef
--- /dev/null
@@ -0,0 +1,130 @@
+#!/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
+
+ppTYPE ?= ugapp
+
+CFLAGS ?= -Wall -g
+LDFLAGS ?=
+ifneq (,$(findstring app,$(TYPE)))
+               PKGNAME ?= mgr-app
+               PREFIX ?= /opt/apps/mgr-app
+               RESDIR ?= /opt/apps/mgr-app/res
+               DATADIR ?= /opt/apps/mgr-app/data
+else
+               PKGNAME ?= libug-setting-manage-certificates-efl
+               PREFIX ?= /opt/ug
+               RESDIR ?= /opt/ug/res
+               DATADIR ?= /opt/ug/res/etc
+endif
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0 
+       BUILD_TYPE=Debug
+else
+       CFLAGS += -O2 
+       BUILD_TYPE=Release
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
+CMAKE_CERT_SVC_BUILD_DIR ?= $(CURDIR)/library
+
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       cd $(CMAKE_CERT_SVC_BUILD_DIR) && cmake .
+       mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake ../ui/ -DCMAKE_INSTALL_PREFIX="$(PREFIX)" -DCMAKE_BUILD_TYPE="$(BUILD_TYPE)" -DPKGNAME="$(PKGNAME)" -DTYPE="$(TYPE)"
+       touch $(CMAKE_BUILD_DIR)/configure-stamp
+       touch $(CMAKE_CERT_SVC_BUILD_DIR)/configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+       dh_testdir
+
+       # Add here commands to compile the package.
+       cd $(CMAKE_CERT_SVC_BUILD_DIR) && $(MAKE)
+       cd $(CMAKE_BUILD_DIR) && $(MAKE)
+    
+       for f in `find $(CURDIR)/debian/ -name "$(PREFIX)*.in"`; do \
+               cat $$f > $${f%.in}; \
+               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+               sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+               sed -i -e "s#@PKGNAME@#$(PKGNAME)#g" $${f%.in}; \
+       done
+
+       touch $(CMAKE_BUILD_DIR)/$@
+       touch $(CMAKE_CERT_SVC_BUILD_DIR)/$@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+    # Add here commands to clean up after the build process.
+       rm -rf $(CMAKE_BUILD_DIR)
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+       dh_clean
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+       cd $(CMAKE_CERT_SVC_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       #dh_installchangelogs 
+       #dh_installdocs
+       #dh_installexamples
+       dh_install --sourcedir=debian/tmp
+       #dh_installmenu
+       #dh_installdebconf   
+       #dh_installlogrotate
+       #dh_installemacsen
+       #dh_installpam
+       #dh_installmime
+       #dh_python
+       #dh_installinit
+       #dh_installcron
+       #dh_installinfo
+       dh_installman
+       dh_link
+       #dh_strip --dbg-package=$(PKGNAME)-dbg
+       dh_compress
+       dh_fixperms
+       #dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
+
diff --git a/packaging/cert-svc-ui.spec b/packaging/cert-svc-ui.spec
new file mode 100644 (file)
index 0000000..2424269
--- /dev/null
@@ -0,0 +1,83 @@
+#sbs-git:slp/pkgs/c/cert-svc cert-svc 1.0.1 ad7eb7efcefb37b06017c69cb2fc44e6f7b6cab7
+Name:    cert-svc-ui
+Summary: Certification service
+Version: 1.0.1
+Release: 31
+Group:   System/Libraries
+License: SAMSUNG
+Source0: %{name}-%{version}.tar.gz
+
+Requires(post):   /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: edje-tools
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(ail)
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(cert-svc-vcore)
+BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(bundle)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(glib-2.0)
+
+%description
+Certification service
+
+%package test
+Summary:  Certification service (tests)
+Group:    System/Misc
+Requires: %{name} = %{version}-%{release}
+
+%description test
+Certification service (tests)
+
+%description
+Certification service (UI gadget)
+
+%prep
+%setup -q
+
+%define _ugdir /opt/ug
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX="%{_ugdir}" -DCMAKE_BUILD_TYPE="Release" -DPKGNAME="cert-svc1-ui"
+VERBOSE=1 make
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%clean
+rm -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%{_ugdir}/lib/libmgr-cert-common.so
+%{_ugdir}/lib/libmgr-cert-view.so
+%{_ugdir}/lib/libug-setting-manage-certificates-efl.so.*
+%{_ugdir}/lib/libug-setting-manage-certificates-efl.so
+%{_ugdir}/res/locale/*/LC_MESSAGES/*
+%{_ugdir}/res/edje/ug-setting-manage-certificates-efl/ug-setting-manage-certificates-efl.edj
+%{_ugdir}/res/images/ug-setting-manage-certificates-efl/ManageApplications.png
+%{_ugdir}/res/images/ug-setting-manage-certificates-efl/ManageApplications_default.png
+/opt/ug/lib/libug-cert-selection-ug-efl.so*
+
+%files test
+%defattr(-,root,root,-)
+/usr/bin/cert-selection-ug-test*
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..29c1d03
--- /dev/null
@@ -0,0 +1,25 @@
+SET(POFILES ar.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_US.po
+  es_ES.po fi.po fr_FR.po he.po hi.po hr.po hu.po id.po it_IT.po ja_JP.po
+  ko_KR.po lt.po lv.po ms.po nl_NL.po no.po pl.po pt_PT.po ro.po ru_RU.po sk.po
+  sl.po sr.po sv.po th.po tr_TR.po uk.po vi.po zh_CN.po zh_HK.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+    SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+    MESSAGE("PO: ${pofile}")
+    GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+    GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+    SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+    ADD_CUSTOM_COMMAND(
+        OUTPUT ${moFile}
+        COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+        DEPENDS ${absPofile}
+    )
+    INSTALL(FILES ${moFile}
+        DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+    SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/po/ar.po b/po/ar.po
new file mode 100644 (file)
index 0000000..748b3b8
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "بدون محتويات"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "الموضوع"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "الرقم التسلسلي"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "تم إلغاء التثبيت"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "معلومات التطبيق"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "كلي"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "التطبيق"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "بيانات"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "وحدات البايت"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "بدء تشغيل افتراضي"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "مسح الافتراضيات"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "تم ضبط هذا التطبيق على الفتح بشكل افتراضي مع بعض الإجراءات"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "المزود"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "الجهات الخارجية"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "مكان التخزين"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "جيجابايت"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "مزيد من التفاصيل"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "الشهادات"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "جار إلغاء التثبيت..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "المصنع"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "صالح من"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "صالح لغاية"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "مختصر"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "المصدر"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100644 (file)
index 0000000..0836075
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Няма съдържание"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Тема"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Сериен номер"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Деинсталирано"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Информация за приложението"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Общо"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Приложение"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Данни"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "байта"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Стартиране по подразбиране"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Изчистване на настройките по подразбиране"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Това приложение е зададено на отворено по подразбиране за някои действия"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Оператор"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Трети лица"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Устройство за съхранение на данни"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Още подробности"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Сертификати"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Деинсталиране..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Производител"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Валиден от"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Валидно до"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Отпечатък"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Издал"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..14a9150
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "No hi ha continguts"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Assumpte"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Número de sèrie"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Desinstal·lat"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informació de l'aplicació"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplicació"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dades"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Executar de forma predeterminada"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Esborrar valors predeterminats"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Aquesta aplicació està definida per obrir-se de forma predeterminada en algunes accions"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operador"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Tercers"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Emmagatzematge"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Més detalls"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificats"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Desinstal·lant..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabricant"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Vàlid des de"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Vàlid fins a"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Miniatura d'impressió"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emissor"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..0194452
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Žádný obsah"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Předmět"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Sériové číslo"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Odinstalováno"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informace o aplikaci"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Celkem"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikace"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "B"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Spustit ve výchozím nastavení"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Vymazat výchozí nastavení"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Některé akce spustí tuto aplikaci"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operátor"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Třetí strany"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Úložiště"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Další detaily"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikáty"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Odinstalování..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Výrobce"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Platné od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Platné do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Otisk palce"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Vydavatel"
+
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..bf56abb
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Intet indhold"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Emne"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serienummer"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Afinstalleret"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Programinfo"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "I alt"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Program"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Kør som standard"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Tøm standardindstillinger"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Dette program er indstillet til at åbne som standard for nogle handlinger"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatør"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Tredjeparter"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Flere oplysninger"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikater"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Afinstallerer..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Producent"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Gælder fra"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Gælder til"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Udskrift af miniaturer"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Udsteder"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100644 (file)
index 0000000..4d892f3
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Kein Inhalt"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Betreff"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Seriennummer"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Deinstalliert"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Anwendungsinfo"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Gesamt"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Anwendung"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Daten"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "Bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Standardmäßig starten"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Standardwerte löschen"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Es wurde festgelegt, dass diese App für einige Vorgänge standardmäßig gestartet werden soll."
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Betreiber"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Dritte"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Speicher"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mehr Details"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Zertifikate"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Deinstallieren..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Hersteller"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Gültig ab"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Gültig bis"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Fingerabdruck"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Herausgeber"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100644 (file)
index 0000000..40292c1
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Κανένα περιεχόμενο"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Θέμα"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Σειριακός αριθμός"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Καταργήθηκε η εγκατάσταση"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Πληροφορίες εφαρμογής"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Σύνολο"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Εφαρμογή"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Δεδομένα"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Εκκίνηση από προεπιλογή"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Διαγραφή προεπιλογών"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Αυτή η εφαρμογή έχει ρυθμιστεί ώστε να ανοίγει από προεπιλογή για ορισμένες ενέργειες"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Παροχέας"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Τρίτα μέρη"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Αποθήκευση"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Περισσότερες λεπτομέρειες"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Πιστοποιητικά"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Κατάργηση εγκατάστασης..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Κατασκευαστής"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Ισχύει από"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Ισχύει έως"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Αποτύπωμα"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Εκδότης"
+
diff --git a/po/en.po b/po/en.po
new file mode 100644 (file)
index 0000000..2054253
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,122 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "No contents"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Subject"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serial number"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Uninstalled"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Application info"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Application"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Launch by default"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Clear defaults"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "This app is set to open by default for some actions"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Third parties"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Storage"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "More details"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificates"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Uninstalling..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Manufacturer"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Valid from"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Valid until"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Thumbprint"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Issuer"
+
+msgid "JAVA_CERTIFICATE"
+msgstr "Java certificate en"
+
+msgid "OPERATOR"
+msgstr "Operator en"
+
+msgid "MANUFACTURER"
+msgstr "Manufacturer en"
+
+msgid "3RD_PARTIES"
+msgstr "3rd parties en"
+
+msgid "PFX_CERTIFICATES"
+msgstr "PFX/PKCS#12 Certificates"
+
+msgid "PFX_CERTIFICATE"
+msgstr "PFX/PKCS#12 Certificate"
+
+msgid "CHOOSE_PFX_TO_INSTALL"
+msgstr "Choose certificate to install"
+
+msgid "INSTALL"
+msgstr "Install"
+
+msgid "CANCEL"
+msgstr "Cancel"
+
+msgid "SUCH_ALIAS_ALREADY_EXIST"
+msgstr "Such alias already exist.<br>Please put another one."
+
+msgid "WRONG_PASSWORD"
+msgstr "Wrong password."
+
+msgid "OK_BUTTON"
+msgstr "OK"
+
+msgid "ENTER_PASSWORD"
+msgstr "Enter password:"
+
+msgid "ENTER_KEY_ALIAS"
+msgstr "Enter key alias:"
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100644 (file)
index 0000000..8f13ab6
--- /dev/null
@@ -0,0 +1,95 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "No contents"
+
+msgid "CERTIFICATE_MENU_TITLE"
+msgstr "Certificate "
+
+msgid "USER_CERTIFICATE"
+msgstr "User certificate"
+
+msgid "OPERATOR"
+msgstr "Operator"
+
+msgid "MANUFACTURER"
+msgstr "Manufacturer"
+
+msgid "3RD_PARTIES"
+msgstr "3rd parties"
+
+msgid "TRUSTED_ROOT_CERTIFICATE"
+msgstr "Trusted root certificate"
+
+msgid "UNINSTALL"
+msgstr "Uninstall"
+
+msgid "INSTALL"
+msgstr "Install"
+
+msgid "CANCEL"
+msgstr "Cancel"
+
+msgid "SELECT_ALL"
+msgstr "Select all"
+
+msgid "INSTALL_CERT_FROM_SD_QUESTION"
+msgstr "Install certificates from SD card?"
+
+msgid "YES_ANSWER"
+msgstr "Yes"
+
+msgid "NO_ANSWER"
+msgstr "No"
+
+msgid "CERTIFICATE_DETAILS"
+msgstr "Certificate details"
+
+msgid "SEARCHED_CERTIFICATE"
+msgstr "Searched certificate"
+
+msgid "COMMON_NAME"
+msgstr "Common name:"
+
+msgid "ORGANIZATION"
+msgstr "Organization:"
+
+msgid "VERSION"
+msgstr "Version:"
+
+msgid "VALID_FROM"
+msgstr "Valid from:"
+
+msgid "VALID_TO"
+msgstr "Valid to:"
+
+msgid "SERIAL_NUMBER"
+msgstr "Serial number:"
+
+msgid "SIGNATURE_ALGORITHM"
+msgstr "Signature Algorithm:"
+
+msgid "PUBLIC_KEY"
+msgstr "Public key:"
+
+msgid "KEY_USAGE"
+msgstr "Key usage:"
+
+msgid "CA:"
+msgstr "CA:"
+
+msgid "CA_TRUE"
+msgstr "true"
+
+msgid "CA_FALSE"
+msgstr "false"
+
+msgid "NO_DATA"
+msgstr "No data"
+
+msgid "CERT_OWNER"
+msgstr "Owner"
+
+msgid "CERT_ISSUER"
+msgstr "Issuer"
+
+msgid "CERT_DATA"
+msgstr "Certificate data"
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100644 (file)
index 0000000..7ce7609
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "No hay contenido"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Asunto"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Número de serie"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Desinstalado"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Información de aplicación"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplicación"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Datos"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Iniciar de forma predeterminada"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Borrar valores predeterminados"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Esta aplicación está definida para abrirse de forma predeterminada para algunas acciones"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operador"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Terceros"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Almacenamiento"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Más detalles"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificados"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Desinstalando..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabricante"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Válido desde"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Válido hasta"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Huella digital"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emisor"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..504b7e2
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Ei sisältöjä"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Aihe"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Sarjanumero"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Asennus poistettu"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Sovelluksen tiedot"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Yhteensä"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Sovellus"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "tavua"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Käynnistä oletuksena"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Poista oletukset"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Tämä sovellus on oletusarvoisesti määritetty avautumaan tiettyjen toimenpiteiden suorittamista varten"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operaattori"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Kolmannet osapuolet"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Tallennustila"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "Gt"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "Mt"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "kt"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Lisätietoja"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Varmenteet"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Asennusta poistetaan..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Valmistaja"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Voimassa alkaen"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Voimassaolo päättyy"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Tunniste"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Myöntäjä"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100644 (file)
index 0000000..ccb5a69
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Aucun fichier"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Objet"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Numéro de série"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Désinstallé"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informations sur l'application"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Application"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Données"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "octets"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Lancer par défaut"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Supprimer les valeurs par défaut"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Cette application est définie sur ouvrir par défaut pour certaines actions"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Opérateur"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Tiers"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Stockage"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "Go"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "Mo"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "Ko"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Plus de détails"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificats"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Désinstallation..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabricant"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Début de validité"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Fin de validité"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Empreinte digitale"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emetteur"
+
diff --git a/po/he.po b/po/he.po
new file mode 100644 (file)
index 0000000..71a799d
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "אין תוכן"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "הזן נושא"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "מספר סידורי"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "לא מותקן"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "פרטי יישום"
+
+#msgid "IDS_ST_BODY_TOTAL"
+#msgstr "סה"כ"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "יישום"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "נתונים"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "בתים"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "הפעל כברירת מחדל"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "נקה ברירות מחדל"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "יישום זה מוגדר להיפתח כברירת מחדל עבור פעולות מסוימות"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "מפעיל"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "גורמי צד שלישי"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "אחסון"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "ג'יגה בייט"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "פרטים נוספים"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "אישורים"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "מסיר התקנה..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "יצרן"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "חוקי מ"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "חוקי עד"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "טביעת אגודל"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "מנפיק"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100644 (file)
index 0000000..b7889a5
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "कोई सामग्री नहीं"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "विषय"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "सीरियल नंबर"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "अनइंस्‍टॉल किया गया"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "अनुप्रयोग की जानकारी"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "कुल"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "एप्लीकेशन"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "डाटा"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "बाइट्स"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "बाई डिफ़ॉल्‍ट शुरू करें"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "डिफौल्ट्स साफ़ करें"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "कुछ कार्रवाइयों के लिए यह ऐप खोलें पर सेट किया गया है"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "ऑपरेटर"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "सैमसंग"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "तृतीय पक्ष"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "स्टोरेज"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "जीबी"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "केबी"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "अधिक विवरण"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "प्रमाणपत्र"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "अस्थापित किया जा रहा है..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "निर्माता"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "से मान्य"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "वैध जब तक की"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "थंबप्रिंट"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "जारीकर्ता"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100644 (file)
index 0000000..0d2bc55
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nema sadržaja"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Naslov"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serijski broj"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Deinstalirano"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Detalji aplikacije"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Ukupno"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikacija"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Podaci"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bajtova"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Pokreni po zadanom"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Obriši zadane postavke"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Ova je aplikacija postavljena kao zadana za neke radnje"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operater"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Drugi proizvođači"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Spremanje"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Više detalja"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikati"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Deinstaliranje..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Proizvođač"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Vrijedi od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Vrijedi do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Ispis sličica"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Izdavač"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..28a992d
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nincs tartalomjegyzék"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Tárgy"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Sorozatszám"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Eltávolítva"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Alkalmazás adatai"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Összesen"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Alkalmazás"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Adat"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bájt"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Alapértelmezett indítás"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Alapértelmezések törlése"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "A beállításnak megfelelően bizonyos műveleteknél alapértelmezésként megnyílik ez az alkalmazás"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Szolgáltató"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Harmadik felek"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Tárhely"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "További részletek"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Tanúsítványok"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Eltávolítás..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Gyártó"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Érvényesség kezdete"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Érvényesség vége"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Ujjlenyomat"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Kibocsátó"
+
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..2cd2407
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Tdk ada konten"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Subyek"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Nomor serial"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Instalan terhapus"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Info aplikasi"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikasi"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Jalankan sebagai default"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Hapus default"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Aplikasi ini diatur untuk buka dengan default untuk beberapa tindakan"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Pihak ketiga"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Penyimpanan"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Rincian lainnya"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikat"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Menghapus instalan..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Pabrikan"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Berlaku dari"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Berlaku sampai"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Cetak mini"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Penerbit"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100644 (file)
index 0000000..1989636
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nessun contenuto"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Oggetto"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Numero di serie"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Disinstallazione eseguita"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Info applicazione"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Totale"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Applicazione"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dati"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Lancia per impostazione predefinita"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Elimina predefiniti"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "L'applicazione è configurata per aprirsi come impostazione predefinita per alcune azioni"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatore"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Terze parti"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Memoria"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Altri dettagli"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificati"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Disinstallazione in corso..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Produttore"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Valido da"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Valido fino a"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Impronta digitale"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emittente"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100644 (file)
index 0000000..f5e7716
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "コンテンツがありません。"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "件名"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "シリアル​番号"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "アンインストールしました。"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "アプリケーション​情報"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "合計"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "アプリケーション"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "データ"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "バイト数"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "初期状態で起動"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "初期設定に戻す"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "このアプリはいくつかのアクションが初期値で起動するように設定されています。"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "認証あり"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "サードパーティ"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "ストレージ"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "注意事項の詳細"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "証明書"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "アンインストール中..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "製造社"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "有効​期限​(開始)"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "有効期限​(終了)"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "拇印"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "発行者"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100644 (file)
index 0000000..a911f3a
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "내용이 없습니다"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "제목"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "시리얼 번호"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "삭제하였습니다"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "애플리케이션 정보"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "전체"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "애플리케이션"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "데이터"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "바이트"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "기본으로 실행"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "기본 정보 지우기"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "이 애플리케이션은 일부 동작에 대해 기본적으로 실행되도록 설정되어 있습니다"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "사업자"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "참여업체"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "저장소"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "자세히 보기"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "인증서"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "삭제 중..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "제조사"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "유효기간 시작일"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "만료일"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Thumbprint"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "발행자"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..96b6344
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nėra turinio"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Tema"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serijos numeris"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Pašalinta"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Programos informacija"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Iš viso"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Programa"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Duomenys"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "baitai"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Numatytasis paleidimas"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Valyti numatytuosius"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Pagal numatytuosius nustatymus dėl kai kurių veiksmų ši programa nustatyta atsidaryti"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatorius"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Trečiosios šalys"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Saugykla"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Daugiau informacijos"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikatai"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Pašalinama..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Gamintojas"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Galioja nuo"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Galioja iki"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Nykščio atspaudas"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Leidėjas"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100644 (file)
index 0000000..4dfcc73
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nav satura"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Tēma"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Sērijas numurs"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Atinstalēts"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informācija par programmu"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Kopā"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Programma"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dati"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "baiti"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Palaist pēc noklusējuma"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Notīrīt noklusējumus"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Dažām darbībām ir iestatīts, ka šī programma tiek atvērta pēc noklusējuma"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operators"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Trešās puses"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Krātuve"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Papildinformācija"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikāti"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Atinstalē..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Ražotājs"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Derīgs no"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Derīgs līdz"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Īkšķa nospiedums"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Izdevējs"
+
diff --git a/po/ms.po b/po/ms.po
new file mode 100644 (file)
index 0000000..c40077b
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Tiada kandungan"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Subjek"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Nombor bersiri"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Dinyahpasang"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Maklumat aplikasi"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Jumlah"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikasi"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bait"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Lancarkan secara lalai"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Kosongkan lalai"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Aplikasi ini ditetapkan untuk membuka dengan lalai untuk beberapa tindakan"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Pengendali"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Pihak ketiga"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Penyimpanan"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Lebih butiran"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sijil"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Nyah-pasang"
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Pengilang"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Sah dari"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Sah sehingga"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Cap jari"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Pengeluar"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100644 (file)
index 0000000..4d4f615
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Geen inhoud"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Onderwerp"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serienummer"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Verwijderd"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Applicatie-info"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Totaal"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Applicatie"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Gegevens"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Standaard starten"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Standaard-instellingen wissen"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Deze app wordt standaard geopend bij bepaalde acties"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Derden"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Opslag"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Meer details"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificaten"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Verwijderen..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabrikant"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Geldig vanaf"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Geldig tot"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Miniatuurafdruk"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Uitgever"
+
diff --git a/po/no.po b/po/no.po
new file mode 100644 (file)
index 0000000..d4c535d
--- /dev/null
+++ b/po/no.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Ikke noe innhold"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Emne"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serienummer"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Avinstallert"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Programinfo"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Program"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Start som standard"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Tøm standarder"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Dette programmet er angitt å åpne som standard for noen handlinger"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatør"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Tredjepart"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Flere detaljer"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikater"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Avinstallerer ..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Produsent"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Gyldig fra"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Gyldig til"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Tommelfingeravtrykk"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Utstedt av"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..69c74ec
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Brak zawartości"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Temat"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Numer seryjny"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Odinstalowano"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informacje o aplikacji"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Ogółem"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikacje"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dane"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bajtów"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Domyślnie uruchamiaj"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Wyczyść ustawienia domyślne"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Wybrano domyślne uruchamianie tej aplikacji w przypadku niektórych operacji"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Inni wydawcy"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Domyślna pamięć"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Więcej szczegółów"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certyfikaty"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Odinstalowywanie..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Producent"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Ważny od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Ważny do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Cyfrowy odcisk palca"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Wystawca"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100644 (file)
index 0000000..2a6ea78
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Sem conteúdo"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Assunto"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Número de série"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Desinstalado"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informações da aplicação"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplicação"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dados"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bytes"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Iniciar por predefinição"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Limpar predefinições"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Esta aplicação está definida para ser aberta por predefinição por algumas acções"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operador"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Terceiros"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Armazenamento"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mais detalhes"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificados"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "A desinstalar..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabricante"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Válido de"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Válido até"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Impressão miniatura"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emissor"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..cdf2add
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Conţinuturi inexistente"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Subiect"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Număr serie"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Dezinstalat"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informaţii aplicaţie"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Total"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplicaţie"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Date"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "octeţi"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Lansare implicită"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Ştergere valori implicite"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Această aplicaţie este setată să se deschidă în mod implicit pentru anumite acţiuni"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Terţi"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Stocare"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MO"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KO"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mai multe detalii"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certificate"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Se dezinstalează..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Fabricant"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Valabil de la"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Valid până la"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Imprimare miniaturi"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Emitent"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100644 (file)
index 0000000..1d0161c
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Нет содержимого"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Тема"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Серийный номер"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Удалено"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Сведения о приложении"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Всего"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Приложение"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Данные"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "байт"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Запускать по умолчанию"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Сбросить настройки по умолчанию"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Это приложение по умолчанию открывается для некоторых действий"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Оператор"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Третьи стороны"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Память"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "Гб"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "Мб"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "Кб"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Дополнительно"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Сертификаты"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Удаление..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Изготовитель"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Действителен с"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Действителен до"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Отпечаток"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Выдан"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..1a81d7e
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Žiadny obsah"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Predmet"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Sériové číslo"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Odinštalované"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informácie o aplikácii"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Celkom"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikácia"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dáta"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "B"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Spustiť ako predvolené"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Vymazať predvolené"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Táto aplikácia je nastavená na predvolené otvorenie pre niektoré akcie"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operátor"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Ostatní výrobcovia"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Úložisko"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Ďalšie podrobnosti"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikáty"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Odinštaluje sa..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Výrobca"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Platné od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Platné do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Odtlačok"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Vydavateľ"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..d295202
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Ni vsebine"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Zadeva"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serijska številka"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Odstranjeno"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informacije o aplikaciji"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Skupaj"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikacija"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Podatki"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "(B)"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Zaženi kot privzeto"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Počisti privzeto"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Ta program je nastavljen, da se privzeto odpre za nekatera dejanja"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operater"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Drugi udeleženci"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Shranjevanje"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Več podrobnosti"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikati"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Odstranjevanje ..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Proizvajalec"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Veljavno od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Veljavno do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Prstni odtis"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Izdajatelj"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..2bca2ce
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Nema sadržaja"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Naslov"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serijski broj"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Deinstalirano"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Informacije o aplikaciji"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Ukupno"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Aplikacija"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Podaci"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bajtova"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Pokreni podrazumevano"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Obriši podrazumevane vrednosti"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Podešeno je da se ova aplikacija podrazumevano otvara za neke radnje"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operator"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Treća lica"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Memorija"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Više informacija"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikati"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Deinstaliranje..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Proizvođač"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Važi od"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Važi do"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Otisak palca"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Izdavač"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..72d2e70
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Inget innehåll"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Rubrik"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Serienummer"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Avinstallerat"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Programinfo"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Totalt"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Program"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Starta som standard"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Rensa standard"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Du har valt att starta detta program som standard för vissa åtgärder"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatör"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Tredjepartsleverantörer"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Mer information"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Certifikat"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Avinstallerar..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Tillverkare"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Giltigt från"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Giltigt till"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Tumavtryck"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Utfärdare"
+
diff --git a/po/th.po b/po/th.po
new file mode 100644 (file)
index 0000000..6df4f98
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "ไม่​มี​คอน​เทนท์"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "เรื่อง"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "ซีเรีย​ล​นัมเบอร์"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "ลบ​การ​ติด​ตั้ง​แล้ว"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "ข้อ​มูล​แอ​พพลิ​เค​ชั่น"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "รวม"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "แอ​พพลิ​เค​ชั่น"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "ข้อมูล"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "ไบ​ท์"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "เริ่ม​โดย​ค่า​พื้น​ฐาน"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "ลบ​​ค่า​พื้น​ฐาน"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "แอพส์​นี้​ตั้ง​ค่า​ให้​เปิด​ตาม​พื้น​ฐาน​ด้วย​การ​ดำเนิน​การ​บาง​ประการ"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "ผู้​ให้​บริการ"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "บุคคล​ที่​สาม"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "ที่​เก็บ"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "ราย​ละเอียด​เพิ่ม​เติม"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "ใบ​รับรอง"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "กำลัง​ลบ​การ​ติด​ตั้ง..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "ผู้ผลิต"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "อนุมัติ​จาก"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "อนุญาต​จน​กระทั่ง"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "พิมพ์​ลาย​นิ้ว​มือ"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "ผู้​จำหน่าย"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100644 (file)
index 0000000..fb91c68
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "İçerik yok"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Konu"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr " Seri numarası"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Uygulama kaldırıldı"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Uygulama bilgisi"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Toplam"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Uygulama"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Data"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "bayt"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Varsayılan olarak başlat"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Varsayılanları sil"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Bu uygulama bazı eylemler için varsayılan olarak açılmaya ayarlanmış"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Operatör"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Üçüncü taraflar"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Kayıt yeri"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Daha fazla ayrıntı"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Sertifikalar"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Kaldırılıyor..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Üretici"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr " Geçerlilik süresi başlangıcı"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Geçerlilik süresi"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Parmak izi"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr " Veren"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..b4f3fa5
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Немає вмісту"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Тема"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Серійний номер"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Видалено"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Відомості про програму"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Загалом"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Програма"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Дані"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "байтів"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Запускати за замовчуванням"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Очистити стандартні установки"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Цю програму встановлено як програму за замовчуванням для виконання певних дій"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Оператор"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Треті сторони"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Місце збереження"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "ГБ"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "КБ"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Додаткові деталі"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Сертифікати"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Видалення..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Виробник"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Дійсно з"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Дійсно до"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "Відбиток"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Видано"
+
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..f04e386
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "Không nội dung"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "Chủ đề"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "Số sêri"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "Gỡ c.đặt"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "Thông tin ứng dụng"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "Tổng cộng"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "Ứng dụng"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "Dữ liệu"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "byte"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "Khởi chạy theo mặc định"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "Xóa các mặc định"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "Ứng dụng này được đặt để mở theo mặc định cho một số hành động"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "Bộ vận hành"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "Bên thứ ba"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "Lưu trữ"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "Nhiều chi tiết hơn"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "Chứng nhận"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "Đang gỡ cài đặt..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "Nhà sản xuất"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "Hiệu lực từ"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "Hiệu lực đến"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "In dạng nhỏ"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "Nhà phát hành"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..2dedfdd
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "无内容"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "主题"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "序号"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "已卸载"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "应用程序信息"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "全部"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "软件"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "数据"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "字节"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "默认启动"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "清除默认值"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "该应用程序设置为由部分动作默认打开"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "运营商"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "第三方"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "存储器"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多详情"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "证书"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "正在卸载…"
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "制造商"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "有效由"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "有效直至"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "大头像"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "发行者"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644 (file)
index 0000000..ae21d09
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "無內容"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "主題"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "序號"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "已解除安裝"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "應用程式資訊"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "總計"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "應用程式"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "數據"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "位元組"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "預設啟動"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "清除預設值"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "此應用程式設定為由部分動作預設開啟"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "營運商"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "第三方"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "儲存位置"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多詳情"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "證書"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "正在解除安裝..."
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "製造商"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "有效期由"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "有效期直至"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "拇指指紋"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "簽發者"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..a6cf7e7
--- /dev/null
@@ -0,0 +1,81 @@
+msgid "IDS_COM_BODY_NO_CONTENTS"
+msgstr "無內容"
+
+msgid "IDS_COM_BODY_SUBJECT"
+msgstr "主旨"
+
+msgid "IDS_COM_BODY_SERIAL_NUMBER"
+msgstr "序號"
+
+msgid "IDS_ST_POP_UNINSTALLED"
+msgstr "已解除安裝"
+
+msgid "IDS_ST_HEADER_APPLICATION_INFO"
+msgstr "應用程式資訊"
+
+msgid "IDS_ST_BODY_TOTAL"
+msgstr "總計"
+
+msgid "IDS_ST_BODY_APPLICATION"
+msgstr "程式"
+
+msgid "IDS_ST_BODY_DATA"
+msgstr "資料"
+
+msgid "IDS_ST_BODY_BYTES"
+msgstr "位元組"
+
+msgid "IDS_ST_BODY_LAUNCH_BY_DEFAULT"
+msgstr "預設為啟動"
+
+msgid "IDS_ST_BODY_CLEAR_DEFAULTS"
+msgstr "清除預設值"
+
+msgid "IDS_ST_BODY_YOU_HAVE_SELECTED_TO_LAUNCH_THIS_APPLICATION_BY_DEFAULT_FOR_SOME_ACTIONS"
+msgstr "應用程式已設定將根據預設開啟部分動作"
+
+msgid "IDS_ST_BODY_OPERATOR"
+msgstr "營運商"
+
+msgid "IDS_ST_BODY_SAMSUNG"
+msgstr "Samsung"
+
+msgid "IDS_ST_BODY_THIRD_PARTIES"
+msgstr "第三方"
+
+msgid "IDS_ST_BODY_STORAGE"
+msgstr "儲存空間"
+
+msgid "IDS_ST_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_ST_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_ST_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_ST_BODY_MORE_DETAILS"
+msgstr "更多詳細資料"
+
+msgid "IDS_ST_HEADER_CERTIFICATES"
+msgstr "憑證"
+
+msgid "IDS_ST_POP_UNINSTALLING_ING"
+msgstr "移除中"
+
+msgid "IDS_ST_BODY_MANUFACTURER"
+msgstr "製造商"
+
+msgid "IDS_ST_BODY_VALID_FROM"
+msgstr "生效時間"
+
+msgid "IDS_ST_BODY_VALID_UNTIL"
+msgstr "有效期至"
+
+msgid "IDS_ST_BODY_THUMBPRINT"
+msgstr "拇指指紋"
+
+msgid "IDS_ST_BODY_ISSUER"
+msgstr "簽發者"
+
diff --git a/ug/CMakeLists.txt b/ug/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..9d1a76d
--- /dev/null
@@ -0,0 +1,38 @@
+pkg_check_modules(ug-setting-manage-certificates-efl_pkgs
+    REQUIRED
+    elementary
+    ui-gadget-1
+    evas
+    dlog
+    dpl-dbus-efl
+    cert-svc-vcore
+)
+
+SET(SRCS
+    src/mgr-app-uigadget.c
+)
+
+SET(CMAKE_INSTALL_RPATH "${PREFIX}/lib")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/ug/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+INCLUDE_DIRECTORIES(${ug-setting-manage-certificates-efl_pkgs_INCLUDE_DIRS})
+
+ADD_DEFINITIONS(${ug-setting-manage-certificates-efl_pkgs_DEPS_CFLAGS})
+ADD_DEFINITIONS(${ug-setting-manage-certificates-efl_pkgs_DEPS_OTHER})
+
+ADD_LIBRARY(${TARGET_CERT_MANAGER_UG} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET_CERT_MANAGER_UG} PROPERTIES SOVERSION 0.1.0)
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_MANAGER_UG}
+    ${ug-setting-manage-certificates-efl_pkgs_LIBRARIES}
+    ${ug-setting-manage-certificates-efl_pkgs_LDFLAGS}
+    ${TARGET_CERT_COMMON}
+    ${TARGET_CERT_VIEW}
+)
+
+INSTALL(TARGETS
+    ${TARGET_CERT_MANAGER_UG}
+    DESTINATION
+    /opt/ug/lib
+)
diff --git a/ug/include/mgr-app-uigadget.h b/ug/include/mgr-app-uigadget.h
new file mode 100755 (executable)
index 0000000..bbecab1
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __UG_SETTING_MANAGE_APPLICATION_EFL_H__
+#define __UG_SETTING_MANAGE_APPLICATION_EFL_H__
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <glib.h>
+#include <app.h>
+#include <cert-svc/cinstance.h>
+
+#ifndef PACKAGE
+#define PACKAGE "ug-setting-manage-certificates-efl"
+#endif
+
+#ifndef LOCALEDIR
+#define LOCALEDIR PREFIX"/res/locale"
+#endif
+
+#define IMAGE_PATH PREFIX"/res/images"
+
+struct ug_data {
+       Evas_Object         *win_main;
+       Evas_Object         *bg;
+       Evas_Object         *layout_main;
+       Evas_Object         *navi_bar;
+       GList               *view_list;
+       ui_gadget_h         ug;
+       ui_gadget_h         sub_ug;
+       void                *data;
+       Evas_Object         *popup;
+
+       Eina_Bool           uninstall;
+
+       char                *uninstall_path;
+       void                *data_to_clear;
+
+       void                *list_to_refresh;
+       struct ListElement  *list_element_to_refresh;
+       char                dir_to_refresh[512];
+       CertSvcInstance     instance;
+       Evas_Object         *genlist_pfx;
+
+       Evas_Object         *indicator;
+       Ecore_Pipe          *msg_pipe;
+
+};
+
+struct ug_data *get_ug_data();
+
+#endif /* __UG_SETTING_MANAGE_APPLICATION_EFL_H__ */
diff --git a/ug/src/mgr-app-uigadget.c b/ug/src/mgr-app-uigadget.c
new file mode 100755 (executable)
index 0000000..617171b
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ * 
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of 
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not 
+ * disclose such Confidential Information and shall use it only in 
+ * accordance with the terms of the license agreement you entered 
+ * into with SAMSUNG ELECTRONICS. 
+ *
+ * SAMSUNG make no representations or warranties about the suitability 
+ * of the software, either express or implied, including but not limited 
+ * to the implied warranties of merchantability, fitness for a particular 
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any 
+ * damages suffered by licensee as a result of using, modifying or 
+ * distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include "mgr-app-uigadget.h"
+#include "mgr-app-common-debug.h"
+#include "mgr-app-common-error.h"
+#include "mgr-app-view-manager.h"
+#include "mgr-app-widget.h"
+#include "mgr-app-common-util.h"
+
+#define STR_VIEWTYPE                           "viewtype"
+#define STR_MANAGE_APPLICATIONS                "manage-applications"
+
+static struct ug_data *ugd = NULL;
+struct ug_data *get_ug_data() {
+       LOGD("get_ug_data()");
+    return ugd;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+
+       retv_if(ug == NULL, NULL);
+       retv_if(priv == NULL, NULL);
+
+       bindtextdomain(PACKAGE, LOCALEDIR);
+
+       ugd = priv;
+       ugd->ug = ug;
+       
+       ugd->win_main = ug_get_parent_layout(ug);
+       retv_if(ugd->win_main == NULL, NULL);
+
+       ugd->bg = mgr_app_widget_create_bg(ugd->win_main);
+       if (!ugd->bg) {
+               MGR_APP_DEBUG_ERR("ugd->bg is null");
+               MGR_APP_MEM_FREE(ugd->win_main);
+               return NULL;
+       }
+
+       ugd->layout_main = mgr_app_widget_create_main_layout(ugd->win_main);
+       if (!ugd->layout_main) {
+               MGR_APP_DEBUG_ERR("ugd->layout_main is null");
+               MGR_APP_MEM_FREE(ugd->win_main);        
+               MGR_APP_MEM_FREE(ugd->bg);
+               MGR_APP_END();
+               return NULL;
+       }
+
+       elm_object_part_content_set(ugd->layout_main, "elm.swallow.bg", ugd->bg);
+       
+       ugd->navi_bar = mgr_app_view_create_base_navigation(ugd->layout_main);
+       if (!ugd->navi_bar) {
+               MGR_APP_DEBUG_ERR("ugd->navi_bar is null");
+               MGR_APP_MEM_FREE(ugd->win_main);        
+               MGR_APP_MEM_FREE(ugd->bg);
+               MGR_APP_MEM_FREE(ugd->layout_main);
+               MGR_APP_END();
+               return NULL;
+       }
+       
+       mgr_app_view_set_win_main(ugd->win_main);
+       mgr_app_view_set_bg(ugd->bg);
+       mgr_app_view_set_layout_main(ugd->layout_main);
+       mgr_app_view_set_navibar(ugd->navi_bar);
+       mgr_app_view_set_viewlist(ugd->view_list);
+
+       ugd->uninstall = EINA_FALSE;
+
+       certificates_menu_cb((void*) ugd, NULL, NULL);
+
+       MGR_APP_END();
+       return ugd->layout_main;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       MGR_APP_END();
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       MGR_APP_END();
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       MGR_APP_END();
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+
+       ret_if(ug == NULL);
+       ret_if(priv == NULL);
+
+       ugd = priv;
+
+       evas_object_del(ugd->layout_main);
+       ugd->layout_main = NULL;
+       MGR_APP_END();
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       MGR_APP_END();
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       switch (event) {
+       case UG_EVENT_LOW_MEMORY:
+               break;
+       case UG_EVENT_LOW_BATTERY:
+               break;
+       case UG_EVENT_LANG_CHANGE:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               break;
+       default:
+               break;
+       }
+       MGR_APP_END();
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       ret_if(ug == NULL);
+
+       switch (event) {
+       case UG_KEY_EVENT_END:
+               ug_destroy_me(ug);
+               break;
+       default:
+               break;
+       }
+       MGR_APP_END();
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       MGR_APP_BEGIN();
+
+       retv_if(ops == NULL, -1);
+
+       MGR_APP_MEM_MALLOC(ugd, (1), struct ug_data);
+
+       ops->create     = on_create;
+       ops->start              = on_start;
+       ops->pause              = on_pause;
+       ops->resume     = on_resume;
+       ops->destroy    = on_destroy;
+       ops->message    = on_message;
+       ops->event              = on_event;
+       ops->key_event  = on_key_event;
+       ops->priv               = ugd;
+       ops->opt                = UG_OPT_INDICATOR_ENABLE;
+       
+       MGR_APP_END();
+       return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       MGR_APP_BEGIN();
+
+       ret_if(ops == NULL);
+
+       ugd = ops->priv;
+       MGR_APP_MEM_FREE(ugd);
+
+       MGR_APP_END();
+}
+
+UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
+{
+       MGR_APP_BEGIN();
+       /* nothing to do for Setting>Reset */
+       MGR_APP_END();
+       return 0;
+}
diff --git a/view/CMakeLists.txt b/view/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..d94f9bf
--- /dev/null
@@ -0,0 +1,63 @@
+pkg_check_modules(pkgs_view
+    REQUIRED
+    appcore-efl
+    elementary
+    dlog
+    glib-2.0
+    evas
+    edje
+    aul
+    eina
+    ail
+    appsvc
+    icu-i18n
+    ui-gadget-1
+    capi-appfw-application
+    cert-svc-vcore
+)
+
+SET(SRCS
+    src/certificates/certificates_menu.c
+    src/certificates/certificate_util.c
+    src/certificates/trusted_root_ca_cert/trusted_root_ca_cert.c
+    src/certificates/user_cert/install_certificate.c
+    src/certificates/user_cert/user_cert.c
+    src/certificates/pfx_cert/pfx_cert.c
+    src/certificates/pfx_cert/pfx_cert_install.c
+    src/certificates/pfx_cert/pfx_cert_remove.c
+    src/certificates/detail_info_cert.c
+    src/certificates/put_password_certificate.c
+    src/certificates/uninstall_certificate.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/view/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/ug/include)
+INCLUDE_DIRECTORIES(${pkgs_view_INCLUDE_DIRS})
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+
+IF("${ARCH}" STREQUAL "arm")
+    ADD_DEFINITIONS("-DTARGET")
+    MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+MESSAGE("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
+
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_LIBRARY(${TARGET_CERT_VIEW} SHARED ${SRCS})
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_VIEW}
+    ${pkgs_view_LIBRARIES}
+    ${TARGET_CERT_COMMON}
+)
+
+INSTALL(TARGETS
+    ${TARGET_CERT_VIEW}
+    DESTINATION
+    ${LIBDIR}
+)
diff --git a/view/include/certificates/certificate_util.h b/view/include/certificates/certificate_util.h
new file mode 100644 (file)
index 0000000..7bc6bb6
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#ifndef __CERT_UTIL_H__
+#define __CERT_UTIL_H_
+
+#include <Elementary.h>
+#include <assert.h>
+#include <dlog.h>
+
+#include "certificates/certificates.h"
+
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+#define CERT_MAX_DATA_SIZE  256
+#define MAX_PATH_LENGHT     512
+#define NO_INFORMATION      "no information"
+
+enum TypeOfCert{
+       USER,
+       TRUSTED_ROOT,
+       TO_INSTALL,
+       TO_UNINSTALL,
+};
+
+struct ListElement {
+       struct ListElement *prev, *next;
+       char name[CERT_MAX_DATA_SIZE];
+       char title[CERT_MAX_DATA_SIZE];
+       char uninstall_path[MAX_PATH_LENGHT];
+       Eina_Bool isChecked;
+       Elm_Object_Item * it;
+};
+
+enum PositionOfElement {
+       NONE,                   // This is no element of the list
+       FIRST,                  // First element of list - there is nothing before, but is something after
+       LAST,                   // Last element of the list - there is nothing after, but is something before
+       IN_THE_MIDDLE,  // There are element before and after this element
+       THE_LAST_ONE,   // It means that this is the only one element on the list
+};
+
+void list_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void genlist_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+Evas_Object *create_info_pop(const char *content);
+
+struct ListElement* nextElement(struct ListElement *listElement);
+struct ListElement* initList();
+struct ListElement* addListElement(struct ListElement* lastListElement, char name[256]);
+struct ListElement* addListElementWithTitle(struct ListElement* lastListElement, char name[256], char title[256]);
+struct ListElement* addListElementSetUninstallPath(struct ListElement* lastListElement, char uninstall_path[256]);
+struct ListElement* findLastElement(struct ListElement* listElement);
+struct ListElement* findFirstElement(struct ListElement* listElement);
+enum PositionOfElement removeListElement(struct ListElement *listElementToRemove);
+void deleteList(struct ListElement* listElement);
+
+/**
+ * Path concatenation
+ * Merge two string in a correct path, e.g.:
+ *
+ * char *c1 = "/opt/shared"
+ * char *c2 = "file_1.pdf"
+ * result -> "/opt/shared/file_1.pdf"
+ *
+ * or:
+ *
+ * char *c1 = "/opt/shared/"
+ * char *c2 = "file_1.pdf"
+ * result -> "/opt/shared/file_1.pdf"
+ *
+ * (function put '/' char in the end of first string if it's needed)
+ *
+ * Result is char pointer allocated by malloc()
+ * Should be deallocated by free()
+ **/
+char *path_cat(const char *str1, char *str2);
+char *extractDataFromCert(char *path);
+
+struct ListElement *initList();
+struct ListElement *addListElement(struct ListElement* lastListElement, char name[256]);
+struct ListElement *addListElementWithTitle(struct ListElement* lastListElement, char name[256], char title[256]);
+enum PositionOfElement removeListElement(struct ListElement *listElementToRemove);
+struct ListElement *findLastElement(struct ListElement* listElement);
+struct ListElement *findFirstElement(struct ListElement* listElement);
+void cert_selection_cb(void *data, Evas_Object *obj, void *event_info);
+void deleteList(struct ListElement* listElement);
+void back_cb(void *data, Evas_Object *obj, void *event_info);
+Eina_Bool make_list(struct ug_data *ad, Evas_Object *list, char *dir_path, struct ListElement *lastListElement, enum TypeOfCert type);
+int set_path(struct ug_data *ad, char const *path);
+void free_path(struct ug_data *ad);
+void set_refresh_params(struct ug_data *ad, Evas_Object *list, struct ListElement *lastListElement, char dir[MAX_PATH_LENGHT]);
+void refresh_list(struct ug_data *ad);
+Evas_Object *create_yes_no_pop(struct ug_data *ad, const char *content);
+Evas_Object *create_ok_pop(struct ug_data *ad, const char *content);
+
+#ifdef _cplusplus
+}
+#endif
+
+#ifdef LOG_TAG
+    #undef LOG_TAG
+#endif
+
+#ifndef LOG_TAG
+    #define LOG_TAG "CERT-SVC-UI"
+#endif
+
+//temporary enum definition
+#define ELM_TOOLBAR_SHRINK_EXPAND 4
+
+#define BUF256 256
+#define BUF1024 1024
+
+#endif // end of CERT_UTIL_H
+
+
diff --git a/view/include/certificates/certificates.h b/view/include/certificates/certificates.h
new file mode 100644 (file)
index 0000000..96f6747
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#ifndef __DEF_certificates_H_
+#define __DEF_certificates_H_
+
+#include <Elementary.h>
+#include "mgr-app-uigadget.h"
+
+// Path to the certs
+//root path
+#define PATH_CERT_ROOT "/opt/share/cert-svc/certs"
+
+//mdm
+#define PATH_CERT_MDM "/opt/share/cert-svc/certs/mdm"
+#define PATH_CERT_MDM_SECURITY "/opt/share/cert-svc/certs/security"
+#define PATH_CERT_MDM_SECURITY_CERT "/opt/share/cert-svc/certs/security/cert"
+
+//ssl
+#define PATH_CERT_SSL "/opt/share/cert-svc/certs/ssl"
+
+//sim
+#define PATH_CERT_SIM_OPERATOR "/opt/share/cert-svc/certs/sim/operator"
+#define PATH_CERT_SIM_THIRDPARTY "/opt/share/cert-svc/certs/sim/thirdparty"
+
+//user
+#define PATH_CERT_USER "/opt/share/cert-svc/certs/user"
+#define PATH_CERT_TRUSTEDUSER "/opt/share/cert-svc/certs/trusteduser"
+
+//code-signing
+#define PATH_CERT_WAC "/opt/share/cert-svc/certs/code-signing/wac"
+
+//sd-card
+#define PATH_SDCARD "/opt/storage/sdcard"
+
+// certificates menu
+void certificates_menu_cb(void *data, Evas_Object *obj, void *event_info);
+void trusted_root_cert_cb(void *data, Evas_Object *obj, void *event_info);
+void user_cert_cb(void *data, Evas_Object *obj, void *event_info);
+void pfx_cert_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+// trusted root certificates
+void trusted_root_cert_selection_cb(void *data, Evas_Object *obj, void *event_info);
+
+// user certificate
+void user_search_cert_cb(void *data, Evas_Object *obj, void *event_info);
+void user_cert_selection_cb(void *data, Evas_Object *obj, void *event_info);
+
+// PFX certificate
+void pfx_cert_install_cb(void *data, Evas_Object *obj, void *event_info);
+void put_pkcs12_name_cb(void *data, Evas_Object *obj, void *event_info);
+void put_pkcs12_name_and_pass_cb(void *data, Evas_Object *obj, void *event_info);
+void pfx_cert_remove_cb(void *data, Evas_Object *obj, void *event_info);
+void pfx_cert_create_list(struct ug_data *ad);
+
+// cert general
+void get_info_cert_cb(void *data, Evas_Object *obj, void *event_info);
+void delete_cert_cb(void *data, Evas_Object *obj, void *event_info);
+void install_cb(void *data, Evas_Object *obj, void *event_info);
+
+//---------------------------------------------
+
+#endif /* __DEF_certificates_H__ */
diff --git a/view/src/certificates/certificate_util.c b/view/src/certificates/certificate_util.c
new file mode 100644 (file)
index 0000000..d5e3d71
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#define _GNU_SOURCE
+
+#include <Ecore_X.h>
+#include <E_Notify.h>
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+
+#include "mgr-app-uigadget.h"
+#include "dlog.h"
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+#define CERT_GENLIST_1TEXT1EDIT_STYLE  "dialogue/1text.1icon.5"
+#define CERT_GENLIST_TITLE_STYLE "dialogue/title"
+
+static struct ug_data *appdata;
+
+static void _info_pop_response_no_cb(void *data, Evas_Object *obj, void *event_info) {
+       Evas_Object *pop = (Evas_Object *) data;
+
+       evas_object_del(pop);
+}
+
+static void _info_pop_response_yes_cb(void *data, Evas_Object *obj, void *event_info) {
+       Evas_Object *pop = (Evas_Object *) data;
+
+       user_search_cert_cb(appdata, NULL, NULL); //TODO: Using global value(appdata) is not nice.
+
+       evas_object_del(pop);
+}
+
+static void _info_pop_response_ok_cb(void *data, Evas_Object *obj, void *event_info) {
+    Evas_Object *pop = (Evas_Object *) data;
+
+    evas_object_del(pop);
+}
+
+void list_clicked_cb(void *data, Evas_Object *obj, void *event_info) {
+       Elm_Object_Item *it = (Elm_Object_Item *) elm_list_selected_item_get(obj);
+       if (it == NULL)
+               return;
+
+       elm_list_item_selected_set(it, EINA_FALSE);
+}
+
+void genlist_clicked_cb(void *data, Evas_Object *obj, void *event_info) {
+       Elm_Object_Item *it = (Elm_Object_Item *) elm_genlist_selected_item_get(obj);
+       if (it == NULL)
+               return;
+
+       elm_genlist_item_selected_set(it, EINA_FALSE);
+}
+
+//create yes/no popup
+Evas_Object *create_yes_no_pop(struct ug_data *ad, const char *content) {
+
+       appdata = ad;
+       Evas_Object *pop = NULL;
+
+       pop = elm_popup_add(ad->win_main);
+       evas_object_size_hint_weight_set(pop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       //yes button
+       Evas_Object *btn_yes = elm_button_add(pop);
+       elm_object_text_set(btn_yes, dgettext(PACKAGE, "YES_ANSWER")); // TODO: You shouldn't use magic string. This will make localization very hard.
+       evas_object_smart_callback_add(btn_yes, "clicked", _info_pop_response_yes_cb, pop); //TODO: how to pass appdata (other way than get_appdata();)?
+
+       //no button
+       Evas_Object *btn_no = elm_button_add(pop);
+       elm_object_text_set(btn_no, dgettext(PACKAGE, "NO_ANSWER")); // TODO: You shouldn't use magic string. This will make localization very hard.
+       evas_object_smart_callback_add(btn_no, "clicked", _info_pop_response_no_cb, pop);
+
+       Evas_Object *label = elm_label_add(pop);
+       elm_object_text_set(label, content);
+
+       elm_object_part_content_set(pop, "default", label);
+       elm_object_part_content_set(pop, "button1", btn_yes);
+       elm_object_part_content_set(pop, "button2", btn_no);
+
+       evas_object_show(pop);
+
+       return pop;
+}
+
+Evas_Object *create_ok_pop(struct ug_data *ad, const char *content) {
+
+    appdata = ad;
+    Evas_Object *pop = NULL;
+
+    pop = elm_popup_add(ad->win_main);
+    evas_object_size_hint_weight_set(pop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    //yes button
+    Evas_Object *btn_ok = elm_button_add(pop);
+    elm_object_text_set(btn_ok, dgettext(PACKAGE, "OK_BUTTON"));
+    evas_object_smart_callback_add(btn_ok, "clicked", _info_pop_response_ok_cb, pop);
+
+    Evas_Object *label = elm_label_add(pop);
+    elm_object_text_set(label, content);
+
+    elm_object_part_content_set(pop, "default", label);
+    elm_object_part_content_set(pop, "button1", btn_ok);
+
+    evas_object_show(pop);
+
+    return pop;
+}
+
+char *path_cat(const char *str1, char *str2) {
+       size_t str1_len = strlen(str1);
+       char *result;
+       int as_result;
+       if (str1[str1_len - 1] != '/') {
+           as_result = asprintf(&result, "%s/%s", str1, str2);
+       } else {
+           as_result = asprintf(&result, "%s%s", str1, str2);
+       }
+
+       if(as_result != -1)
+           return result;
+       else
+           return NULL;
+}
+
+// extract title from certificate ------------------
+char *extractDataFromCert(char *path){
+
+       CertSvcInstance instance;
+       if (certsvc_instance_new(&instance) == CERTSVC_FAIL) {
+               LOGD("CERTSVC_FAIL");
+               return NULL;
+       }
+       CertSvcCertificate cert;
+       CertSvcString buffer;
+       char *char_buffer;
+
+       certsvc_certificate_new_from_file(instance, path, &cert);
+
+       certsvc_certificate_get_string_field(cert, CERTSVC_SUBJECT_COMMON_NAME, &buffer);
+       char_buffer = strndup(buffer.privateHandler, buffer.privateLength);
+       LOGD("char_buffer : %s", char_buffer);
+
+       certsvc_string_free(buffer);
+       certsvc_certificate_free(cert);
+
+       return char_buffer;
+}
+
+// List --------------------------------------------------------
+
+struct ListElement* nextElement(struct ListElement *listElement) {
+       if (listElement == NULL)
+               return NULL;
+
+       return listElement->next;
+}
+
+struct ListElement * initList() {
+
+       LOGD("initList()");
+       struct ListElement *firstListElement = (struct ListElement*) malloc(sizeof(struct ListElement));
+       if(firstListElement == NULL)
+               return NULL;
+
+       firstListElement->prev = NULL;
+       firstListElement->next = NULL;
+       firstListElement->isChecked = EINA_FALSE;
+       firstListElement->it = NULL;
+
+       return firstListElement;
+}
+
+struct ListElement* addListElement(struct ListElement* lastListElement, char name[256]) {
+       struct ListElement *newListElement = (struct ListElement*) malloc(sizeof(struct ListElement));
+       if (newListElement == NULL)
+               return NULL;
+       strcpy(newListElement->name, name);
+       lastListElement->next = newListElement;
+       newListElement->prev = lastListElement;
+       newListElement->next = NULL;
+       newListElement->isChecked = EINA_FALSE;
+       newListElement->it = NULL;
+       return newListElement;
+}
+
+struct ListElement* addListElementWithTitle(struct ListElement* lastListElement, char name[256], char title[256]) {
+       struct ListElement *newListElement = (struct ListElement*) malloc(sizeof(struct ListElement));
+       if (newListElement == NULL)
+               return NULL;
+       strcpy(newListElement->name, name);
+       strcpy(newListElement->title, title);
+       lastListElement->next = newListElement;
+       newListElement->prev = lastListElement;
+       newListElement->next = NULL;
+       newListElement->isChecked = EINA_FALSE;
+       newListElement->it = NULL;
+       return newListElement;
+}
+
+struct ListElement* addListElementSetUninstallPath(struct ListElement* lastListElement, char uninstall_path[256]) {
+       struct ListElement *newListElement = (struct ListElement*) malloc(sizeof(struct ListElement));
+       if (newListElement == NULL)
+               return NULL;
+       strcpy(newListElement->uninstall_path, uninstall_path);
+       lastListElement->next = newListElement;
+       newListElement->prev = lastListElement;
+       newListElement->next = NULL;
+       newListElement->it = NULL;
+       return newListElement;
+}
+
+/*
+ * Function returns position of removed element.
+ */
+enum PositionOfElement removeListElement(struct ListElement *listElementToRemove) {
+
+       if (listElementToRemove == NULL)
+               return NONE;
+
+       struct ListElement* prev;
+       struct ListElement* next;
+
+       if (listElementToRemove->prev != NULL && listElementToRemove->next != NULL) {
+               prev = listElementToRemove->prev;
+               next = listElementToRemove->next;
+               prev->next = next;
+               next->prev = prev;
+               free(listElementToRemove);
+               return IN_THE_MIDDLE;
+       } else if (listElementToRemove->prev != NULL && listElementToRemove->next == NULL) {
+               prev = listElementToRemove->prev;
+               prev->next = NULL;
+               free(listElementToRemove);
+               return LAST;
+       } else if (listElementToRemove->prev == NULL && listElementToRemove->next != NULL) {
+               next = listElementToRemove->next;
+               next->prev = NULL;
+               free(listElementToRemove);
+               return FIRST;
+       } else if (listElementToRemove->prev == NULL && listElementToRemove->next == NULL) {
+               free(listElementToRemove);
+               return THE_LAST_ONE;
+       }
+       return NONE;
+}
+
+/*
+ * To find last element of the list put as a parameter any element of this list
+ */
+struct ListElement * findLastElement(struct ListElement* listElement) {
+       struct ListElement *lastListElement = listElement;
+       while (lastListElement->next != NULL) {
+               lastListElement = lastListElement->next;
+       }
+       return lastListElement;
+}
+
+/*
+ * To find first element of the list put as a parameter any element of this list
+ */
+struct ListElement * findFirstElement(struct ListElement* listElement) {
+       LOGD("findFirstElement");
+       struct ListElement *firsListElement = listElement;
+       while (firsListElement->prev != NULL) {
+               firsListElement = firsListElement->prev;
+       }
+       return firsListElement;
+}
+
+/*
+ * After this is done you have to call initList(...) to use the list again;
+ */
+void deleteList(struct ListElement* listElement) {
+       LOGD("deleteList");
+       if(listElement == NULL)
+               return;
+       listElement = findFirstElement(listElement);
+       struct ListElement *current, *tmp;
+       current = listElement;
+       int count = 0;
+       while (current != NULL) {
+               tmp = current->next;
+               free(current);
+               current = tmp;
+               count++;
+       }
+       LOGD("Removed %d elements", count);
+}
+// ------------------------------------------------
+
+void back_cb(void *data, Evas_Object *obj, void *event_info) {
+       LOGD("back_cb");
+       struct ug_data *ad = (struct ug_data *) data;
+
+       // TODO: Cleanup lists after screen is closed - this code cause some issues
+       /*
+       if(ad->data_to_clear){
+               LOGD("Deleting listElement...");
+               deleteList(ad->data_to_clear);
+               ad->data_to_clear = NULL;
+               LOGD("OK");
+       }
+       */
+       //free_path(ad);
+
+       ad->list_to_refresh = NULL;
+       ad->list_element_to_refresh = NULL;
+}
+
+Eina_Bool make_list(struct ug_data *ad, Evas_Object *list, char *dir_path, struct ListElement *lastListElement, enum TypeOfCert type) {
+
+       Eina_Bool no_content_bool = EINA_TRUE;
+
+       /* ---------------------------------------------------
+        * Checking for files (certificates) in PATH
+        */
+       DIR *dir;
+       struct dirent *dp;
+
+       dir = opendir(dir_path);
+       if (dir == NULL) {
+               LOGE("There's no such directory: %s", dir_path);
+               return no_content_bool;
+       }
+
+       if(type != TO_INSTALL && type != TO_UNINSTALL){
+               LOGD("Setting params to refresh");
+               set_refresh_params(ad, list, lastListElement, dir_path);
+       }
+
+       LOGD("Scanning dir (%s) - looking for certs", dir_path);
+       while ((dp = readdir(dir)) != NULL) {
+               char *tmp;
+               tmp = path_cat(dir_path, dp->d_name);
+               if (strncmp(dp->d_name, "..", 2) != 0 && strncmp(dp->d_name, ".", 1) != 0) {
+
+                       if (!(dp->d_type == DT_DIR)) {
+
+                               char *title = NULL;
+                               title = extractDataFromCert(tmp);
+                               if (!title) {
+                                       free(tmp);
+                                       tmp = NULL;
+                                       LOGD("Extract data returned NULL pointer");
+                                       continue;
+                               } else {
+                                       LOGD("title = %s", title);
+                                       no_content_bool = EINA_FALSE;
+
+                                       Elm_Object_Item * it;
+                                       struct ListElement *current;
+                                       if(type == TO_INSTALL || type == TO_UNINSTALL){
+                                               current = addListElementWithTitle(lastListElement, dp->d_name, title);
+                                       }
+                                       else{
+                                               current = addListElementWithTitle(lastListElement, tmp, title);
+                                       }
+                                       lastListElement = current;
+
+                                       switch (type) {
+
+                                       case TO_INSTALL:
+                                               it = elm_list_item_append(list, title, NULL, NULL, install_cb, current);
+                                               break;
+
+                                       case TO_UNINSTALL: // in this case item isn't append to the list, because "uninstall" use-case uses more complex genlist
+                                               break;
+
+                                       default:
+                                               it = elm_list_item_append(list, title, NULL, NULL, cert_selection_cb, strdup(tmp));
+                                               break;
+                                       }
+                                       LOGD("elm list append = %s", current->name);
+                                       if (title) {
+                                               free(title);
+                                               title = NULL;
+                                       }
+                               }
+                       }
+
+                       if (tmp) {
+                               free(tmp);
+                               tmp = NULL;
+                       }
+               }
+       }
+       closedir(dir);
+
+       return no_content_bool;
+}
+
+void cert_selection_cb(void *data, Evas_Object *obj, void *event_info) {
+
+       LOGD("cert_selection_cb ----------------------------------------");
+       char *path = (char *) data;
+       LOGD("cert_path = %s", path);
+
+       Elm_Object_Item *it = (Elm_Object_Item *) elm_list_selected_item_get(obj);
+       if (it == NULL)
+               return;
+
+       struct ug_data *ad = get_ug_data();
+       ad->data = (void *) strdup(path);
+       LOGD("ad->data  = %s", ad->data);
+
+       elm_list_item_selected_set(it, EINA_FALSE);
+
+       get_info_cert_cb(ad, NULL, NULL);
+}
+
+int set_path(struct ug_data *ad, char const *path){
+       LOGD("uninstall path = %s", path);
+       if (ad->uninstall_path)
+               free(ad->uninstall_path);
+       ad->uninstall_path = (char *) malloc(sizeof(char) * (strlen(path) + 1));
+       strcpy(ad->uninstall_path, path);
+       LOGD("uninstall path = %s", ad->uninstall_path);
+       return 0;
+}
+
+void free_path(struct ug_data *ad){
+       if (ad->uninstall_path)
+               free(ad->uninstall_path);
+       ad->uninstall_path = NULL;
+}
+
+void set_refresh_params(struct ug_data *ad, Evas_Object *list, struct ListElement *lastListElement, char dir[MAX_PATH_LENGHT]){
+       LOGD("set_refresh_params");
+       ad->list_to_refresh = (void *) list;
+       ad->list_element_to_refresh = lastListElement;
+       strcpy(ad->dir_to_refresh, dir);
+}
+
+void refresh_list(struct ug_data *ad) { //TODO: Implement refresh list after uninstall
+
+       LOGD("refresh_list");
+       Evas_Object *list = ad->list_to_refresh;
+       struct ListElement *lastListElement = ad->list_element_to_refresh;
+
+       if(list == NULL || lastListElement == NULL){
+               LOGD("Nothing to refresh");
+               if(!list)
+                       LOGD("list is NULL");
+               if(!lastListElement)
+                       LOGD("lastListElement is NULL");
+               return;
+       }
+
+       char dir_path[MAX_PATH_LENGHT];
+       strcpy(dir_path, ad->dir_to_refresh);
+       LOGD("dir path to refresh: %s", ad->dir_to_refresh);
+
+       elm_list_clear(list);
+       deleteList(lastListElement);
+
+       lastListElement = initList();
+       ad->list_element_to_refresh = lastListElement;
+
+       make_list(ad, list, dir_path, lastListElement, TRUSTED_ROOT);
+       LOGD("List refreshed");
+}
diff --git a/view/src/certificates/certificates_menu.c b/view/src/certificates/certificates_menu.c
new file mode 100644 (file)
index 0000000..79e3fcb
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static void _quit_cb(void *data, Evas_Object* obj, void* event_info) {
+       //---------------------------
+       struct ug_data *ad = (struct ug_data*) data;
+
+       /* bg must delete before starting on_destroy */
+       evas_object_del(ad->bg);
+       ad->bg = NULL;
+       ug_destroy_me(ad->ug);
+       //---------------------------
+}
+
+void certificates_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct ug_data *ad = (struct ug_data*)data;
+
+       Evas_Object *list = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *back = NULL;
+
+       layout = elm_layout_add(ad->win_main);
+       if (!layout)
+               return;
+
+       list = elm_list_add(layout);
+       elm_list_mode_set(list, ELM_LIST_COMPRESS);
+
+       evas_object_smart_callback_add(list, "selected", list_clicked_cb, NULL);
+
+       elm_list_item_append(list, dgettext(PACKAGE, "TRUSTED_ROOT_CERTIFICATE"), NULL, NULL, trusted_root_cert_cb, ad);
+       elm_list_item_append(list, dgettext(PACKAGE, "USER_CERTIFICATE"), NULL, NULL, user_cert_cb, ad);
+       elm_list_item_append(list, dgettext(PACKAGE, "PFX_CERTIFICATES"), NULL, NULL, pfx_cert_cb, ad);
+
+       elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "CERTIFICATE_MENU_TITLE"), NULL, NULL, list, NULL);
+
+       Elm_Object_Item *navi_it = NULL;
+       navi_it = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "CERTIFICATE_MENU_TITLE"), NULL, NULL, list, NULL);
+
+       back = elm_object_item_part_content_get(navi_it, "prev_btn");
+       evas_object_smart_callback_add(back, "clicked", _quit_cb, ad);
+}
diff --git a/view/src/certificates/detail_info_cert.c b/view/src/certificates/detail_info_cert.c
new file mode 100644 (file)
index 0000000..032d48d
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static char* format_key (char *key);
+static void _back_cb(void *data, Evas_Object* obj, void* event_info);
+
+static char *Cert_Data_Field[12];
+static char *Cert_Data[12];
+
+/*
+ * This function fill Cert_Data_Field with proper text.
+ * These texts are labels to certificate details
+ */
+static void fillCertDataField() {
+       int i = 0;
+       while (i < 12) {
+               switch (i) {
+               case 0:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "COMMON_NAME");
+                       break;
+
+               case 1:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "ORGANIZATION");
+                       break;
+
+               case 2:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "COMMON_NAME");
+                       break;
+
+               case 3:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "ORGANIZATION");
+                       break;
+
+               case 4:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "VERSION");
+                       break;
+
+               case 5:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "VALID_FROM");
+                       break;
+
+               case 6:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "VALID_TO");
+                       break;
+
+               case 7:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "SERIAL_NUMBER");
+                       break;
+
+               case 8:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "SIGNATURE_ALGORITHM");
+                       break;
+
+               case 9:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "KEY_USAGE");
+                       break;
+
+               case 10:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "CA");
+                       break;
+
+               case 11:
+                       Cert_Data_Field[i] = dgettext(PACKAGE, "PUBLIC_KEY");
+                       break;
+               }
+               i++;
+       }
+}
+
+static char *getInfoFromCert(CertSvcCertificate cert, CertSvcCertificateField field, char **buffer){
+
+    CertSvcString certSvcString_buffer;
+
+    certsvc_certificate_get_string_field(cert, field, &certSvcString_buffer);
+    *buffer = strndup(certSvcString_buffer.privateHandler, certSvcString_buffer.privateLength);
+    certsvc_string_free(certSvcString_buffer);
+    LOGD("Cert string field: %s", *buffer);
+
+    return *buffer;
+}
+
+static int fillCertData(char *path_to_cert) {
+       LOGD("fillCertData");
+
+       char *empty = dgettext(PACKAGE, "NO_DATA");
+       time_t time;
+       int status;
+
+       CertSvcInstance instance;
+       if (certsvc_instance_new(&instance) == CERTSVC_FAIL) {
+               LOGD("CERTSVC_FAIL");
+               return -1;
+       }
+       CertSvcCertificate cert;
+       CertSvcString buffer;
+       char *char_buffer;
+
+       certsvc_certificate_new_from_file(instance, path_to_cert, &cert);
+
+       //---- SUBJECT COMMON_NAME ----
+       if(! getInfoFromCert(cert, CERTSVC_SUBJECT_COMMON_NAME, &Cert_Data[0])){
+           certsvc_certificate_free(cert);
+           return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_SUBJECT_ORGANIZATION_NAME, &Cert_Data[1])) {
+        certsvc_certificate_free(cert);
+        return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_ISSUER_COMMON_NAME, &Cert_Data[2])) {
+        certsvc_certificate_free(cert);
+        return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_ISSUER_ORGANIZATION_NAME, &Cert_Data[3])) {
+        certsvc_certificate_free(cert);
+        return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_VERSION, &Cert_Data[4])) {
+        certsvc_certificate_free(cert);
+        return -1;
+    }
+
+    //---- VALID_FROM ----
+    certsvc_certificate_get_not_before(cert, &time);
+    Cert_Data[5] = strndup(ctime(&time), strlen(ctime(&time)) - 1);
+    if (!Cert_Data[5]) {
+        certsvc_certificate_free(cert);
+        return -1;
+    }
+    LOGD("Valid from: %s", ctime(&time));
+
+    //---- VALID_TO ----
+    certsvc_certificate_get_not_after(cert, &time);
+    Cert_Data[6] = strndup(ctime(&time), strlen(ctime(&time)) - 1);
+    if (!Cert_Data[6]) {
+       certsvc_certificate_free(cert);
+       return -1;
+    }
+    LOGD("Valid to: %s", Cert_Data[6]);
+
+    if (!getInfoFromCert(cert, CERTSVC_SERIAL_NUMBER, &Cert_Data[7])) {
+        return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_SIGNATURE_ALGORITHM, &Cert_Data[8])) {
+        return -1;
+    }
+    if (!getInfoFromCert(cert, CERTSVC_KEY_USAGE, &Cert_Data[9])) {
+        return -1;
+    }
+
+    //---- CA ----
+    certsvc_certificate_is_root_ca(cert, &status);
+    if (status == CERTSVC_TRUE) {
+        Cert_Data[10] = strdup(dgettext(PACKAGE, "CA_TRUE"));
+        if (!Cert_Data[10]) {
+            certsvc_certificate_free(cert);
+            return -1;
+        }
+    } else if (status == CERTSVC_FALSE) {
+        Cert_Data[10] = strdup(dgettext(PACKAGE, "CA_FALSE"));
+        if (!Cert_Data[10]) {
+            certsvc_certificate_free(cert);
+            return -1;
+        }
+    } else {
+        Cert_Data[10] = strdup(empty);
+        if (!Cert_Data[10]) {
+            certsvc_certificate_free(cert);
+            return -1;
+        }
+    }
+
+    //---- PUBLIC_KEY ----
+    certsvc_certificate_get_string_field(cert, CERTSVC_KEY, &buffer);
+    char_buffer = strndup(buffer.privateHandler, buffer.privateLength);
+    LOGD("char_buffer : %s", char_buffer);
+    Cert_Data[11] = format_key(char_buffer);
+
+    certsvc_string_free(buffer);
+    free(char_buffer);
+    certsvc_certificate_free(cert);
+
+    if (!Cert_Data[11]) {
+        return -1;
+    }
+    LOGD("Public Key: %s", Cert_Data[11]);
+
+    return 0;
+}
+
+static void clearCertData() {
+       int i = 0;
+       while (i < 12) {
+               if (Cert_Data[i] != NULL)
+                       free(Cert_Data[i]);
+               i++;
+       }
+}
+
+static char* format_key (char *key){
+
+       LOGD("format_key");
+       int i = 0;
+       int j = 0;
+       int len = strlen(key);
+       char *result;
+       char *formated_key = malloc(sizeof(char) * len);
+       while (i<len-1){
+               if(key[i] == ':' && key[i+1]=='\n'){
+                       formated_key[j] = key[i];
+                       i += 2;
+                       j += 1;
+               }
+               else if(key[i] == ' ' && key[i+1]==' '){
+                       i += 2;
+               }
+               else{
+                       LOGD("copy char - %c - next (%c)", key[i], key[i+1]);
+                       formated_key[j] = key[i];
+                       i++;
+                       j++;
+               }
+               if(key[i] == 'E' || key[i] == 'M'){
+                       LOGD("-----------------------print <br>");
+                       formated_key[j] = '<';
+                       j++;
+                       formated_key[j] = 'b';
+                       j++;
+                       formated_key[j] = 'r';
+                       j++;
+                       formated_key[j] = '>';
+                       j++;
+               }
+       }
+       if(i<len && key[i]!= '\n'){
+               formated_key[j] = key[i];
+               i++;
+               j++;
+       }
+       result = strndup(formated_key, j);
+       free(formated_key);
+       return result;
+}
+
+static char* _gl_get_text(void *data, Evas_Object *obj, const char *part) {
+
+       int index = (int) data;
+       LOGD("_gl_label_get ( %d )", index);
+       if (index > 11 || index < 0) {
+               LOGD("Wrong *index - return NULL");
+               return NULL;
+       }
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
+               LOGD("%s", Cert_Data[index]);
+               return strdup(Cert_Data_Field[index]);
+
+       } else if (!strcmp(part, "elm.text.2")) {
+               LOGD("%s", Cert_Data_Field[index]);
+               return strdup(Cert_Data[index]);
+       }
+       LOGD("return NULL");
+       return NULL;
+}
+
+static char* _gl_get_text_multiline(void *data, Evas_Object *obj, const char *part) {
+
+       int index = (int) data;
+       LOGD("_gl_get_text_multiline ( %d )", index);
+       if (index > 11 || index < 0) {
+               LOGD("Wrong *index - return NULL");
+               return NULL;
+       }
+       LOGD("%s", Cert_Data[index]);
+       return strdup(Cert_Data[index]);
+}
+
+static char* _gl_get_text_group(void *data, Evas_Object *obj, const char *part) {
+
+       int index = (int) data;
+       LOGD("_gl_get_text_gropu ( %d )", index);
+       if(index == 0){
+               LOGD("OWNER");
+               return strdup(dgettext(PACKAGE, "CERT_OWNER"));
+       }
+       if(index == 1){
+               LOGD("ISSUER");
+               return strdup(dgettext(PACKAGE, "CERT_ISSUER"));
+       }
+       if(index == 2){
+               LOGD("DATA");
+               return strdup(dgettext(PACKAGE, "CERT_DATA"));
+       }
+
+       else
+               LOGD("Wrong *index - return NULL");
+
+       return NULL;
+}
+
+static Elm_Genlist_Item_Class itc_group = {
+               .item_style = "grouptitle",
+               .func.text_get = _gl_get_text_group
+};
+
+static Elm_Genlist_Item_Class itc_2text = {
+               .item_style = "2text.2",
+               .func.text_get = _gl_get_text
+};
+
+static Elm_Genlist_Item_Class itc_1text_multiline = {
+               .item_style = "multiline/1text",
+        .func.text_get = _gl_get_text_multiline,
+        .func.content_get = NULL,
+        .func.state_get = NULL,
+        .func.del = NULL
+};
+
+void get_info_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+       LOGD("get_info_cert_cb");
+       struct ug_data *ad = (struct ug_data *) data;
+       Evas_Object *genlist = NULL;
+       Evas_Object *back = NULL;
+
+       fillCertDataField();
+
+       if (ad->data == NULL)
+               return;
+       char *cert_path = (char *) ad->data;
+       LOGD("cert_path = %s", cert_path);
+       LOGD("ad->data  = %s", ad->data);
+
+       genlist = elm_genlist_add(ad->win_main);
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       evas_object_smart_callback_add(genlist, "selected", genlist_clicked_cb, NULL);
+
+       LOGD("filling cert data...");
+       if (fillCertData(cert_path)) {
+               LOGD("Error in fillCertData( %s )", cert_path);
+               LOGD("EXIT");
+               return;
+       }
+
+       Elm_Object_Item * it;
+       int i = 0;
+       while (i < 12) {
+               if(i==0) // Adding label "Owner"
+                       elm_genlist_item_append(genlist, &itc_group, (void *) 0, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               if(i==2) // Adding label "Issuer"
+                       elm_genlist_item_append(genlist, &itc_group, (void *) 1, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               if(i==4) // Adding label "Certificate data"
+                       elm_genlist_item_append(genlist, &itc_group, (void *) 2, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+               LOGD("Try to append %d genlist item...", i);
+
+               if(i == 11){
+                       it = elm_genlist_item_append(genlist, &itc_1text_multiline, (void*) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               }
+               else{
+                       it = elm_genlist_item_append(genlist, &itc_2text, (void*) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               }
+               LOGD("Succesful append %d genlist", i);
+               i += 1;
+       }
+
+       LOGD("Push genlist");
+       Elm_Object_Item *navi_it = NULL;
+       navi_it = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "CERTIFICATE_DETAILS"), NULL, NULL, genlist,
+                       NULL);
+
+       LOGD("Setup callback for back button");
+       back = elm_object_item_part_content_get(navi_it, "prev_btn");
+       evas_object_smart_callback_add(back, "clicked", _back_cb, ad);
+}
+
+static void _back_cb(void *data, Evas_Object* obj, void* event_info) {
+
+       clearCertData();
+}
diff --git a/view/src/certificates/pfx_cert/pfx_cert.c b/view/src/certificates/pfx_cert/pfx_cert.c
new file mode 100644 (file)
index 0000000..0d772f9
--- /dev/null
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        pfx_cert.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ * @brief
+ */
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+#include <cert-svc/cpkcs12.h>
+#include <cert-svc/cstring.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+#include <dirent.h>
+
+static CertSvcStringList stringList;
+
+static char *_gl_text_get(void *data, Evas_Object *obj, const char *part);
+
+static Elm_Genlist_Item_Class itc_2text = { .item_style = "2text.2", .func.text_get = _gl_text_get };
+
+static char *_gl_text_get(void *data, Evas_Object *obj, const char *part) {
+
+    int index = (int) data;
+
+    CertSvcString buffer;
+    if (certsvc_string_list_get_one(stringList, index, &buffer) != CERTSVC_SUCCESS) {
+        return strdup("ERROR WHILE LOADING STRING");
+    }
+    const char *char_buffer;
+    certsvc_string_to_cstring(buffer, &char_buffer, NULL);
+
+    if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
+        return strdup(char_buffer);
+    } else if (!strcmp(part, "elm.text.2")) {
+        return strdup("example@address.net");
+//        TODO: get real email addresses when
+//        certsvc_pkcs12_email_dup function will be ready
+    }
+    certsvc_string_free(buffer);
+    return NULL;
+}
+
+static void _certsvc_free_instance(void *data, Evas_Object *obj, void *event_info) {
+    LOGD("_certsvc_free_instance");
+    struct ug_data *ad = (struct ug_data *) data;
+    certsvc_instance_free(ad->instance);
+}
+
+void pfx_cert_create_list(struct ug_data *ad){
+
+    certsvc_pkcs12_get_id_list(ad->instance, &stringList);
+
+    elm_genlist_clear(ad->genlist_pfx);
+
+    int i;
+    int list_length;
+    certsvc_string_list_get_length(stringList, &list_length);
+    for (i = 0; i < list_length; i++) {
+        elm_genlist_item_append(ad->genlist_pfx, &itc_2text, (void*) i, NULL, ELM_GENLIST_ITEM_NONE, genlist_clicked_cb, NULL);
+    }
+}
+
+void pfx_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+    LOGD("pfx_cert_cb");
+
+    struct ug_data *ad = (struct ug_data *) data;
+
+    if (certsvc_instance_new(&(ad->instance)) == CERTSVC_FAIL) {
+        LOGD("CERTSVC_FAIL");
+        return;
+    }
+
+    Evas_Object *toolbar = elm_toolbar_add(ad->win_main);
+    if (!toolbar)
+        return;
+    elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+    elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "INSTALL"), pfx_cert_install_cb, ad);
+    elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "UNINSTALL"), pfx_cert_remove_cb, ad);
+
+    ad->genlist_pfx = elm_genlist_add(ad->win_main);
+
+    pfx_cert_create_list(ad); // creating genlist
+
+    Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "PFX_CERTIFICATE"), NULL, NULL,
+            ad->genlist_pfx, NULL);
+    elm_object_item_part_content_set(itm, "controlbar", toolbar);
+
+    Evas_Object *back = NULL;
+    back = elm_object_item_part_content_get(itm, "prev_btn");
+    evas_object_smart_callback_add(back, "clicked", _certsvc_free_instance, ad);
+}
diff --git a/view/src/certificates/pfx_cert/pfx_cert_install.c b/view/src/certificates/pfx_cert/pfx_cert_install.c
new file mode 100644 (file)
index 0000000..ea913f7
--- /dev/null
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        pfx_cert_install.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ * @brief
+ */
+#define _GNU_SOURCE
+
+#include <dirent.h>
+
+#include <cert-svc/cpkcs12.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static const char * const dir_path = PATH_SDCARD;
+
+static void install_pfx_button_cb(void *data, Evas_Object *obj, void *event_info);
+
+static struct ListElement *firstListElement = NULL;
+static struct ListElement *lastListElement = NULL;
+
+void pfx_cert_install_cb(void *data, Evas_Object *obj, void *event_info) {
+    LOGD("pfx_cert_cb");
+
+    struct ug_data *ad = (struct ug_data *) data;
+    Evas_Object *list = NULL;
+
+    DIR *dir;
+    struct dirent *dp;
+
+    firstListElement = initList();
+    lastListElement = firstListElement;
+
+    list = elm_list_add(ad->win_main);
+    elm_list_mode_set(list, ELM_LIST_COMPRESS);
+
+
+
+    dir = opendir(dir_path);
+    if (dir == NULL) {
+        LOGE("There's no such directory: %s", dir_path);
+        return; //TODO What if there's no SD card?
+    }
+
+    LOGD("Scanning dir (%s) - looking for certs", dir_path);
+    while ((dp = readdir(dir)) != NULL) {
+        char *tmp;
+        tmp = path_cat(dir_path, dp->d_name);
+        char *dot = strrchr(dp->d_name, '.');
+
+        if(dot != NULL && strlen(dot)>3 && (strncmp(dot, ".pfx", 4) == 0 || strncmp(dot, ".PFX", 4) == 0 ||
+                             strncmp(dot, ".p12", 4) == 0 || strncmp(dot, ".P12", 4) == 0)) {
+            if (!(dp->d_type == DT_DIR)) {
+                Elm_Object_Item * it;
+                struct ListElement *current;
+                current = addListElement(lastListElement, dp->d_name);
+                lastListElement = current;
+                it = elm_list_item_append(list, dp->d_name, NULL, NULL, install_pfx_button_cb, current);
+                LOGD("elm list append = %s", current->name);
+            }
+            if (tmp) {
+                free(tmp);
+                tmp = NULL;
+            }
+        }
+    }
+    closedir(dir);
+
+    elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "CHOOSE_PFX_TO_INSTALL"), NULL, NULL, list, NULL);
+}
+
+static void install_pfx_button_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    struct ListElement *current = (struct ListElement *) data;
+    struct ug_data *ad = get_ug_data();
+    Elm_Object_Item *it = (Elm_Object_Item *) elm_list_selected_item_get(obj);
+    if (it){
+        elm_list_item_selected_set(it, EINA_FALSE);
+    }
+
+    char *path;
+    CertSvcString certSvcString_path;
+    int result;
+    result = asprintf(&path, "%s/%s", dir_path, current->name);
+    if(result == -1){
+        LOGD("aspfintf failed (-1)");
+        return;
+    }
+    certsvc_string_new(ad->instance, path, strlen(path), &certSvcString_path);
+
+    int returned_value;
+    if(certsvc_pkcs12_has_password(ad->instance, certSvcString_path, &returned_value)
+            != CERTSVC_SUCCESS){
+        LOGD("Wrong PKCS12 or PFX file.");
+        elm_naviframe_item_pop(ad->navi_bar);
+        return;
+    }
+
+    switch (returned_value){
+    case CERTSVC_TRUE:
+        LOGD("%s is passwod protected", current->name);
+        put_pkcs12_name_and_pass_cb(current, NULL, NULL);
+        return;
+
+    case CERTSVC_FALSE:
+        LOGD("%s is NOT passwod protected", current->name);
+        put_pkcs12_name_cb(current, NULL, NULL);
+        return;
+    }
+}
diff --git a/view/src/certificates/pfx_cert/pfx_cert_remove.c b/view/src/certificates/pfx_cert/pfx_cert_remove.c
new file mode 100644 (file)
index 0000000..189fba5
--- /dev/null
@@ -0,0 +1,212 @@
+/**
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        pfx_cert_remove.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ * @brief
+ */
+
+#include <cert-svc/ccert.h>
+#include <cert-svc/cinstance.h>
+#include <cert-svc/ccrl.h>
+#include <cert-svc/cocsp.h>
+#include <cert-svc/cpkcs12.h>
+#include <cert-svc/cstring.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+#include <dirent.h>
+
+static CertSvcStringList stringList;
+static Eina_Bool *state_pointer; //check states
+static int list_length = 0;
+
+static void _select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info){
+
+    int i = 0;
+    Eina_List * realized_list;
+    Elm_Object_Item *it;
+    Eina_List *l;
+    Eina_Bool checked;
+    checked = elm_check_state_get(obj);
+    for (i = 1; i <= list_length; i++) {
+        state_pointer[i] = checked;
+    }
+    // Update realized items only
+    realized_list = elm_genlist_realized_items_get(data);
+    EINA_LIST_FOREACH(realized_list, l, it){
+        elm_genlist_item_update(it);
+    }
+}
+
+static void _gl_sel(void *data, Evas_Object *obj, void *event_info){
+
+    int index;
+    Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+    if (item != NULL) {
+        index = (int) elm_object_item_data_get(item);
+        elm_genlist_item_selected_set(item, EINA_FALSE);
+        state_pointer[index] = !state_pointer[index];
+        elm_genlist_item_update(item);
+        if ((state_pointer[index] == EINA_FALSE) && (state_pointer[0] == EINA_TRUE)) {
+            state_pointer[0] = EINA_FALSE;
+        }
+    }
+}
+
+static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part) {
+
+    return EINA_FALSE;
+}
+
+static void _gl_del(void *data, Evas_Object *obj) {
+
+    return;
+}
+
+static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part) {
+    int index = (int) data;
+    Evas_Object *check;
+
+    if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
+        check = elm_check_add(obj);
+        //set the State pointer to keep the current UI state of Checkbox.
+        elm_check_state_pointer_set(check, &(state_pointer[index]));
+
+        evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+        //Select All Checkbox, Callback handler
+        if (0 == index) {
+            evas_object_smart_callback_add(check, "changed", _select_all_check_changed_cb, obj);
+        }
+        return check;
+    }
+
+    return NULL;
+}
+
+static char* _gl_get_text_sa(void *data, Evas_Object *obj, const char *part) {
+
+    return strdup(dgettext(PACKAGE, "SELECT_ALL"));
+}
+
+static char *_gl_text_get(void *data, Evas_Object *obj, const char *part) {
+
+    int index = (int) data;
+
+    CertSvcString buffer;
+    if (certsvc_string_list_get_one(stringList, index-1, &buffer) != CERTSVC_SUCCESS) {
+        return strdup("ERROR WHILE LOADING STRING");
+    }
+    const char *char_buffer;
+    certsvc_string_to_cstring(buffer, &char_buffer, NULL);
+
+    if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
+        return strdup(char_buffer);
+    } else if (!strcmp(part, "elm.text.2")) {
+        return strdup("example@address.net");
+    }
+
+    return NULL;
+}
+
+static Elm_Genlist_Item_Class itc_sa = {
+        .item_style = "1text.1icon",
+        .func.text_get = _gl_get_text_sa,
+        .func.content_get = _gl_content_get,
+        .func.state_get = NULL,
+        .func.del = NULL
+};
+
+static Elm_Genlist_Item_Class itc_2text = {
+        .item_style = "2text.1icon.3",
+        .func.text_get = _gl_text_get,
+        .func.content_get = _gl_content_get,
+        .func.state_get = _gl_state_get,
+        .func.del = _gl_del
+};
+
+static void genlist_pfx_delete_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("genlist_pfx_remove_cb");
+    (void)obj;
+    (void)event_info;
+
+    struct ug_data *ad = (struct ug_data *) data;
+    CertSvcString buffer;
+
+    int i;
+    if (EINA_TRUE == state_pointer[0]) {
+        for (i = 0; i < list_length; i++) {
+            if (certsvc_string_list_get_one(stringList, i, &buffer) == CERTSVC_SUCCESS) {
+                certsvc_pkcs12_delete(ad->instance, buffer);
+                LOGD("%s --- removed", buffer);
+            }
+            certsvc_string_free(buffer);
+        }
+    } else {;
+        for (i = 0; i < list_length; i++) {
+            if (EINA_TRUE == state_pointer[i+1] &&
+                    certsvc_string_list_get_one(stringList, i, &buffer) == CERTSVC_SUCCESS) {
+                certsvc_pkcs12_delete(ad->instance, buffer);
+                LOGD("%s --- removed", buffer);
+                certsvc_string_free(buffer);
+            }
+        }
+    }
+    pfx_cert_create_list(ad);
+    elm_naviframe_item_pop(ad->navi_bar);
+}
+
+void pfx_cert_remove_cb(void *data, Evas_Object *obj, void *event_info) {
+    LOGD("pfx_cert_remove_cb");
+
+    struct ug_data *ad = (struct ug_data *) data;
+    Evas_Object *genlist = NULL;
+    Evas_Object *toolbar = NULL;
+    Elm_Object_Item *git = NULL;
+
+
+    certsvc_pkcs12_get_id_list(ad->instance, &stringList);
+
+    toolbar = elm_toolbar_add(ad->navi_bar);
+    if (!toolbar)
+        return;
+    elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+    elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "UNINSTALL"), genlist_pfx_delete_cb, ad);
+
+    genlist = elm_genlist_add(ad->navi_bar);
+
+    git = elm_genlist_item_append(genlist, &itc_sa, (void *) 0, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+    elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+    int i;
+    certsvc_string_list_get_length(stringList, &list_length);
+    state_pointer = malloc((list_length+1) * sizeof(Eina_Bool));
+    state_pointer[0] = EINA_FALSE;
+    for (i = 1; i < list_length + 1; i++) {
+        state_pointer[i] = EINA_FALSE;
+        elm_genlist_item_append( genlist, &itc_2text, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, _gl_sel, NULL);
+
+    }
+    Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "PFX_CERTIFICATE"), NULL, NULL,
+            genlist, NULL);
+    elm_object_item_part_content_set(itm, "controlbar", toolbar);
+}
diff --git a/view/src/certificates/put_password_certificate.c b/view/src/certificates/put_password_certificate.c
new file mode 100644 (file)
index 0000000..35dc4c4
--- /dev/null
@@ -0,0 +1,341 @@
+/**
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/*
+ * @file        put_password_certificate.c
+ * @author      Janusz Kozerski (j.kozerski@samsung.com)
+ * @version     1.0
+ * @brief
+ */
+#define _GNU_SOURCE
+
+#include <cert-svc/cpkcs12.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static const char * const dir_path = PATH_SDCARD;
+
+static Elm_Genlist_Item_Class itc_btn;
+static Elm_Genlist_Item_Class itc_entry;
+static Elm_Genlist_Item_Class itc_entry_passwd;
+static struct ListElement *current_file;
+
+static void _install_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void _cancell_button_cb(void *data, Evas_Object *obj, void *event_info);
+
+struct Evas_Object_Menu_Entry {
+    char *label;
+    char *content;
+    Evas_Object *eo;
+    Evas_Smart_Cb callback;
+};
+
+static Elm_Object_Item *passwd_entry, *name_entry;
+
+static void _content_changed_cb(void *data, Evas_Object *_obj, void *event_info)
+{
+    LOGD("_content_changed_cb");
+    struct Evas_Object_Menu_Entry *mdata = (struct Evas_Object_Menu_Entry*)data;
+    LOGD("content get = %s", elm_entry_entry_get(mdata->eo));
+    strncpy(mdata->content, elm_entry_entry_get(mdata->eo), MAX_PATH_LENGHT);
+    LOGD("_content_changed_cb --- finished");
+}
+
+static Evas_Object *_gl_button_get(void *data, Evas_Object *obj, const char *part)
+{
+    struct Evas_Object_Menu_Entry *mdata = (struct Evas_Object_Menu_Entry*)data;
+
+    mdata->eo = elm_button_add(obj);
+    elm_object_text_set(mdata->eo, mdata->label);
+    evas_object_smart_callback_add(mdata->eo, "clicked", mdata->callback, obj);
+
+    return mdata->eo;
+}
+
+static Evas_Object *_gl_entry_get(void *data, Evas_Object *obj, const char *part)
+{
+    struct Evas_Object_Menu_Entry *mdata = (struct Evas_Object_Menu_Entry*)data;
+
+    mdata->eo = elm_entry_add(obj);
+    elm_object_text_set(mdata->eo, mdata->content);
+    elm_entry_single_line_set(mdata->eo, EINA_TRUE);
+    evas_object_smart_callback_add(mdata->eo, "changed",_content_changed_cb, mdata);
+    return mdata->eo;
+}
+
+static Evas_Object *_gl_entry_get_passwd(void *data, Evas_Object *obj, const char *part)
+{
+    struct Evas_Object_Menu_Entry *mdata = (struct Evas_Object_Menu_Entry*)data;
+
+    mdata->eo = elm_entry_add(obj);
+    elm_object_text_set(mdata->eo, mdata->content);
+    elm_entry_single_line_set(mdata->eo, EINA_TRUE);
+    elm_entry_password_set(mdata->eo, EINA_TRUE);
+    elm_entry_input_panel_return_key_type_set(mdata->eo, ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT);
+    elm_entry_line_wrap_set(mdata->eo, ELM_WRAP_NONE);
+    evas_object_smart_callback_add(mdata->eo, "changed",_content_changed_cb, mdata);
+    return mdata->eo;
+}
+
+static char *_gl_label_eo_get(void *data, Evas_Object *obj, const char *part)
+{
+    struct Evas_Object_Menu_Entry *dd = (struct Evas_Object_Menu_Entry*)data;
+
+    if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
+        return strdup(dd->label);
+    }
+    return NULL;
+}
+
+static void _gl_del_eo(void *data, Evas_Object *_obj)
+{
+    struct Evas_Object_Menu_Entry *dd = (struct Evas_Object_Menu_Entry*)data;
+
+    if (dd->content) {
+        free(dd->content);
+        dd->content = NULL;
+    }
+}
+
+static void _set_itc_classes(void)
+{
+    itc_btn.item_style = "dialogue/1icon";
+    itc_btn.func.content_get = _gl_button_get;
+
+    itc_entry.item_style = "dialogue/1text.1icon.5";
+    itc_entry.func.content_get = _gl_entry_get;
+    itc_entry.func.text_get = _gl_label_eo_get;
+    itc_entry.func.del = _gl_del_eo;
+
+    itc_entry_passwd.item_style = "dialogue/1text.1icon.5";
+    itc_entry_passwd.func.content_get = _gl_entry_get_passwd;
+    itc_entry_passwd.func.text_get = _gl_label_eo_get;
+    itc_entry_passwd.func.del = _gl_del_eo;
+}
+
+static struct Evas_Object_Menu_Entry ENTRIES[] = {
+        { .callback = _content_changed_cb },
+        { .callback = _content_changed_cb }
+};
+
+static struct Evas_Object_Menu_Entry BUTTON_INSTALL = {
+        .callback = _install_button_cb
+};
+
+static struct Evas_Object_Menu_Entry BUTTON_CANCEL = {
+        .callback = _cancell_button_cb
+};
+
+
+static void _cancell_button_cb(void *data, Evas_Object *obj, void *event_info){
+
+    struct ug_data *ad = get_ug_data();
+
+    elm_naviframe_item_pop(ad->navi_bar);
+    elm_naviframe_item_pop(ad->navi_bar);
+}
+
+static void _install_button_cb(void *data, Evas_Object *obj, void *event_info){
+
+    LOGD("_install_button_cb");
+
+    struct ug_data *ad = get_ug_data();
+
+    char *alias, *password, *path;
+    CertSvcString Alias, Path, Password;
+    int returned_value;
+    int as_return;
+    int is_unique = CERTSVC_FALSE;
+    CertSvcString pkcs_alias;
+
+    password = ENTRIES[0].content;
+    if(strlen(password)==0)
+        password = NULL;
+    alias = ENTRIES[1].content;
+    as_return = asprintf(&path, "%s/%s", dir_path, current_file->name);
+    if(as_return == -1){
+        LOGD("asprintf failed (-1)");
+        return;
+    }
+
+    certsvc_string_new(ad->instance, alias, strlen(alias), &pkcs_alias);
+    certsvc_pkcs12_alias_exists(ad->instance, pkcs_alias, &is_unique);
+    if( CERTSVC_FALSE == is_unique || 1 > strlen(alias) ){
+        LOGD("alias %s already exist", alias);
+        char buf[BUF256];
+        strncpy(buf, dgettext(PACKAGE, "SUCH_ALIAS_ALREADY_EXIST"), BUF256);
+        create_ok_pop(ad, buf);
+        return;
+    }
+    LOGD("certsvc_pkcs12_import_from_file( %s, %s, %s)", path, password, alias);
+    certsvc_string_new(ad->instance, alias, strlen(alias), &Alias);
+    certsvc_string_new(ad->instance, path, strlen(path), &Path);
+    certsvc_string_new(ad->instance, (password) ? password : "", (password) ? strlen(password) : 0, &Password);
+    returned_value = certsvc_pkcs12_import_from_file(ad->instance, Path, Password, Alias);
+    LOGD("certsvc_pkcs12_import_from_file -- result:");
+
+    switch (returned_value){
+    case CERTSVC_SUCCESS:
+        LOGD("Certificate %s import success", current_file->name);
+        pfx_cert_create_list(ad);
+        elm_naviframe_item_pop(ad->navi_bar);
+        elm_naviframe_item_pop(ad->navi_bar);
+        return;
+
+    case CERTSVC_INVALID_PASSWORD:
+        LOGD("Invalid password to %s", current_file->name);
+        return;
+
+    case CERTSVC_IO_ERROR:
+        LOGD("There's no such file!");
+        elm_naviframe_item_pop(ad->navi_bar);
+        elm_naviframe_item_pop(ad->navi_bar);
+        return;
+
+    case CERTSVC_WRONG_ARGUMENT:
+        LOGD("Wrong PKCS12 or PFX file.");
+        elm_naviframe_item_pop(ad->navi_bar);
+        elm_naviframe_item_pop(ad->navi_bar);
+        return;
+
+    case CERTSVC_DUPLICATED_ALIAS:
+         LOGD("Failed. Such alias already exist.");
+         return;
+
+    case CERTSVC_FAIL:
+        LOGD("Failed. Wrong password probably.");
+        char buf[BUF256];
+        strncpy(buf, dgettext(PACKAGE, "WRONG_PASSWORD"), BUF256);
+        create_ok_pop(ad, buf);
+        return;
+
+    default:
+        LOGD("DEFAULT");
+        break;
+    }
+}
+
+void put_pkcs12_name_and_pass_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("put_pkcs12_name_and_pass_cb");
+    struct ug_data *ad = get_ug_data();
+    current_file = (struct ListElement *) data;
+
+    //allocate mem buffer for entries  - it will be free by genlist
+    ENTRIES[0].content = calloc(1, MAX_PATH_LENGHT);
+    ENTRIES[1].content = calloc(1, MAX_PATH_LENGHT);
+
+    ENTRIES[0].label = dgettext(PACKAGE, "ENTER_PASSWORD");
+    ENTRIES[1].label = dgettext(PACKAGE, "ENTER_KEY_ALIAS");
+
+    BUTTON_INSTALL.label = dgettext(PACKAGE, "INSTALL");
+    BUTTON_CANCEL.label  = dgettext(PACKAGE, "CANCEL");
+
+    _set_itc_classes();
+    Evas_Object *genlist = elm_genlist_add(ad->win_main);
+
+    passwd_entry = elm_genlist_item_append(
+                       genlist,
+                       &itc_entry_passwd,
+                       &ENTRIES[0],
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    name_entry = elm_genlist_item_append(
+                       genlist,
+                       &itc_entry,
+                       &ENTRIES[1],
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    elm_genlist_item_append(
+                       genlist,
+                       &itc_btn,
+                       &BUTTON_INSTALL,
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    elm_genlist_item_append(
+                       genlist,
+                       &itc_btn,
+                       &BUTTON_CANCEL,
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    Elm_Object_Item *navi_it = NULL;
+    navi_it = elm_naviframe_item_push(ad->navi_bar, "Install certificate", NULL, NULL, genlist, NULL);
+}
+
+
+void put_pkcs12_name_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("put_pkcs12_name_cb");
+
+    struct ug_data *ad = get_ug_data();
+    current_file = (struct ListElement *) data;
+
+    //allocate mem buffer for entries  - it will be free by genlist
+    ENTRIES[0].content = calloc(1, MAX_PATH_LENGHT);
+    ENTRIES[1].content = calloc(1, MAX_PATH_LENGHT);
+
+    ENTRIES[0].label = dgettext(PACKAGE, "ENTER_PASSWORD");
+    ENTRIES[1].label = dgettext(PACKAGE, "ENTER_KEY_ALIAS");
+
+    BUTTON_INSTALL.label = dgettext(PACKAGE, "INSTALL");
+    BUTTON_CANCEL.label  = dgettext(PACKAGE, "CANCEL");
+
+    _set_itc_classes();
+    Evas_Object *genlist = elm_genlist_add(ad->win_main);
+    Elm_Object_Item *name_entry;
+
+    name_entry = elm_genlist_item_append(
+                       genlist,
+                       &itc_entry,
+                       &ENTRIES[1],
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    elm_genlist_item_append(
+                       genlist,
+                       &itc_btn,
+                       &BUTTON_INSTALL,
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+        elm_genlist_item_append(
+                       genlist,
+                       &itc_btn,
+                       &BUTTON_CANCEL,
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       NULL,
+                       NULL );
+
+    Elm_Object_Item *navi_it = NULL;
+    navi_it = elm_naviframe_item_push(ad->navi_bar, "Install certificate", NULL, NULL, genlist, NULL);
+}
diff --git a/view/src/certificates/trusted_root_ca_cert/trusted_root_ca_cert.c b/view/src/certificates/trusted_root_ca_cert/trusted_root_ca_cert.c
new file mode 100644 (file)
index 0000000..f2fb93c
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+#include <dirent.h>
+
+//static char *dir_path = PATH_CERT_ROOT_PATH; // This path is the original certificates path
+static char *dir_path = PATH_CERT_WAC; // This can be used for tests
+
+void trusted_root_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+
+       LOGD("trusted root ---------------------");
+
+       struct ug_data *ad = (struct ug_data *) data;
+       Evas_Object *list = NULL;
+
+       struct ListElement *firstListElement = NULL;
+       struct ListElement *lastListElement = NULL;
+       firstListElement = initList();
+       lastListElement = firstListElement;
+
+       Evas_Object *toolbar = elm_toolbar_add(ad->navi_bar);
+       if (!toolbar)
+               return;
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "UNINSTALL"), delete_cert_cb, strdup(dir_path));
+
+       list = elm_list_add(ad->win_main);
+       elm_list_mode_set(list, ELM_LIST_COMPRESS);
+       evas_object_smart_callback_add(list, "selected", NULL, NULL);
+
+       if(make_list(ad, list, dir_path, lastListElement, TRUSTED_ROOT)){
+               Evas_Object *no_content = elm_layout_add(ad->win_main);
+               elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+               elm_object_part_text_set(no_content, "elm.text", dgettext(PACKAGE, "IDS_COM_BODY_NO_CONTENTS"));
+               evas_object_size_hint_weight_set(no_content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(no_content);
+
+               elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "TRUSTED_ROOT_CERTIFICATE"), NULL, NULL, no_content, NULL);
+       } else {
+
+               Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "TRUSTED_ROOT_CERTIFICATE"), NULL, NULL, list,
+                               NULL);
+               elm_object_item_part_content_set(itm, "controlbar", toolbar);
+
+               Evas_Object *back = NULL;
+               back = elm_object_item_part_content_get(itm, "prev_btn");
+               evas_object_smart_callback_add(back, "clicked", back_cb, ad);
+       }
+
+}
+
diff --git a/view/src/certificates/uninstall_certificate.c b/view/src/certificates/uninstall_certificate.c
new file mode 100644 (file)
index 0000000..cc90c11
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static char* __get_text_check(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__get_content_check(void *data, Evas_Object *eo, const char *part);
+static char* __get_text_select_all(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__get_content_select_all(void *data, Evas_Object *eo, const char *part);
+static void select_all_fn();
+static void deselect_all_fn();
+static void uninstall_cb(void *data, Evas_Object *obj, void *event_info);
+static void cancel_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *dir_path;
+
+static struct ListElement *firstListElement = NULL;
+static struct ListElement *lastListElement = NULL;
+
+static Elm_Genlist_Item_Class itc_check = { .item_style = "dialogue/1text.1icon", .func.content_get =
+        __get_content_check, .func.text_get = __get_text_check };
+
+static char* __get_text_check(void *data, Evas_Object *obj, const char *part) {
+    struct ListElement *current = (struct ListElement*) data;
+    LOGD("__get_text_check --- uninstall");
+    return strdup(current->title);
+}
+
+static Evas_Object *__get_content_check(void *data, Evas_Object *eo, const char *part) {
+    struct ListElement *current = (struct ListElement*) data;
+
+    Evas_Object *toggle = elm_check_add(eo);
+
+    elm_check_state_set(toggle, current->isChecked);
+    LOGD("toggle <---> %s.isChecked", current->name);
+
+    evas_object_pass_events_set(toggle, EINA_TRUE);
+
+    return toggle;
+}
+
+static void __toggle(void *data, Evas_Object *obj, void *event_info) {
+    struct ListElement *current = (struct ListElement*) data;
+    if (current->isChecked) {
+        current->isChecked = EINA_FALSE;
+        LOGD("isChecked should be changed to FASLE --- %s", current->name);
+    } else {
+        current->isChecked = EINA_TRUE;
+        LOGD("isChecked should be changed to TRUE --- %s", current->name);
+    }
+
+    elm_genlist_item_update(event_info);
+    elm_genlist_item_selected_set(event_info, EINA_FALSE);
+}
+
+//----------------------------------
+
+static Eina_Bool select_all = EINA_FALSE;
+
+static Elm_Genlist_Item_Class itc_select_all = { .item_style = "dialogue/1text.1icon", .func.content_get =
+        __get_content_select_all, .func.text_get = __get_text_select_all };
+
+static char* __get_text_select_all(void *data, Evas_Object *obj, const char *part) {
+    return strdup(dgettext(PACKAGE, "SELECT_ALL"));
+}
+
+static Evas_Object *__get_content_select_all(void *data, Evas_Object *eo, const char *part) {
+
+    Evas_Object *toggle = elm_check_add(eo);
+    elm_check_state_set(toggle, select_all);
+    evas_object_pass_events_set(toggle, EINA_TRUE);
+
+    return toggle;
+}
+
+static void __toggle_select_all(void *data, Evas_Object *obj, void *event_info) {
+
+    if (!select_all) {
+        select_all = EINA_TRUE;
+        select_all_fn();
+        LOGD("select_all should be changed to FASLE");
+    } else {
+        select_all = EINA_FALSE;
+        deselect_all_fn();
+        LOGD("select_all should be changed to TRUE");
+    }
+
+    elm_genlist_item_update(event_info);
+    elm_genlist_item_selected_set(event_info, EINA_FALSE);
+}
+
+static void select_all_fn() {
+    LOGD("select_all_fn");
+    struct ListElement* current = firstListElement->next;
+    while (current != NULL) {
+        current->isChecked = EINA_TRUE;
+        elm_genlist_item_update(current->it);
+        current = current->next;
+    }
+}
+
+static void deselect_all_fn() {
+    LOGD("deselect_all_fn");
+    struct ListElement* current = firstListElement->next;
+    while (current != NULL) {
+        current->isChecked = EINA_FALSE;
+        elm_genlist_item_update(current->it);
+        current = current->next;
+    }
+}
+
+//----------------------------------
+
+void delete_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("delete_cert_cb -------------------------");
+
+    struct ug_data *ad = get_ug_data();
+
+    Evas_Object *genlist = NULL;
+    Eina_Bool onlyOnce = EINA_TRUE;
+    firstListElement = initList();
+    lastListElement = firstListElement;
+
+    dir_path = (char *) data;
+
+    Evas_Object *toolbar = elm_toolbar_add(ad->win_main);
+    if (!toolbar)
+        return;
+    elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+    elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "UNINSTALL"), uninstall_cb, ad);
+    elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "CANCEL"), cancel_cb, ad);
+
+    genlist = elm_genlist_add(ad->win_main);
+
+    if (!make_list(ad, genlist, dir_path, lastListElement, TO_UNINSTALL)) {
+        struct ListElement *current = findFirstElement(firstListElement);
+        current = nextElement(current);
+        if (onlyOnce) {
+            onlyOnce = EINA_FALSE;
+            elm_genlist_item_append(genlist, &itc_select_all, NULL, NULL, ELM_GENLIST_ITEM_NONE, __toggle_select_all,
+                    NULL);
+            LOGD("Select All field added");
+        }
+        while (current) {
+            LOGD("current->title: %s", current->title);
+            Elm_Object_Item * it;
+            it = elm_genlist_item_append(genlist, &itc_check, current, NULL, ELM_GENLIST_ITEM_NONE, __toggle, current);
+            current->it = it;
+            LOGD("state pointer set to: %s", current->name);
+            current = nextElement(current);
+        }
+    }
+
+    Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "UNINSTALL"), NULL, NULL, genlist,
+            NULL);
+    elm_object_item_part_content_set(itm, "controlbar", toolbar);
+
+    Evas_Object *back = NULL;
+    back = elm_object_item_part_content_get(itm, "prev_btn");
+    evas_object_smart_callback_add(back, "clicked", NULL, NULL);
+
+}
+
+static void uninstall_cb(void *data, Evas_Object *obj, void *event_info) {
+
+    LOGD("uninstall_cb");
+
+    struct ug_data *ad = (struct ug_data *) data;
+
+    struct ListElement* current = firstListElement->next; // TODO: first list element is not passed by args!!!
+    Eina_Bool nothingToUninstall = EINA_TRUE;
+
+    struct ListElement* tmpListElement;
+
+    char buf[MAX_PATH_LENGHT];
+
+    while (current != NULL) {
+        if (current->isChecked) {
+            sprintf(buf, "%s/%s", dir_path, current->name);
+            LOGD("remove ( %s )", buf);
+            remove(buf);
+            LOGD("Uninstalled succesful -- %s!", current->name);
+            nothingToUninstall = EINA_FALSE;
+        }
+        tmpListElement = current;
+        current = current->next;
+        removeListElement(tmpListElement);
+    }
+    if (nothingToUninstall)
+        LOGD("Nothing to uninstall");
+
+    refresh_list(ad);
+
+    elm_naviframe_item_pop(ad->navi_bar);
+}
+
+static void cancel_cb(void *data, Evas_Object *obj, void *event_info) {
+    struct ug_data *ad = (struct ug_data *) data;
+
+    elm_naviframe_item_pop(ad->navi_bar);
+}
diff --git a/view/src/certificates/user_cert/install_certificate.c b/view/src/certificates/user_cert/install_certificate.c
new file mode 100644 (file)
index 0000000..5f90047
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+#define _GNU_SOURCE
+
+#include <stdlib.h>
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+static void copy(char *source, char *dest);
+
+static char *sd_dir_path = PATH_SDCARD;
+//static char *sd_dir_path = PATH_CERT_WAC; // This path can be use for testing instead PATH_SDCARD
+static char *user_dir_path = PATH_CERT_USER;
+
+static struct ug_data *ad;
+static struct ListElement *firstListElement;
+static struct ListElement *lastListElement;
+
+void user_search_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+
+       ad = (struct ug_data *) data;
+       Evas_Object *list = NULL;
+
+       firstListElement = initList();
+       lastListElement = firstListElement;
+
+       list = elm_list_add(ad->win_main);
+       elm_list_mode_set(list, ELM_LIST_COMPRESS);
+       evas_object_smart_callback_add(list, "selected", list_clicked_cb, NULL);
+
+       if(make_list(ad, list, sd_dir_path, lastListElement, TO_INSTALL)){
+               Evas_Object *no_content = elm_layout_add(ad->win_main);
+               elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+               elm_object_part_text_set(no_content, "elm.text", dgettext(PACKAGE, "IDS_COM_BODY_NO_CONTENTS"));
+               evas_object_size_hint_weight_set(no_content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(no_content);
+
+               elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "SEARCHED_CERTIFICATE"), NULL, NULL, no_content, NULL);
+       } else {
+               Elm_Object_Item *itm = NULL;
+               itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "SEARCHED_CERTIFICATE"), NULL, NULL, list, NULL);
+
+               Evas_Object *back = NULL;
+               back = elm_object_item_part_content_get(itm, "prev_btn");
+               evas_object_smart_callback_add(back, "clicked", back_cb, ad);
+       }
+
+}
+
+
+void install_cb(void *data, Evas_Object *obj, void *event_info) {
+       LOGD("install_cb");
+       struct ListElement *listElement = (struct ListElement *) data;
+       char *file_name = listElement->name;
+       LOGD("%s", file_name);
+       char buf_src[256];
+       char buf_dst[256];
+       sprintf(buf_src, "%s/%s", sd_dir_path, file_name);
+       sprintf(buf_dst, "%s/%s", user_dir_path, file_name);
+       LOGD("Start copying");
+       copy(buf_src, buf_dst);
+       LOGD("End copying");
+
+       deleteList(firstListElement);
+
+       refresh_list(ad);
+       elm_naviframe_item_pop(ad->navi_bar);
+}
+
+static void copy(char *source, char *dest) {
+       LOGD("copy()");
+       if (!source || !dest) {
+               LOGD("Null pointer to files");
+               return;
+       }
+       char *command;
+       int result;
+       result = asprintf(&command, "cp %s %s", source, dest);
+       if(command == NULL && result != -1){
+               LOGD("Error while allocating memory");
+               return; //Error while allocating memory
+       }
+
+       LOGD("%s", command);
+       result = system(command);
+       LOGD("%s --- return %d", command, result);
+
+       free(command);
+       LOGD("copy() - done");
+}
diff --git a/view/src/certificates/user_cert/user_cert.c b/view/src/certificates/user_cert/user_cert.c
new file mode 100644 (file)
index 0000000..a6962f0
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of the Manage Applications
+ * Written by Eunmi Son <eunmi.son@samsung.com>
+ *
+ * Author of this file:
+ * Janusz Kozerski <j.kozerski@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of
+ * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered
+ * into with SAMSUNG ELECTRONICS.
+ *
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not limited
+ * to the implied warranties of merchantability, fitness for a particular
+ * purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or
+ * distributing this software or its derivatives.
+ *
+ */
+
+#include "certificates/certificate_util.h"
+#include "certificates/certificates.h"
+
+#include <dirent.h>
+
+static char *dir_path = PATH_CERT_USER;
+
+static void install_button_cb(void *data, Evas_Object *obj, void *event_info);
+
+void user_cert_cb(void *data, Evas_Object *obj, void *event_info) {
+       LOGD("user_cert_cb");
+
+       struct ug_data *ad = (struct ug_data *) data;
+       Evas_Object *list = NULL;
+
+       struct ListElement *firstListElement = NULL;
+       struct ListElement *lastListElement = NULL;
+       firstListElement = initList();
+       lastListElement = firstListElement;
+
+       Evas_Object *toolbar = elm_toolbar_add(ad->win_main);
+       if (!toolbar)
+               return;
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "INSTALL"), install_button_cb, ad);
+       elm_toolbar_item_append(toolbar, NULL, dgettext(PACKAGE, "UNINSTALL"), delete_cert_cb, strdup(dir_path));
+
+       list = elm_list_add(ad->win_main);
+       elm_list_mode_set(list, ELM_LIST_COMPRESS);
+
+       if (make_list(ad, list, dir_path, lastListElement, USER)) {
+               Evas_Object *no_content = elm_layout_add(ad->win_main);
+               elm_layout_theme_set(no_content, "layout", "nocontents", "text");
+               elm_object_part_text_set(no_content, "elm.text", dgettext(PACKAGE, "IDS_COM_BODY_NO_CONTENTS"));
+               evas_object_size_hint_weight_set(no_content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(no_content);
+
+               Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "USER_CERTIFICATE"), NULL, NULL,
+                               no_content, NULL);
+               elm_object_item_part_content_set(itm, "controlbar", toolbar);
+       } else {
+
+               Elm_Object_Item *itm = elm_naviframe_item_push(ad->navi_bar, dgettext(PACKAGE, "USER_CERTIFICATE"), NULL, NULL,
+                               list, NULL);
+               elm_object_item_part_content_set(itm, "controlbar", toolbar);
+
+               Evas_Object *back = NULL;
+               back = elm_object_item_part_content_get(itm, "prev_btn");
+               evas_object_smart_callback_add(back, "clicked", back_cb, ad);
+       }
+}
+
+static void install_button_cb(void *data, Evas_Object *obj, void *event_info) {
+       struct ug_data *ad = (struct ug_data *) data;
+       char buf[BUF256];
+       strcpy(buf, dgettext(PACKAGE, "INSTALL_CERT_FROM_SD_QUESTION"));
+       create_yes_no_pop(ad, buf);
+}
+