PROJECT(OSQUERY)
INCLUDE(GNUInstallDirs)
+INCLUDE(CMake/Macro.cmake)
+
+IF(DEFINED GBS_BUILD)
+ INCLUDE(FindPkgConfig)
+ENDIF(DEFINED GBS_BUILD)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "RELEASE")
ENABLE_TESTING()
-INCLUDE(CMake/Macro.cmake)
-
# Make sure the generated paths exist
EXECUTE_PROCESS(COMMAND mkdir -p "${CMAKE_BINARY_DIR}/generated")
+CONFIGURE_FILE(packaging/device-policy-manager.manifest.in
+ device-policy-manager.manifest @ONLY)
+
ADD_SUBDIRECTORY(specs)
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(tools/sqlite3)
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_" />
+ </request>
+ <assign>
+ <filesystem path="@EVENT_CONFIGURE_DIR@" label="@SMACK_LABEL@" type="transmutable" />
+ </assign>
+</manifest>
BuildRequires: lz4-devel
BuildRequires: zstd-devel
BuildRequires: boost-devel
-BuildRequires: thrift
BuildRequires: readline-devel
BuildRequires: pkgconfig(libprocps)
BuildRequires: pkgconfig(libsystemd)
Requires: lz4
Requires: zstd
Requires: boost-regex boost-system boost-thread boost-filesystem
-Requires: thrift
Requires: libreadline
Requires: procps-ng
Requires: libsystemd
Requires: iptables
+%global user_name security_fw
+%global group_name security_fw
+%global smack_label System
+
+%global dpm_base %{TZ_SYS_DATA}/dpm
+%global dpm_event %{dpm_base}/event
+%global dpm_plugins %{_libdir}/dpm/plugins
+
+
%description
Osquery exposes an operating system as a high-performance relational database.
This allows you to write SQL-based queries to explore operating system data.
%build
%{!?build_type:%define build_type "RELEASE"}
+
+%if %{build_type} == "DEBUG" || %{build_type} == "PROFILING" || %{build_type} == "CCOV"
+ CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
+ CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
+%endif
+
%cmake . -DCMAKE_BUILD_TYPE=%{build_type} \
-DOSQUERY_BUILD_VERSION=%{version} \
-DGBS_BUILD="TRUE" \
- -DPLUGIN_INSTALL_DIR=%{_libdir}/dpm/plugins
+ -DVERSION=%{version} \
+ -DUSER_NAME=%{user_name} \
+ -DGROUP_NAME=%{group_name} \
+ -DSMACK_LABEL=%{smack_label} \
+ -DSCRIPT_INSTALL_DIR=%{_scriptdir} \
+ -DSYSTEMD_UNIT_INSTALL_DIR=%{_unitdir} \
+ -DDATA_INSTALL_DIR=%{dpm_base} \
+ -DEVENT_CONFIGURE_DIR=%{dpm_event} \
+ -DPLUGIN_INSTALL_DIR=%{dpm_plugins} \
+ -DDB_INSTALL_DIR=%{TZ_SYS_DB} \
+ -DRUN_INSTALL_DIR=%{TZ_SYS_RUN} \
+ -DAPP_INSTALL_PREFIX="%{TZ_SYS_RO_APP}" \
+ -DAPP_SHARE_PACKAGES_DIR="%{TZ_SYS_RO_PACKAGES}" \
+ -DPAMD_INSTALL_DIR=/etc/pam.d \
+ -DDBUS_CONFIGURE_DIR=/etc/dbus-1/system.d \
+ -DDBUS_SERVICE_DIR=/usr/share/dbus-1/system-services
make %{?jobs:-j%jobs}
%install
%make_install
+mkdir -p %{buildroot}%{dpm_event}
+mkdir -p %{buildroot}%{dpm_plugins}
+mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
+mkdir -p %{buildroot}/%{_unitdir}/sockets.target.wants
+ln -s ../src/policyd/device-policy-manager.service %{buildroot}/%{_unitdir}/multi-user.target.wants/device-policy-manager.service
+ln -s ../src/policyd/device-policy-manager.socket %{buildroot}/%{_unitdir}/sockets.target.wants/device-policy-manager.socket
+
+%find_lang dpm-syspopup
+
+%clean
+rm -rf %{buildroot}
## Test Package ##############################################################
%package test
%{_bindir}/osquery-test
%{_bindir}/apix-test
+
+## DPM Policyd ###############################################################
+%package policyd
+Summary: Tizen Device Policy Manager
+Group: Security/Other
+BuildRequires: gcc
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: pkgconfig(klay)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(bundle)
+BuildRequires: pkgconfig(pkgmgr)
+BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(deviced)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(vconf-internal-keys)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(cynara-client)
+BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(libtzplatform-config)
+BuildRequires: pkgconfig(security-privilege-manager)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-base-common)
+
+%description policyd
+The device-policy-manager package provides a daemon which is responsible for
+managing device policies.
+
+%files policyd
+%manifest device-policy-manager.manifest
+%defattr(644,root,root,755)
+%attr(700,root,root) %{_bindir}/dpm-admin-cli
+%attr(755,root,root) %{_bindir}/dpm-syspopup
+%attr(755,root,root) %{_bindir}/dpm-storage-builder
+%attr(755,root,root) %{_bindir}/device-policy-manager
+%attr(755,root,root) %{_bindir}/device-policy-syspopup
+%attr(755,root,root) %{_libdir}/libdpm-pil.so.%{version}
+%attr(-,%{user_name},%{group_name}) %{dpm_base}
+%attr(-,%{user_name},%{group_name}) %{dpm_event}
+%attr(-,%{user_name},%{group_name}) %{dpm_plugins}
+%{_libdir}/libdpm-pil.so.0
+%{_unitdir}/device-policy-manager.service
+%{_unitdir}/device-policy-manager.socket
+%{_unitdir}/sockets.target.wants/device-policy-manager.socket
+%{_unitdir}/multi-user.target.wants/device-policy-manager.service
+%{_unitdir}/device-policy-syspopup.service
+/etc/dbus-1/system.d/org.tizen.dpm.syspopup.conf
+/usr/share/dbus-1/system-services/org.tizen.dpm.syspopup.service
+
+## Devel Package ##############################################################
+%package policyd-devel
+Summary: Libraries and header files for device policy client development
+Group: Development/Libraries
+Requires: policyd = %{version}-%{release}
+BuildRequires: pkgconfig(bundle)
+BuildRequires: pkgconfig(pkgmgr)
+BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(syspopup-caller)
+
+%description policyd-devel
+The libdpm-pil-devel package includes the libraries and header files necessary for
+developing the device policy module.
+
+%files policyd-devel
+#%manifest device-policy-client.manifest
+%defattr(644,root,root,755)
+%{_libdir}/libdpm-pil.so
+%{_includedir}/dpm
+%{_includedir}/dpm/pil
+%{_libdir}/pkgconfig/dpm-pil.pc
+
+## DPM Syspopup Package ######################################################
+%package -n org.tizen.dpm-syspopup
+Summary: Tizen DPM system popup Interface
+Group: Security/Other
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-ui-efl-util)
+BuildRequires: pkgconfig(capi-system-info)
+%description -n org.tizen.dpm-syspopup
+Tizen DPM system popup interface package
+
+%files -n org.tizen.dpm-syspopup -f dpm-syspopup.lang
+%defattr(-,root,root,-)
+%manifest src/policyd/tools/syspopup/org.tizen.dpm-syspopup.manifest
+%{TZ_SYS_RO_APP}/org.tizen.dpm-syspopup/bin/*
+%{TZ_SYS_RO_PACKAGES}/org.tizen.dpm-syspopup.xml
+/usr/share/icons/default/small/org.tizen.dpm-syspopup.png
+%{TZ_SYS_RO_APP}/org.tizen.dpm-syspopup/res/images/*
+
+## Test Package ###############################################################
+%package policyd-test
+Summary: Tizen DPM internal test
+Group: Security/Development
+Requires: policyd = %{version}-%{release}
+BuildRequires: pkgconfig(klay)
+
+%description policyd-test
+Testcases for device policy manager
+
+%files policyd-test
+%{_bindir}/dpm-test
+
## DPM Plugins - ############################################################
-%package plugins
+%package policyd-plugins
Summary: DPM plugins
Group: Security/Other
## Common
BuildRequires: pkgconfig(buxton2)
BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(klay)
-BuildRequires: pkgconfig(dpm-pil)
+#BuildRequires: pkgconfig(dpm-pil)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(capi-base-common)
BuildRequires: pkgconfig(capi-network-wifi-manager)
BuildRequires: pkgconfig(capi-network-connection)
-%description plugins
+%description policyd-plugins
Provides plugins for device policy manager
-%files plugins
+%files policyd-plugins
%manifest packaging/%{name}-plugins.manifest
%{_libdir}/dpm/plugins/bluetooth
-%{_libdir}/dpm/plugins/usb
-%{_libdir}/dpm/plugins/wifi
+#%{_libdir}/dpm/plugins/usb
+#%{_libdir}/dpm/plugins/wifi
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack")
ADD_SUBDIRECTORY(bluetooth)
-ADD_SUBDIRECTORY(usb)
-ADD_SUBDIRECTORY(wifi)
+#ADD_SUBDIRECTORY(usb)
+#ADD_SUBDIRECTORY(wifi)
SET(PLUGIN_SOURCES "bluetooth.cpp")
SET(DEPENDENCY klay
- dpm-pil
+ aul
bluetooth-api
capi-network-bluetooth)
#include <bluetooth-api.h>
#include <bluetooth_internal.h>
-#include <dpm/pil/policy-context.h>
-#include <dpm/pil/policy-model.h>
-#include <dpm/pil/policy-storage.h>
-#include <dpm/pil/policy-event.h>
+#include <policyd/pil/policy-context.h>
+#include <policyd/pil/policy-model.h>
+#include <policyd/pil/policy-storage.h>
+#include <policyd/pil/policy-event.h>
#include "../dlog.h"
SET(PLUGIN_SOURCES "usb.cpp")
-SET(DEPENDENCY klay
- dpm-pil)
+SET(DEPENDENCY klay)
PKG_CHECK_MODULES(PLUGIN_DEPS REQUIRED ${DEPENDENCY})
* limitations under the License
*/
-#include <dpm/pil/policy-context.h>
-#include <dpm/pil/policy-model.h>
-#include <dpm/pil/policy-storage.h>
-#include <dpm/pil/policy-event.h>
-#include <dpm/pil/app-bundle.h>
-#include <dpm/pil/launchpad.h>
+#include <policyd/pil/policy-context.h>
+#include <policyd/pil/policy-model.h>
+#include <policyd/pil/policy-storage.h>
+#include <policyd/pil/policy-event.h>
+#include <policyd/pil/app-bundle.h>
+#include <policyd/pil/launchpad.h>
#include <klay/auth/user.h>
#include <klay/dbus/variant.h>
SET(PLUGIN_SOURCES "wifi.cpp")
SET(DEPENDENCY klay
- dpm-pil
capi-network-wifi-manager
capi-network-connection)
-
- SET(GBS_ONLY_PACKAGES klay
- dpm-pil
- capi-base-common
- capi-system-info
- capi-network-wifi-manager)
-
PKG_CHECK_MODULES(PLUGIN_DEPS REQUIRED ${DEPENDENCY})
INCLUDE_DIRECTORIES(SYSTEM ${PLUGIN_DEPS_INCLUDE_DIRS})
#include <klay/dbus/connection.h>
-#include <dpm/pil/policy-context.h>
-#include <dpm/pil/policy-model.h>
-#include <dpm/pil/policy-storage.h>
-#include <dpm/pil/policy-event.h>
+#include <policyd/pil/policy-context.h>
+#include <policyd/pil/policy-model.h>
+#include <policyd/pil/policy-storage.h>
+#include <policyd/pil/policy-event.h>
#include "../dlog.h"
LIST(APPEND TABLE_FILES ${TABLE_FILES_UTILITY})
IF(DEFINED GBS_BUILD)
- FILE(GLOB TABLE_FILES_TIZEN "${CMAKE_SOURCE_DIR}/specs/tizen/*.table")
- LIST(APPEND TABLE_FILES ${TABLE_FILES_TIZEN})
+# FILE(GLOB TABLE_FILES_TIZEN "${CMAKE_SOURCE_DIR}/specs/tizen/*.table")
+# LIST(APPEND TABLE_FILES ${TABLE_FILES_TIZEN})
ENDIF(DEFINED GBS_BUILD)
FILE(GLOB TABLE_FILES_TEMPLATES "${CMAKE_SOURCE_DIR}/tools/codegen/templates/*.in")
ADD_SUBDIRECTORY(osquery)
ADD_SUBDIRECTORY(apix)
-# Rapidjson v1.0.0
+IF(DEFINED GBS_BUILD)
+ ADD_SUBDIRECTORY(policyd)
+ENDIF(DEFINED GBS_BUILD)
# See the License for the specific language governing permissions and
# limitations under the License
-ADD_APIX_LIBRARY(notification notification.cpp)
+ADD_APIX_LIBRARY(apix_notification notification.cpp)
FILE(GLOB NOTIFICATION_TESTS "tests/*.cpp")
ADD_APIX_TEST(${NOTIFICATION_TESTS})
IF(DEFINED GBS_BUILD)
SET(GBS_ONLY_PACKAGES klay
- dpm-pil
vconf)
- INCLUDE(FindPkgConfig)
PKG_CHECK_MODULES(GBS_DEPS REQUIRED ${GBS_ONLY_PACKAGES})
INCLUDE_DIRECTORIES(SYSTEM ${GBS_DEPS_INCLUDE_DIRS})
ADD_OSQUERY_TEST(${OSQUERY_CROSS_TABLES_TESTS})
IF(DEFINED GBS_BUILD)
- FILE(GLOB OSQUERY_TIZEN_TABLES "tizen/*.cpp")
- ADD_OSQUERY_LIBRARY(osquery_tizen_tables ${OSQUERY_TIZEN_TABLES})
+# FILE(GLOB OSQUERY_TIZEN_TABLES "tizen/*.cpp")
+# ADD_OSQUERY_LIBRARY(osquery_tizen_tables ${OSQUERY_TIZEN_TABLES})
- FILE(GLOB OSQUERY_TIZEN_TESTS "tizen/tests/*.cpp")
- ADD_OSQUERY_TEST(${OSQUERY_TIZEN_TESTS})
+# FILE(GLOB OSQUERY_TIZEN_TESTS "tizen/tests/*.cpp")
+# ADD_OSQUERY_TEST(${OSQUERY_TIZEN_TESTS})
ENDIF(DEFINED GBS_BUILD)
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+ADD_DEFINITIONS(-DUG_WAYLAND)
+
+INCLUDE_DIRECTORIES(SYSTEM .)
+
+ADD_SUBDIRECTORY(conf)
+
+ADD_SUBDIRECTORY(client)
+ADD_SUBDIRECTORY(pil)
+ADD_SUBDIRECTORY(server)
+ADD_SUBDIRECTORY(ui)
+
+ADD_SUBDIRECTORY(tests)
+ADD_SUBDIRECTORY(tools)
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+SET(CAPIS device-policy-manager.h
+ administration.h)
+
+INSTALL(FILES ${CAPIS} DESTINATION ${INCLUDE_INSTALL_DIR}/dpm)
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __CAPI_ADMINISTRATION_POLICY_H__
+#define __CAPI_ADMINISTRATION_POLICY_H__
+
+#include <sys/types.h>
+
+#include <dpm/device-policy-manager.h>
+
+/**
+ * @file administration.h
+ * @brief This file provides APIs to register/deregister the device admin client
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup CAPI_DPM_ADMINISTRATION_POLICY_MODULE
+ * @{
+ */
+
+/**
+ * @brief Registers device policy admin client.
+ * @details This API is used to register the device policy admin client to
+ * the device policy manager. The device policy admin client must be
+ * registered to use the device administration APIs.
+ * @since_tizen 3.0
+ * @param[in] handle The device policy manager handle
+ * @param[in] name The name of the device policy admin package
+ * @param[in] uid The uid of the device policy admin package
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_TIMEOUT Time out
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid package name
+ * @retval #DPM_ERROR_PERMISSION_DENIED The application does not have
+ * the privilege to call this API
+ * @pre handle must be created by dpm_context_create()
+ * @see dpm_context_acquire_admin_policy()
+ * @see dpm_context_release_admin_policy()
+ * @see dpm_admin_deregister_client()
+ */
+int dpm_admin_register_client(device_policy_manager_h handle, const char* name, uid_t uid);
+
+/**
+ * @brief Deregisters the device policy admin client.
+ * @details This API is used to deregister the Device Policy Client from
+ * the device policy manager.
+ * @since_tizen 3.0
+ * @param[in] handle The device policy manager handle
+ * @param[in] name The name of the device policy admin package
+ * @param[in] uid The uid of the device policy admin package
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_TIMEOUT Time out
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid package name
+ * @retval #DPM_ERROR_PERMISSION_DENIED The application does not have
+ * the privilege to call this API
+ * @pre handle must be created by dpm_context_create()
+ * @see dpm_context_acquire_admin_policy()
+ * @see dpm_context_release_admin_policy()
+ * @see dpm_admin_register_client()
+ */
+int dpm_admin_deregister_client(device_policy_manager_h handle, const char* name, uid_t uid);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //__CAPI_ADMINISTRATION_POLICY_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DEVICE_POLICY_MANAGER_H__
+#define __DEVICE_POLICY_MANAGER_H__
+
+#include <tizen.h>
+#include <tizen_type.h>
+
+/**
+ * @file device-policy-manager.h
+ * @brief This file defines common data types required to device policy APIs.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup CAPI_DPM_MANAGER_MODULE
+ * @{
+ */
+
+/**
+ * @brief Called when a policy is changed.
+ * @since_tizen 3.0
+ * @param[in] name The name of the policy
+ * @param[in] state The current state of the policy
+ * @param[in] user_data The user data passed from dpm_manager_add_policy_changed_cb
+ * @see dpm_manager_add_policy_changed_cb()
+ * @see dpm_manager_remove_policy_changed_cb()
+ */
+typedef void (*dpm_policy_changed_cb)(const char* name, const char* state, void *user_data);
+
+/**
+ * @brief The device policy manager handle
+ * @details The device policy manager handle is an abstraction of the
+ * logical connection between the device policy manager and
+ * it's client. The device policy manager handle must be
+ * created by using dpm_manager_create() before attempting to
+ * use almost any of the device policy APIs, and it should
+ * be freed when interaction with the device policy manager
+ * is no longer required.
+ * To release the handle, use dpm_manager_destroy().
+ * @since_tizen 3.0
+ * @see dpm_manager_create()
+ * @see dpm_manager_destroy()
+ */
+typedef void* device_policy_manager_h;
+
+/**
+ * @brief Enumeration of device policy API errors
+ * @since_tizen 3.0
+ */
+typedef enum {
+ DPM_ERROR_NONE = TIZEN_ERROR_NONE, /**< The operation was successful */
+ DPM_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+ DPM_ERROR_CONNECTION_REFUSED = TIZEN_ERROR_CONNECTION_REFUSED, /**< Connection refused */
+ DPM_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Time out */
+ DPM_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Access privilege is not sufficient */
+ DPM_ERROR_NOT_PERMITTED = TIZEN_ERROR_NOT_PERMITTED, /**< Operation not permitted */
+ DPM_ERROR_FILE_EXISTS = TIZEN_ERROR_FILE_EXISTS, /**< File exists */
+ DPM_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
+ DPM_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA /**< No Data */
+} dpm_error_type_e;
+
+/**
+ * @brief Creates the device policy manager handle.
+ * @details This API creates device policy manager handle required to
+ * the device policy APIs.
+ * This API is also used to verify whether caller is authorized
+ * or not.
+ * @since_tizen 3.0
+ * @return Device policy manager handle on success, otherwise NULL
+ * @remarks The specific error code can be obtained by using the
+ * get_last_result() method. Error codes are described in
+ * exception section.
+ * The returned handle should be released using dpm_manager_destroy().
+ * @exception #DPM_ERROR_NONE No error
+ * @exception #DPM_ERROR_CONNECTION_REFUSED Connection refused
+ * @exception #DPM_ERROR_OUT_OF_MEMORY Out of memory
+ * @see dpm_manager_destroy()
+ * @see get_last_result()
+ */
+device_policy_manager_h dpm_manager_create(void);
+
+/**
+ * @brief Releases the device policy manager handle.
+ * @details This API must be called if interaction with the device
+ * policy manager is no longer required.
+ * @since_tizen 3.0
+ * @param[in] handle Device policy manager handle
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid parameter
+ * @pre The handle must be created by dpm_manager_create().
+ * @see dpm_manager_create()
+ */
+int dpm_manager_destroy(device_policy_manager_h handle);
+
+/**
+ * @brief Adds policy change callback to the device policy
+ * manager.
+ * @details This API can be used to subscribe policy change callback.
+ * The callback specified to this API is asynchronously called when
+ * policy is changed on runtime.
+ * @since_tizen 3.0
+ * @param[in] handle Device policy manager handle
+ * @param[in] name Policy name to subscribe(see @ref CAPI_SECURITY_DPM_MODULE_POLICY)
+ * @param[in] callback The callback when policy is changed
+ * @param[in] user_data User specified data passed to the callback
+ * @param[out] id Policy change callback identifier
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DPM_ERROR_TIMED_OUT Time out
+ * @remark See @ref CAPI_SECURITY_DPM_MODULE_POLICY section for available policy name
+ * @pre The handle must be created by dpm_manager_create().
+ * @see dpm_manager_create()
+ * @see dpm_remove_policy_changed_cb()
+ */
+int dpm_add_policy_changed_cb(device_policy_manager_h handle,
+ const char* name,
+ dpm_policy_changed_cb callback,
+ void* user_data,
+ int* id);
+/**
+ * @brief Removes policy change callback from the device policy
+ * manager.
+ * @details This API should be called if policy change subscription is no longer
+ * required.
+ * @since_tizen 3.0
+ * @param[in] handle Device policy manager handle
+ * @param[in] id Policy change callback identifier
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DPM_ERROR_TIMED_OUT Time out
+ * @pre The handle must be created by dpm_manager_create().
+ * @pre The callback identifier must be created by dpm_manager_add_policy_changed_cb().
+ * @see dpm_manager_create()
+ * @see dpm_add_policy_changed_cb()
+ */
+int dpm_remove_policy_changed_cb(device_policy_manager_h handle, int id);
+/**
+ * @brief Called when a zone raises a signal.
+ * @since_tizen 3.0
+ * @param[in] name The zone name
+ * @param[in] object The object name triggered the signal
+ * @param[in] user_data The user data passed from dpm_zone_add_signal_cb
+ * @see dpm_zone_add_signal_cb()
+ * @see dpm_zone_remove_signal_cb()
+ */
+typedef void(*dpm_signal_cb)(const char* name, const char* object, void *user_data);
+
+/**
+ * @brief Adds signal callback.
+ * @details This API can be used to receive signals raised by the device policy manager.
+ * The callback specified to this function is automatically called when
+ * the device policy manager raises signal.
+ * @since_tizen 3.0
+ * @param[in] handle Device policy manager handle
+ * @param[in] signal The signal name to receive(see @ref CAPI_DPM_SECURITY_MODULE_SIGNAL)
+ * @param[in] callback The signal callback
+ * @param[in] user_data The user data passed to the callback function
+ * @param[out] id Signal identifier
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DPM_ERROR_TIMED_OUT Time out
+ * @remark See @ref CAPI_DPM_SECURITY_MODULE_SIGNAL section for signals
+ * @pre The handle must be created by dpm_manager_create().
+ * @see dpm_manager_create()
+ * @see dpm_manager_destroy()
+ * @see dpm_remove_signal_cb()
+ */
+int dpm_add_signal_cb(device_policy_manager_h handle, const char* signal,
+ dpm_signal_cb callback, void* user_data, int* id);
+
+/**
+ * @brief Removes signal callback.
+ * @details This API removes signal callback.
+ * @since_tizen 3.0
+ * @param[in] handle Device policy manager handle
+ * @param[in] id Signal identifier
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DPM_ERROR_TIMED_OUT Time out
+ * @pre The context must be created by dpm_manager_create().
+ * @see dpm_manager_create()
+ * @see dpm_manager_destroy()
+ * @see dpm_add_signal_cb()
+ */
+int dpm_remove_signal_cb(device_policy_manager_h handle, int id);
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup CAPI_DPM_ADMINISTRATION_POLICY_MODULE
+ * @{
+ */
+
+/**
+ * @brief Registers device policy admin client.
+ * @details This API is used to register the device policy admin client to
+ * the device policy manager. The device policy admin client must be
+ * registered to use the device administration APIs.
+ * @since_tizen 3.0
+ * @param[in] handle The device policy manager handle
+ * @param[in] name The name of the device policy admin package
+ * @param[in] uid The uid of the device policy admin package
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_TIMEOUT Time out
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid package name
+ * @retval #DPM_ERROR_PERMISSION_DENIED The application does not have
+ * the privilege to call this API
+ * @pre handle must be created by dpm_context_create()
+ * @see dpm_manager_create()
+ * @see dpm_manager_destroy()
+ * @see dpm_admin_deregister_client()
+ */
+int dpm_admin_register_client(device_policy_manager_h handle, const char* name, uid_t uid);
+
+/**
+ * @brief Deregisters the device policy admin client.
+ * @details This API is used to deregister the Device Policy Client from
+ * the device policy manager.
+ * @since_tizen 3.0
+ * @param[in] handle The device policy manager handle
+ * @param[in] name The name of the device policy admin package
+ * @param[in] uid The uid of the device policy admin package
+ * @return #DPM_ERROR_NONE on success, otherwise a negative value
+ * @retval #DPM_ERROR_NONE Successful
+ * @retval #DPM_ERROR_TIMEOUT Time out
+ * @retval #DPM_ERROR_INVALID_PARAMETER Invalid package name
+ * @retval #DPM_ERROR_PERMISSION_DENIED The application does not have
+ * the privilege to call this API
+ * @pre handle must be created by dpm_context_create()
+ * @see dpm_manager_create()
+ * @see dpm_manager_destroy()
+ * @see dpm_admin_register_client()
+ */
+int dpm_admin_deregister_client(device_policy_manager_h handle, const char* name, uid_t uid);
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DEVICE_POLICY_MANAGER_H__ */
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+CONFIGURE_FILE(systemd/device-policy-manager.service.in device-policy-manager.service)
+CONFIGURE_FILE(systemd/device-policy-syspopup.service.in device-policy-syspopup.service)
+INSTALL(FILES device-policy-manager.service DESTINATION ${SYSTEMD_UNIT_INSTALL_DIR})
+INSTALL(FILES device-policy-syspopup.service DESTINATION ${SYSTEMD_UNIT_INSTALL_DIR})
+INSTALL(FILES systemd/device-policy-manager.socket DESTINATION ${SYSTEMD_UNIT_INSTALL_DIR})
+
+INSTALL(FILES dbus/org.tizen.dpm.syspopup.conf DESTINATION ${DBUS_CONFIGURE_DIR})
+INSTALL(FILES dbus/org.tizen.dpm.syspopup.service DESTINATION ${DBUS_SERVICE_DIR})
+
+CONFIGURE_FILE(pkgconfig/dpm-pil.pc.in dpm-pil.pc @ONLY)
+INSTALL(FILES dpm-pil.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
--- /dev/null
+<busconfig>
+ <policy group="users">
+ <allow own="org.tizen.DevicePolicyManager"/>
+ <allow send_destination="org.tizen.DevicePolicyManager"/>
+ </policy>
+ <policy user="security_fw">
+ <allow own="org.tizen.DevicePolicyManager"/>
+ <allow send_destination="org.tizen.DevicePolicyManager"/>
+ </policy>
+ <policy user="root">
+ <allow send_destination="org.tizen.DevicePolicyManager"/>
+ </policy>
+ <policy context="default">
+ <deny own="org.tizen.DevicePolicyManager"/>
+ <deny send_destination="org.tizen.DevicePolicyManager"/>
+ <check send_destination="org.tizen.DevicePolicyManager" send_interface="org.tizen.DevicePolicyManager.Syspopup" privilege="http://tizen.org/privilege/internal/default/platform"/>
+ </policy>
+</busconfig>
--- /dev/null
+[D-BUS Service]
+Name=org.tizen.DevicePolicyManager
+Exec=/bin/false
+SystemdService=device-policy-syspopup.service
--- /dev/null
+# Package Information for pkg-config
+
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDE_INSTALL_DIR@
+
+Name: dpm platform interface
+Description: Platform Interface Library for Device Policy Plugin
+Requires : dlog glib-2.0 sqlite3 libtzplatform-config aul pkgmgr pkgmgr-info
+Version: @VERSION@
+Libs: -L${libdir} -ldpm-pil
+Cflags: -I${includedir}/dpm/pil
+
--- /dev/null
+[Unit]
+Description=Device Policy Manager
+Wants=pulseaudio.service
+After=pulseaudio.service
+
+[Service]
+User=${USER_NAME}
+Group=${GROUP_NAME}
+SmackProcessLabel=${SMACK_LABEL}
+ExecStartPre=${CMAKE_INSTALL_PREFIX}/bin/dpm-storage-builder
+ExecStart=${CMAKE_INSTALL_PREFIX}/bin/device-policy-manager -o 5000
+Restart=on-failure
+ExecReload=/bin/kill -HUP $MAINPID
+CapabilityBoundingSet=~CAP_MAC_ADMIN
+CapabilityBoundingSet=~CAP_MAC_OVERRIDE
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+[Socket]
+ListenStream=/tmp/.device-policy-manager.sock
+SocketUser=security_fw
+SocketGroup=security_fw
+SocketMode=0777
+SmackLabelIPIn=*
+SmackLabelIPOut=@
+
+[Install]
+WantedBy=sockets.target
+
--- /dev/null
+[Unit]
+Description=Device Policy Manager Syspopup
+
+[Service]
+Type=dbus
+BusName=org.tizen.DevicePolicyManager
+User=${USER_NAME}
+Group=${GROUP_NAME}
+SmackProcessLabel=${SMACK_LABEL}
+ExecStart=${CMAKE_INSTALL_PREFIX}/bin/device-policy-syspopup
+Restart=on-failure
+ExecReload=/bin/kill -HUP $MAINPID
+CapabilityBoundingSet=~CAP_MAC_ADMIN
+CapabilityBoundingSet=~CAP_MAC_OVERRIDE
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+SET(PIL_TARGET "dpm-pil")
+
+SET(LIB_VERSION "${VERSION}")
+SET(LIB_SOVERSION "0")
+
+SET(PIL app-bundle.cpp
+ launchpad.cpp
+ logger.cpp
+ packman.cpp
+ policy-event.cpp
+ policy-client.cpp
+ policy-admin.cpp
+ policy-storage.cpp)
+
+SET(PAPIS app-bundle.h
+ launchpad.h
+ logger.h
+ packman.h
+ policy-event.h
+ policy-context.h
+ policy-admin.h
+ policy-client.h
+ policy-model.h
+ policy-storage.h
+ status.h
+ observer.h)
+
+SET(PIL_DEPENDENCY klay
+ glib-2.0
+ gio-2.0
+ sqlite3
+ bundle
+ aul
+ appsvc
+ pkgmgr
+ pkgmgr-info
+ syspopup-caller
+ deviced
+ libtzplatform-config
+ security-privilege-manager
+ capi-system-info
+ capi-base-common
+ capi-system-system-settings
+ cynara-client
+ notification
+ cynara-session)
+
+PKG_CHECK_MODULES(PIL_DEPS REQUIRED ${PIL_DEPENDENCY})
+
+INCLUDE_DIRECTORIES(SYSTEM "${PIL_DEPS_INCLUDE_DIRS}")
+
+SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack")
+
+ADD_LIBRARY(${PIL_TARGET} SHARED ${PIL})
+
+SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES COMPILE_FLAGS "-fvisibility=default")
+SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES SOVERSION ${LIB_SOVERSION})
+SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES VERSION ${LIB_VERSION})
+
+TARGET_COMPILE_DEFINITIONS(${PIL_TARGET} PRIVATE
+ EVENT_CONFIGURE_DIR="${EVENT_CONFIGURE_DIR}"
+)
+
+TARGET_LINK_LIBRARIES(${PIL_TARGET} ${PIL_DEPS_LIBRARIES} pthread sqlite3)
+INSTALL(FILES ${PAPIS} DESTINATION ${INCLUDE_INSTALL_DIR}/dpm/pil)
+INSTALL(TARGETS ${PIL_TARGET} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <memory>
+
+#include <klay/exception.h>
+
+#include "app-bundle.h"
+
+Bundle::Bundle() :
+ handle(nullptr)
+{
+ handle = ::bundle_create();
+ if (handle == nullptr) {
+ throw runtime::Exception("Failed to create bundle");
+ }
+}
+
+Bundle::~Bundle()
+{
+ ::bundle_free(handle);
+}
+
+void Bundle::addInternal(const std::string& key, const std::string& value)
+{
+ ::bundle_add_str(handle, key.c_str(), value.c_str());
+}
+
+void Bundle::addArrayInternal(const std::string& key, const std::vector<std::string>& array)
+{
+ std::unique_ptr<const char*[]> arrayptr(new const char*[array.size()]);
+
+ int index = 0;
+ for (const std::string& data : array) {
+ arrayptr.get()[index++] = data.c_str();
+ }
+
+ ::bundle_add_str_array(handle, key.c_str(), arrayptr.get(), array.size());
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_BUNDLE_H__
+#define __DPM_BUNDLE_H__
+
+#include <string>
+#include <vector>
+
+#include <bundle.h>
+
+class Bundle {
+public:
+ Bundle();
+ ~Bundle();
+
+ template<typename T>
+ void add(const std::string& key, const std::vector<T>& value)
+ {
+ addArrayInternal(key, value);
+ }
+
+ template<typename T>
+ void add(const std::string& key, const T& value)
+ {
+ addInternal(key, value);
+ }
+
+ bundle* get() const
+ {
+ return handle;
+ }
+
+private:
+ void addInternal(const std::string& key, const std::string& value);
+ void addArrayInternal(const std::string& key, const std::vector<std::string>& array);
+
+private:
+ bundle* handle;
+};
+
+#endif //__DPM_BUNDLE_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <unistd.h>
+#include <signal.h>
+#include <sys/types.h>
+
+#include <aul.h>
+#include <klay/exception.h>
+
+#include "launchpad.h"
+
+Launchpad::Launchpad(const uid_t uid) :
+ user(uid)
+{
+ if (user == 0) {
+ throw runtime::Exception("No logined user for launching app");
+ }
+}
+
+bool Launchpad::isRunning(const std::string& appid)
+{
+ return ::aul_app_is_running_for_uid(appid.c_str(), user);
+}
+
+void Launchpad::launch(const std::string& appid)
+{
+ launch(appid, Bundle());
+}
+
+void Launchpad::launch(const std::string& appid, const Bundle& bundle)
+{
+ if (::aul_launch_app_for_uid(appid.c_str(), bundle.get(), user) < 0) {
+ throw runtime::Exception("Failed to launch app " + appid);
+ }
+}
+
+void Launchpad::resume(const std::string& appid)
+{
+ if (::aul_resume_app_for_uid(appid.c_str(), user) < 0) {
+ throw runtime::Exception("Failed to resume app " + appid);
+ }
+}
+
+void Launchpad::terminate(const std::string& appid)
+{
+ int pid = ::aul_app_get_pid_for_uid(appid.c_str(), user);
+ if (pid > 0) {
+ if (::aul_terminate_pid_for_uid(pid, user) < 0) {
+ ::kill(pid, SIGKILL);
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_LAUNCHPAD_H__
+#define __DPM_LAUNCHPAD_H__
+
+#include <string>
+
+#include "app-bundle.h"
+
+class Launchpad {
+public:
+ Launchpad(const uid_t uid = 0);
+ Launchpad(const Launchpad&) = delete;
+ Launchpad(Launchpad&&) = delete;
+
+ void launch(const std::string& appid);
+ void launch(const std::string& appid, const Bundle& bundle);
+ void resume(const std::string& appid);
+ bool isRunning(const std::string& appid);
+ void terminate(const std::string& appid);
+
+private:
+ uid_t user;
+};
+
+#endif //__DPM_LAUNCHPAD_H__
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#include <klay/audit/dlog-sink.h>
+
+#include "logger.h"
+
+std::unique_ptr<audit::LogSink> Logger::logSink = nullptr;
+std::once_flag Logger::flag;
+
+audit::LogSink* Logger::GetLogSink(const std::string& tag)
+{
+ std::call_once(flag, [&]() {
+ auto dlogSink = new audit::DlogLogSink(tag);
+ logSink.reset(dynamic_cast<audit::LogSink*>(dlogSink));
+ });
+
+ return logSink.get();
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#ifndef __DPM_LOGGER_H__
+#define __DPM_LOGGER_H__
+
+#include <klay/audit/logger.h>
+
+#include <memory>
+#include <mutex>
+
+#define DPM Logger::GetLogSink("DPM")
+
+class Logger {
+public:
+ static audit::LogSink* GetLogSink(const std::string& tag);
+
+private:
+ static std::unique_ptr<audit::LogSink> logSink;
+ static std::once_flag flag;
+};
+
+#endif //__DPM_LOGGER_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_OBSERVER_H__
+#define __DPM_OBSERVER_H__
+#include <sys/types.h>
+
+#include <iostream>
+#include <vector>
+#include <functional>
+
+class Observer {
+public:
+ virtual ~Observer() {}
+ virtual void onEvent(uid_t domain) = 0;
+};
+
+class Observerable {
+public:
+ void attach(Observer* observer)
+ {
+ observers.push_back(observer);
+ }
+
+ void notify(uid_t domain)
+ {
+ for (auto observer: observers) {
+ observer->onEvent(domain);
+ }
+ }
+
+private:
+ std::vector<Observer *> observers;
+};
+
+#endif //__DPM_OBSERVER_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <klay/exception.h>
+
+#include "packman.h"
+
+namespace {
+
+int PackageEventCallback(uid_t uid, int id, const char* type, const char* name,
+ const char* key, const char* val, const void* msg, void* data)
+{
+ return 0;
+}
+
+int PackageListCallback(pkgmgrinfo_pkginfo_h handle, void *data)
+{
+ char* pkgid;
+ if (::pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid) == PMINFO_R_OK) {
+ std::vector<std::string>* packageList = static_cast<std::vector<std::string>*>(data);
+ packageList->push_back(pkgid);
+ }
+
+ return 0;
+}
+
+} // namespace
+
+PackageInfo::PackageInfo(const std::string& pkgid, uid_t uid) :
+ user(uid), handle(nullptr)
+{
+ if (uid == 0) {
+ uid = getuid();
+ }
+
+ if (::pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid.c_str(), user, &handle) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid Package Id");
+ }
+}
+
+PackageInfo::~PackageInfo()
+{
+ ::pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+}
+
+std::string PackageInfo::getType() const
+{
+ char *pkgtype;
+ if (::pkgmgrinfo_pkginfo_get_type(handle, &pkgtype) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return pkgtype;
+}
+
+std::string PackageInfo::getLabel() const
+{
+ char *label;
+ if (::pkgmgrinfo_pkginfo_get_label(handle, &label) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return label;
+}
+
+std::string PackageInfo::getIcon() const
+{
+ char *icon;
+ if (::pkgmgrinfo_pkginfo_get_icon(handle, &icon) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return icon;
+}
+
+std::string PackageInfo::getDescription() const
+{
+ char *desc;
+ if (::pkgmgrinfo_pkginfo_get_description(handle, &desc) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return desc;
+}
+
+std::string PackageInfo::getAuthorName() const
+{
+ char *name;
+ if (::pkgmgrinfo_pkginfo_get_author_name(handle, &name) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return name;
+}
+
+std::string PackageInfo::getAuthorEmail() const
+{
+ char *email;
+ if (::pkgmgrinfo_pkginfo_get_author_email(handle, &email) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return email;
+}
+
+std::string PackageInfo::getAuthorHref() const
+{
+ char *href;
+ if (::pkgmgrinfo_pkginfo_get_author_name(handle, &href) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return href;
+}
+
+std::string PackageInfo::getVersion() const
+{
+ char *version;
+ if (::pkgmgrinfo_pkginfo_get_version(handle, &version) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return version;
+}
+
+std::string PackageInfo::getApiVersion() const
+{
+ char *api;
+ if (::pkgmgrinfo_pkginfo_get_api_version(handle, &api) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return api;
+}
+
+std::string PackageInfo::getMainAppId() const
+{
+ char *mainappid;
+ if (::pkgmgrinfo_pkginfo_get_mainappid(handle, &mainappid) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return mainappid;
+}
+
+bool PackageInfo::isSystem() const
+{
+ bool ret;
+ if (::pkgmgrinfo_pkginfo_is_system(handle, &ret) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return ret;
+}
+
+bool PackageInfo::isRemovable() const
+{
+ bool ret;
+ if (::pkgmgrinfo_pkginfo_is_removable(handle, &ret) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return ret;
+}
+
+bool PackageInfo::isPreload() const
+{
+ bool ret;
+ if (::pkgmgrinfo_pkginfo_is_preload(handle, &ret) != PMINFO_R_OK) {
+ throw runtime::Exception("Invalid operation");
+ }
+
+ return ret;
+}
+
+PackageManager::PackageManager() :
+ nativeRequestHandle(nullptr), nativeListenHandle(nullptr)
+{
+ nativeRequestHandle = ::pkgmgr_client_new(PC_REQUEST);
+ if (nativeRequestHandle == nullptr) {
+ throw runtime::Exception("No package manager request instance");
+ }
+
+ nativeListenHandle = ::pkgmgr_client_new(PC_LISTENING);
+ if (nativeListenHandle == nullptr) {
+ ::pkgmgr_client_free(nativeRequestHandle);
+ throw runtime::Exception("No package manager listening instance");
+ }
+}
+
+PackageManager::~PackageManager()
+{
+ ::pkgmgr_client_free(nativeRequestHandle);
+ ::pkgmgr_client_free(nativeListenHandle);
+}
+
+PackageManager& PackageManager::instance()
+{
+ static PackageManager __instance__;
+ return __instance__;
+}
+
+void PackageManager::setEventCallback(pkgmgr_handler callback, void* user_data)
+{
+ int ret;
+ ret = ::pkgmgr_client_listen_status(nativeListenHandle, callback, user_data);
+ if (ret < 0) {
+ throw runtime::Exception("Failed to set package event callback");
+ }
+}
+
+void PackageManager::unsetEventCallback()
+{
+ int ret;
+ ret = ::pkgmgr_client_remove_listen_status(nativeListenHandle);
+ if (ret < 0) {
+ throw runtime::Exception("Failed to unset package event callback");
+ }
+}
+
+void PackageManager::installPackage(const std::string& pkgpath, const uid_t user)
+{
+ int ret = ::pkgmgr_client_usr_install(nativeRequestHandle, NULL, NULL, pkgpath.c_str(), NULL, PM_QUIET, PackageEventCallback, nullptr, user);
+ if (ret < PKGMGR_R_OK) {
+ throw runtime::Exception("Package installation failed");
+ }
+}
+
+void PackageManager::uninstallPackage(const std::string& pkgid, const uid_t user)
+{
+ std::string pkgtype;
+
+ PackageInfo pkgInfo(pkgid, user);
+ pkgtype = pkgInfo.getType();
+
+ int ret = ::pkgmgr_client_usr_uninstall(nativeRequestHandle, pkgtype.c_str(), pkgid.c_str(), PM_QUIET, PackageEventCallback, nullptr, user);
+ if (ret < PKGMGR_R_OK) {
+ throw runtime::Exception("Package manager exception");
+ }
+}
+
+std::vector<std::string> PackageManager::getPackageList(const uid_t user)
+{
+ std::vector<std::string> packageList;
+
+ if (::pkgmgrinfo_pkginfo_get_usr_list(PackageListCallback, &packageList, user) != PMINFO_R_OK) {
+ throw runtime::Exception("Error in pkgmgrinfo_pkginfo_get_list");
+ }
+
+ return packageList;
+}
+
+void PackageManager::setModeRestriction(int mode, uid_t user)
+{
+ if (::pkgmgr_client_usr_set_restriction_mode(nativeRequestHandle,
+ mode,
+ user) != PKGMGR_R_OK) {
+ throw runtime::Exception("Failed to set package restriction mode");
+ }
+}
+
+void PackageManager::unsetModeRestriction(int mode, uid_t user)
+{
+ if (::pkgmgr_client_usr_unset_restriction_mode(nativeRequestHandle,
+ mode,
+ user) != PKGMGR_R_OK) {
+ throw runtime::Exception("Failed to unset package mode restriction");
+ }
+}
+
+int PackageManager::getModeRestriction(uid_t user)
+{
+ int mode;
+ if (::pkgmgr_client_usr_get_restriction_mode(nativeRequestHandle,
+ &mode,
+ user) != PKGMGR_R_OK) {
+ throw runtime::Exception("Failed to get package restriction mode");
+ }
+
+ return mode;
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_PACKMAN_H__
+#define __DPM_PACKMAN_H__
+
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <string>
+#include <vector>
+
+#include <package-manager.h>
+#include <pkgmgr-info.h>
+
+class PackageInfo {
+public:
+ PackageInfo(const std::string& pkgid, uid_t uid = 0);
+ ~PackageInfo();
+
+ std::string getType() const;
+ std::string getIcon() const;
+ std::string getLabel() const;
+ std::string getDescription() const;
+
+ std::string getAuthorName() const;
+ std::string getAuthorEmail() const;
+ std::string getAuthorHref() const;
+
+ std::string getVersion() const;
+ std::string getApiVersion() const;
+ std::string getMainAppId() const;
+
+ bool isSystem() const;
+ bool isRemovable() const;
+ bool isPreload() const;
+
+private:
+ uid_t user;
+ pkgmgrinfo_pkginfo_h handle;
+};
+
+class PackageManager {
+public:
+ void installPackage(const std::string& pkgpath, const uid_t user);
+ void uninstallPackage(const std::string& pkgid, const uid_t user);
+
+ std::vector<std::string> getPackageList(const uid_t user);
+
+ void setEventCallback(pkgmgr_handler callback, void* user_data);
+ void unsetEventCallback();
+
+ void setModeRestriction(int mode, uid_t user);
+ void unsetModeRestriction(int mode, uid_t user);
+ int getModeRestriction(uid_t user);
+
+ void setPackageRestriction(const std::string& pkgid, int mode, uid_t user);
+ void unsetPackageRestriction(const std::string& pkgid, int mode, uid_t user);
+ int getPackageRestriction(const std::string& pkgid, uid_t user);
+
+ static PackageManager& instance();
+
+private:
+ PackageManager();
+ ~PackageManager();
+
+private:
+ pkgmgr_client *nativeRequestHandle, *nativeListenHandle;
+};
+
+#endif // __DPM_PACKMAN_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include <klay/exception.h>
+
+#include "policy-admin.h"
+
+PolicyAdmin::PolicyAdmin(pid_t pid, uid_t user)
+{
+ char pkgid[PATH_MAX];
+
+ if (aul_app_get_pkgid_bypid_for_uid(pid, pkgid, PATH_MAX, user) != 0) {
+ int fd = ::open(std::string("/proc/" + std::to_string(pid) + "/cmdline").c_str(), O_RDONLY);
+ if (fd == -1) {
+ throw runtime::Exception("Unknown PID");
+ }
+
+ ssize_t ret, bytes = 0;
+ do {
+ ret = ::read(fd, &pkgid[bytes], PATH_MAX);
+ if (ret != -1) {
+ bytes += ret;
+ }
+ } while ((ret == -1) && (errno == EINTR));
+
+ while (::close(fd) == -1 && errno == EINTR);
+
+ if (ret == -1) {
+ throw runtime::Exception("Failed to get admin info");
+ }
+
+ pkgid[bytes-1] = '\0';
+ }
+
+ name = pkgid;
+ uid = user;
+}
+
+PolicyAdmin::~PolicyAdmin()
+{
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_POLICY_ADMIN_H__
+#define __DPM_POLICY_ADMIN_H__
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <limits.h>
+
+#include <aul.h>
+
+#include <string>
+#include <vector>
+
+#include <klay/exception.h>
+
+class PolicyAdmin {
+public:
+ PolicyAdmin(pid_t pid, uid_t user);
+
+ PolicyAdmin(const PolicyAdmin&) = delete;
+ PolicyAdmin(PolicyAdmin&&) = default;
+
+ ~PolicyAdmin();
+
+ PolicyAdmin& operator=(PolicyAdmin&&) = default;
+ PolicyAdmin& operator=(const PolicyAdmin&) = delete;
+
+ inline std::string getName() const
+ {
+ return name;
+ }
+
+ inline uid_t getUid() const
+ {
+ return uid;
+ }
+
+ inline std::string getKey() const
+ {
+ return key;
+ }
+
+private:
+ std::string name;
+ uid_t uid;
+ std::string key;
+};
+
+#endif //__DPM_POLICY_ADMIN_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include <system_info.h>
+#include <klay/filesystem.h>
+
+#include <klay/dbus/signal.h>
+#include <klay/audit/logger.h>
+
+#include "policy-client.h"
+#include "policy-event-env.h"
+
+#include "logger.h"
+
+#include "client/device-policy-manager.h"
+
+#define RET_ON_FAILURE(cond, ret) \
+{ \
+ if (!(cond)) \
+ return (ret); \
+}
+
+#define VCONFKEY_DPM_MODE_STATE "db/dpm/mode_state"
+
+namespace {
+
+const std::string SIGNAL_OBJECT_PATH = "/org/tizen/DevicePolicyManger/PIL";
+const std::string SIGNAL_EVENT_INTERFACE = "org.tizen.DevicePolicyManager.PIL.Event";
+
+const std::string POLICY_MANAGER_ADDRESS = "/tmp/.device-policy-manager.sock";
+
+} // namespace
+
+void DevicePolicyClient::maintenanceModeDispatcher(keynode_t *node, void *data)
+{
+ int *mode = reinterpret_cast<int *>(data);
+ ::vconf_get_bool(VCONFKEY_DPM_MODE_STATE, mode);
+}
+
+DevicePolicyClient::DevicePolicyClient() noexcept :
+ maintenanceMode(0), clientAddress(POLICY_MANAGER_ADDRESS)
+{
+ mainloop.reset(new ScopedGMainLoop);
+ ::vconf_notify_key_changed(VCONFKEY_DPM_MODE_STATE, maintenanceModeDispatcher, reinterpret_cast<void *>(&this->maintenanceMode));
+ ::vconf_get_bool(VCONFKEY_DPM_MODE_STATE, &maintenanceMode);
+}
+
+DevicePolicyClient::~DevicePolicyClient() noexcept
+{
+ mainloop.reset();
+ ::vconf_ignore_key_changed(VCONFKEY_DPM_MODE_STATE, maintenanceModeDispatcher);
+}
+
+int DevicePolicyClient::subscribeSignal(const std::string& name,
+ const SignalHandler& handler,
+ void* data) noexcept
+{
+ int ret = -1;
+ try {
+ mainloop->dispatch([&]() {
+ auto task = [name, handler, data](dbus::Variant variant) {
+ char *state = NULL;
+ variant.get("(s)", &state);
+
+ handler(name.c_str(), state, data);
+ };
+
+ dbus::signal::Receiver receiver(SIGNAL_OBJECT_PATH, SIGNAL_EVENT_INTERFACE);
+ ret = receiver.subscribe(name, std::move(task));
+ });
+ return ret;
+ } catch (runtime::Exception& e) {
+ ERROR(DPM, e.what());
+ return -1;
+ }
+}
+
+int DevicePolicyClient::unsubscribeSignal(int id) noexcept
+{
+ try {
+ mainloop->dispatch([&]() {
+ dbus::signal::Receiver receiver(SIGNAL_OBJECT_PATH, SIGNAL_EVENT_INTERFACE);
+ receiver.unsubscribe(id);
+ });
+
+ return 0;
+ } catch (runtime::Exception& e) {
+ ERROR(DPM, e.what());
+ return -1;
+ }
+}
+
+DevicePolicyClient& GetDevicePolicyClient(void* handle)
+{
+ return *reinterpret_cast<DevicePolicyClient*>(handle);
+}
+
+EXPORT_API device_policy_manager_h dpm_manager_create(void)
+{
+ DevicePolicyClient* client = new(std::nothrow) DevicePolicyClient();
+ if (client == nullptr) {
+ return NULL;
+ }
+
+ return reinterpret_cast<device_policy_manager_h>(client);
+}
+
+EXPORT_API int dpm_manager_destroy(device_policy_manager_h handle)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+
+ delete &GetDevicePolicyClient(handle);
+
+ return 0;
+}
+
+EXPORT_API int dpm_add_policy_changed_cb(device_policy_manager_h handle,
+ const char* name,
+ dpm_policy_changed_cb callback,
+ void* user_data,
+ int* id)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(name, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(callback, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(id, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient& client = GetDevicePolicyClient(handle);
+ int ret = client.subscribeSignal(name, callback, user_data);
+ if (ret < 0) {
+ return -1;
+ }
+
+ *id = ret;
+ return 0;
+}
+
+EXPORT_API int dpm_remove_policy_changed_cb(device_policy_manager_h handle, int id)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(id >= 0, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient& client = GetDevicePolicyClient(handle);
+ return client.unsubscribeSignal(id);
+}
+
+EXPORT_API int dpm_add_signal_cb(device_policy_manager_h handle, const char* signal,
+ dpm_signal_cb callback, void* user_data, int* id)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(signal, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(callback, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(id, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient& context = GetDevicePolicyClient(handle);
+ int ret = context.subscribeSignal(signal, callback, user_data);
+ if (ret < 0) {
+ return -1;
+ }
+
+ *id = ret;
+ return 0;
+}
+
+EXPORT_API int dpm_remove_signal_cb(device_policy_manager_h handle, int id)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(id >= 0, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient& context = GetDevicePolicyClient(handle);
+ return context.unsubscribeSignal(id);
+}
+
+EXPORT_API int dpm_admin_register_client(device_policy_manager_h handle, const char* name, uid_t uid)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(name, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(uid, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient &client = GetDevicePolicyClient(handle);
+
+ try {
+ Status<int> status { -1 };
+ status = client.methodCallForce<int>("DevicePolicyManager::enroll", name, uid);
+ return status.get();
+ } catch (...) {
+ return -1;
+ }
+}
+
+EXPORT_API int dpm_admin_deregister_client(device_policy_manager_h handle, const char* name, uid_t uid)
+{
+ RET_ON_FAILURE(handle, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(name, DPM_ERROR_INVALID_PARAMETER);
+ RET_ON_FAILURE(uid, DPM_ERROR_INVALID_PARAMETER);
+
+ DevicePolicyClient &client = GetDevicePolicyClient(handle);
+
+ try {
+ Status<int> status { -1 };
+ status = client.methodCallForce<int>("DevicePolicyManager::disenroll", name, uid);
+ return status.get();
+ } catch (...) {
+ return -1;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __POLICY_CLIENT_H__
+#define __POLICY_CLIENT_H__
+
+#include <string>
+#include <memory>
+#include <functional>
+#include <cerrno>
+#include <vconf.h>
+
+#include <klay/rmi/method.h>
+#include <klay/gmainloop.h>
+
+#include "status.h"
+
+typedef std::function<void(const char*, const char*, void*)> SignalHandler;
+
+class DevicePolicyClient {
+public:
+ DevicePolicyClient() noexcept;
+ ~DevicePolicyClient() noexcept;
+
+ int subscribeSignal(const std::string& name,
+ const SignalHandler& handler,
+ void* data) noexcept;
+ int unsubscribeSignal(int subscriberId) noexcept;
+
+ template<typename Type, typename... Args>
+ Type methodCall(const std::string& method, Args&&... args)
+ {
+ if (!maintenanceMode) {
+ errno = EPROTONOSUPPORT;
+ return Type();
+ }
+
+ rmi::Connection conn(clientAddress);
+ Type ret = rmi::RemoteMethod<>::invoke<Type, Args...>(conn, method, std::forward<Args>(args)...);
+ return ret;
+ }
+
+ template<typename Type, typename... Args>
+ Type methodCallForce(const std::string& method, Args&&... args)
+ {
+ rmi::Connection conn(clientAddress);
+ Type ret = rmi::RemoteMethod<>::invoke<Type, Args...>(conn, method, std::forward<Args>(args)...);
+ return ret;
+ }
+
+private:
+ static void maintenanceModeDispatcher(keynode_t *node, void *data);
+private:
+ int maintenanceMode;
+ std::string clientAddress;
+ std::unique_ptr<ScopedGMainLoop> mainloop;
+};
+
+DevicePolicyClient& GetDevicePolicyClient(void* handle);
+
+#endif //__POLICY_CLIENT_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DEVICE_POLICY_CONTEXT__
+#define __DEVICE_POLICY_CONTEXT__
+
+#include <klay/rmi/service.h>
+
+using PolicyControlContext = rmi::Service;
+
+#endif //!__DEVICE_POLICY_CONTEXT__
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#ifndef __DPM_POLICY_EVENT_ENV_H__
+#define __DPM_POLICY_EVENT_ENV_H__
+
+#include <string>
+
+const std::string PIL_MANIFEST_PATH = EVENT_CONFIGURE_DIR "/manifest";
+const std::string PIL_OBJECT_PATH = "/org/tizen/DevicePolicyManger/PIL";
+const std::string PIL_EVENT_INTERFACE = "org.tizen.DevicePolicyManager.PIL.Event";
+
+#endif //__DPM_POLICY_EVENT_ENV_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include "policy-event.h"
+#include "policy-event-env.h"
+#include "logger.h"
+
+#include <klay/dbus/signal.h>
+#include <klay/dbus/introspection.h>
+#include <klay/exception.h>
+
+
+void PolicyEventNotifier::init(void) noexcept
+{
+ try {
+ auto manifest = dbus::Introspection::createXmlDataFromFile(PIL_MANIFEST_PATH);
+ dbus::Introspection is(manifest);
+ is.addInterface(PIL_EVENT_INTERFACE);
+
+ manifest = is.getXmlData();
+ dbus::Introspection::writeXmlDataToFile(PIL_MANIFEST_PATH, manifest);
+
+ dbus::Connection& conn = dbus::Connection::getSystem();
+ conn.registerObject(PIL_OBJECT_PATH, manifest, nullptr, nullptr);
+ DEBUG(DPM, "Success to init event-notifier.");
+ } catch(runtime::Exception& e) {
+ ERROR(DPM, e.what());
+ }
+}
+
+void PolicyEventNotifier::create(const std::string& name) noexcept
+{
+ try {
+ dbus::signal::Sender sender(PIL_OBJECT_PATH, PIL_EVENT_INTERFACE);
+ sender.addSignal(PIL_MANIFEST_PATH, name, "(s)");
+ DEBUG(DPM, "Success to create new event: " << name);
+ } catch(runtime::Exception& e) {
+ ERROR(DPM, e.what() << ", name: " << name);
+ }
+}
+
+void PolicyEventNotifier::emit(const std::string& name, const std::string& state) noexcept
+{
+ try {
+ dbus::signal::Sender sender(PIL_OBJECT_PATH, PIL_EVENT_INTERFACE);
+ sender.emit(name, "(s)", state.c_str());
+ DEBUG(DPM, "Event occured name: " << name << ", state: " << state);
+ } catch(runtime::Exception& e) {
+ ERROR(DPM, e.what() << ", name: " << name << ", state: " << state);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_POLICY_EVENT_H__
+#define __DPM_POLICY_EVENT_H__
+
+#include <string>
+
+class PolicyEventNotifier {
+public:
+ static void init(void) noexcept;
+ static void create(const std::string& name) noexcept;
+ static void emit(const std::string& name, const std::string& state) noexcept;
+};
+
+#endif //__DPM_POLICY_EVENT_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_POLICY_MODEL_H__
+#define __DPM_POLICY_MODEL_H__
+#include <string>
+#include <vector>
+#include <unordered_map>
+#include <iostream>
+#include <mutex>
+
+#include <klay/exception.h>
+
+#include "policy-storage.h"
+#include "policy-admin.h"
+#include "observer.h"
+
+class AbstractPolicyProvider {
+public:
+ AbstractPolicyProvider() {}
+ virtual ~AbstractPolicyProvider() {}
+};
+
+template<typename Type>
+class DomainPolicy : public Observer {
+public:
+ typedef Type DataType;
+
+ DomainPolicy(const std::string& name);
+ virtual ~DomainPolicy();
+
+ void set(const Type& value);
+ DataType get();
+
+ void onEvent(uid_t domain);
+
+ virtual bool apply(const Type& value, uid_t domain)
+ {
+ return true;
+ }
+
+private:
+ void enforce(uid_t domid);
+
+private:
+ int id;
+ Type initial;
+ std::unordered_map<uid_t, Type> current;
+ std::unordered_map<uid_t, bool> ready;
+ std::mutex mtx;
+};
+
+template<typename Type>
+DomainPolicy<Type>::DomainPolicy(const std::string& name) :
+ id(-1), current()
+{
+ id = PolicyStorage::define(name, initial);
+ if (id < 0) {
+ throw runtime::Exception("Failed to define policy");
+ }
+
+ PolicyStorage::subscribeEvent(this);
+}
+
+template<typename Type>
+DomainPolicy<Type>::~DomainPolicy()
+{
+}
+
+template<typename Type>
+void DomainPolicy<Type>::enforce(uid_t domid)
+{
+ Type value = initial;
+ if (!ready[domid])
+ current[domid] = initial;
+
+ PolicyStorage::strictize(id, value, domid);
+ if (current[domid] != value) {
+ apply(value, domid);
+ current[domid] = value;
+ }
+
+ ready[domid] = true;
+}
+
+template<typename Type>
+void DomainPolicy<Type>::set(const DataType& val)
+{
+ PolicyAdmin admin(rmi::Service::getPeerPid(), rmi::Service::getPeerUid());
+ PolicyStorage::update(id, admin.getName(), admin.getUid(), val);
+
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ enforce(admin.getUid());
+}
+
+template<typename Type>
+Type DomainPolicy<Type>::get()
+{
+ uid_t domain = rmi::Service::getPeerUid();
+
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ if (!current.count(domain)) {
+ enforce(domain);
+ }
+
+ return current[domain].value;
+}
+
+template<typename Type>
+void DomainPolicy<Type>::onEvent(uid_t domain)
+{
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ enforce(domain);
+}
+
+template<typename Type>
+class GlobalPolicy : public Observer {
+public:
+ typedef Type DataType;
+
+ GlobalPolicy(const std::string& name);
+ virtual ~GlobalPolicy();
+
+ void set(const Type& value);
+ Type get();
+
+ void onEvent(uid_t domain);
+
+ virtual bool apply(const Type& value)
+ {
+ return true;
+ }
+
+private:
+ void enforce();
+
+private:
+ int id;
+ Type initial;
+ Type current;
+ bool ready;
+ std::mutex mtx;
+};
+
+template<typename Type>
+GlobalPolicy<Type>::GlobalPolicy(const std::string& name) :
+ id(-1), current(), ready(false)
+{
+ id = PolicyStorage::define(name, initial);
+ if (id < 0) {
+ throw runtime::Exception("Failed to define policy");
+ }
+
+ current = initial;
+ PolicyStorage::subscribeEvent(this);
+}
+
+template<typename Type>
+GlobalPolicy<Type>::~GlobalPolicy()
+{
+}
+
+template<typename Type>
+void GlobalPolicy<Type>::enforce()
+{
+ Type value = initial;
+ PolicyStorage::strictize(id, value);
+ if (current != value) {
+ apply(value);
+ current = value;
+ }
+}
+
+template<typename Type>
+void GlobalPolicy<Type>::set(const Type& val)
+{
+ PolicyAdmin admin(rmi::Service::getPeerPid(), rmi::Service::getPeerUid());
+ PolicyStorage::update(id, admin.getName(), admin.getUid(), val);
+
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ enforce();
+}
+
+template<typename Type>
+Type GlobalPolicy<Type>::get()
+{
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ if (!ready) {
+ enforce();
+ ready = true;
+ }
+ return current.value;
+}
+
+template<typename Type>
+void GlobalPolicy<Type>::onEvent(uid_t domain)
+{
+ std::lock_guard<std::mutex> mtxGuard(mtx);
+ enforce();
+}
+#endif //__DPM_POLICY_MODEL_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include "policy-storage.h"
+
+Observerable PolicyStorage::observers;
+PolicyStorageBackend *PolicyStorage::backend = nullptr;
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_POLICY_STORAGE_H__
+#define __DPM_POLICY_STORAGE_H__
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <string>
+#include <vector>
+
+#include "observer.h"
+
+class DataSetInt {
+public:
+ DataSetInt() : value(0) {}
+ DataSetInt(int v) : value(v) {}
+ virtual ~DataSetInt() {}
+
+ DataSetInt& operator=(int val) {
+ value = val;
+ return *this;
+ }
+
+ operator int() const {
+ return value;
+ }
+
+ bool operator==(const DataSetInt& rhs) const {
+ return value == rhs.value;
+ }
+
+ bool operator!=(const DataSetInt& rhs) const {
+ return value != rhs.value;
+ }
+
+ virtual bool strictize(const DataSetInt& rhs) {
+ if (rhs.value < value) {
+ value = rhs.value;
+ return true;
+ }
+
+ return false;
+ }
+
+ int value;
+};
+
+class PolicyStorageBackend {
+public:
+ PolicyStorageBackend() {}
+ virtual ~PolicyStorageBackend() {}
+
+ virtual int define(const std::string& name, DataSetInt& value) = 0;
+ virtual bool strictize(int id, DataSetInt& value, uid_t domain = 0) = 0;
+ virtual void update(int id, const std::string& admin, uid_t domain, const DataSetInt& value) = 0;
+ virtual int enroll(const std::string& name, uid_t domain) = 0;
+ virtual int unenroll(const std::string& name, uid_t domain) = 0;
+ virtual std::vector<uid_t> fetchDomains() = 0;
+};
+
+class PolicyStorage {
+public:
+ template<typename T>
+ static int define(const std::string& name, T& value) {
+ return backend->define(name, value);
+ }
+
+ template<typename T>
+ static bool strictize(int id, T& value, uid_t domain = 0) {
+ return backend->strictize(id, value, domain);
+ }
+
+ template<typename T>
+ static void update(int id, const std::string& admin, uid_t domain, const T& value) {
+ backend->update(id, admin, domain, value);
+ }
+
+ static void setBackend(PolicyStorageBackend *pimpl) {
+ backend = pimpl;
+ }
+
+ static void subscribeEvent(Observer *observer) {
+ observers.attach(observer);
+ }
+
+ static int enroll(const std::string& name, uid_t domain) {
+ return backend->enroll(name, domain);
+ }
+
+ static int unenroll(const std::string& name, uid_t domain) {
+ int rc = backend->unenroll(name, domain);
+ if (rc == 0) {
+ observers.notify({domain});
+ }
+
+ return rc;
+ }
+
+ static void notify() {
+ std::vector<uid_t> domains = backend->fetchDomains();
+ for (auto domid : domains) {
+ observers.notify({domid});
+ }
+ }
+
+ static std::vector<uid_t> fetchDomains() {
+ return backend->fetchDomains();
+ }
+
+private:
+ static Observerable observers;
+ static PolicyStorageBackend *backend;
+};
+
+#endif //__DPM_POLICY_STORAGE_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include <fstream>
+#include <algorithm>
+
+#include <klay/exception.h>
+#include <klay/audit/logger.h>
+
+#include "preference.h"
+
+namespace {
+
+std::string& trimLeadingWhiteSpaces(std::string& s)
+{
+ size_t startpos = s.find_first_not_of(" \t\r\n\v\f");
+ if (std::string::npos != startpos) {
+ s = s.substr(startpos);
+ }
+
+ return s;
+}
+
+std::string& trimTrailingWhiteSpaces(std::string& s)
+{
+ size_t endpos = s.find_last_not_of(" \t\r\n\v\f");
+ if (std::string::npos != endpos) {
+ s = s.substr(0, endpos + 1);
+ }
+
+ return s;
+}
+
+std::unordered_map<std::string, std::string> defaultPreferences = {
+ {"locktype", "org.tizen.setting-password"},
+ {"syspopup", "org.tizen.dpm-syspopup"}
+};
+
+} // namespace
+
+PreferencesStore::PreferencesStore()
+{
+}
+
+PreferencesStore& PreferencesStore::getInstance()
+{
+ static PreferencesStore __instance__;
+ return __instance__;
+}
+
+std::string PreferencesStore::get(const std::string& key)
+{
+ type::const_iterator it = keyValueMap.find(key);
+ if (it != keyValueMap.end())
+ return it->second;
+
+ return "";
+}
+
+void PreferencesStore::load(const std::string& filename)
+{
+ std::ifstream source;
+ source.open(filename);
+
+ if (!source) {
+ keyValueMap = defaultPreferences;
+ return;
+ }
+
+ for (std::string line; std::getline(source, line);) {
+ size_t startpos = line.find_first_not_of(" \t\r\n\v\f");
+ if (startpos == std::string::npos) {
+ continue;
+ } else {
+ line = line.substr(startpos);
+ }
+
+ switch (line[0]) {
+ case ';':
+ case '#':
+ break;
+ default:
+ size_t end = line.find_first_of("=:");
+ if (end == std::string::npos) {
+ throw runtime::Exception("Invalid syntax");
+ }
+ std::string name = line.substr(0, end);
+ std::string value = line.substr(end + 1);
+
+ trimLeadingWhiteSpaces(trimTrailingWhiteSpaces(name));
+ trimLeadingWhiteSpaces(trimTrailingWhiteSpaces(value));
+ keyValueMap[name] = value;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_PREFERENCES_H__
+#define __DPM_PREFERENCES_H__
+
+#include <string>
+#include <unordered_map>
+
+#include <klay/reflection.h>
+
+class PreferencesStore {
+public:
+ typedef std::unordered_map<std::string, std::string> type;
+
+ PreferencesStore(const std::string& pathname);
+ std::string get(const std::string& key);
+ void load(const std::string& filename);
+
+ static PreferencesStore& getInstance();
+
+private:
+ PreferencesStore();
+
+private:
+ std::unordered_map<std::string, std::string> keyValueMap;
+};
+
+#endif //__DPM_PREFERENCES_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __STATUS_H__
+#define __STATUS_H__
+
+#include <cerrno>
+#include <utility>
+
+template<typename Type>
+class Status {
+public:
+ Status() = delete;
+ Status(Type&& defaultValue) : value(std::forward<Type>(defaultValue))
+ {
+ errno = 0;
+ }
+
+ void operator=(Type&& newValue)
+ {
+ if (errno == 0)
+ value = newValue;
+ }
+
+ Type get() const
+ {
+ return value;
+ }
+
+private:
+ Type value;
+};
+
+#endif //!__STATUS_H__
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+SET(TARGET device-policy-manager)
+SET(TARGET_SERVER_LIB dpm-server)
+
+SET(SERVER_SRC server.cpp
+ sql-backend.cpp
+ plugin.cpp)
+
+SET(SERVER_DEP klay
+ glib-2.0
+ gio-2.0
+ sqlite3
+ bundle
+ aul
+ appsvc
+ pkgmgr
+ pkgmgr-info
+ vconf
+ syspopup-caller
+ deviced
+ libtzplatform-config
+ cynara-client
+ cynara-session)
+
+PKG_CHECK_MODULES(SERVER_DEPS REQUIRED ${SERVER_DEP})
+
+INCLUDE_DIRECTORIES(${SERVER_DEPS_INCLUDE_DIRS})
+
+ADD_LIBRARY(${TARGET_SERVER_LIB} STATIC ${SERVER_SRC})
+TARGET_LINK_LIBRARIES(${TARGET_SERVER_LIB} ${SERVER_DEPS_LIBRARIES} -ldl)
+
+TARGET_COMPILE_DEFINITIONS(${TARGET_SERVER_LIB} PRIVATE
+ DATA_PATH="${DATA_INSTALL_DIR}"
+ RUN_PATH="${RUN_INSTALL_DIR}"
+ DB_PATH="${DB_INSTALL_DIR}"
+ PLUGIN_INSTALL_DIR="${PLUGIN_INSTALL_DIR}")
+
+ADD_EXECUTABLE(${TARGET} main.cpp)
+TARGET_LINK_LIBRARIES(${TARGET} dl pthread sqlite3 dpm-pil ${TARGET_SERVER_LIB})
+
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_FLAGS "-pie")
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${CMAKE_INSTALL_BINDIR})
--- /dev/null
+/*
+ * Copyright (c) 2018 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
+ */
+#pragma once
+
+#include <string>
+
+namespace schema {
+
+struct Admin {
+ int id;
+ std::string pkg;
+ int uid;
+ std::string key;
+ int removable;
+};
+
+struct ManagedPolicy {
+ int id;
+ int aid;
+ int pid;
+ int value;
+};
+
+struct PolicyDefinition {
+ int id;
+ int scope;
+ std::string name;
+ int ivalue;
+};
+
+} // namespace schema
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <fcntl.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <cstdlib>
+#include <iostream>
+#include <stdexcept>
+#include <memory>
+
+#include <klay/gmainloop.h>
+
+#include "pil/logger.h"
+
+#include "server.h"
+
+namespace {
+
+void usage(const std::string& prog)
+{
+ std::cout << "Usage: " << prog << "\n"
+ << "Options: \n"
+ << " -o --on-demand timeout : Start as on-demand service\n"
+ << " Service will be unloaded after timeout\n"
+ << std::endl;
+}
+
+void signalHandler(int signum)
+{
+ ERROR(DPM, "Interrupted");
+ exit(0);
+}
+
+} // namespace
+int main(int argc, char *argv[])
+{
+ struct option options[] = {
+ {"on-demand", required_argument, 0, 'o'},
+ {"help", no_argument, 0, 'h'},
+ {0, 0, 0, 0 }
+ };
+
+ ::signal(SIGINT, signalHandler);
+
+ bool ondemand = false;
+ int index, opt, timeout = -1;
+ while ((opt = getopt_long(argc, argv, "o:h", options, &index)) != -1) {
+ switch (opt) {
+ case 'o':
+ ondemand = true;
+ timeout = ::atoi(optarg);
+ break;
+ case 'h':
+ usage(argv[0]);
+ return EXIT_SUCCESS;
+ default:
+ usage(argv[0]);
+ return EXIT_FAILURE;
+ }
+ }
+
+ ::umask(0);
+
+ try {
+ ScopedGMainLoop gmainloop;
+ DevicePolicyManager manager;
+
+ auto result = manager.loadPolicyPlugins();
+ if (result.first == 0)
+ throw runtime::Exception("There are no available policy plugins.");
+ manager.applyPolicies();
+
+ manager.run(ondemand, timeout);
+ } catch (std::exception &e) {
+ ERROR(DPM, e.what());
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
--- /dev/null
+#include <dlfcn.h>
+
+#include <string>
+#include <iostream>
+#include <mutex>
+#include <thread>
+#include <exception>
+#include <memory>
+#include <unordered_map>
+
+#include "pil/logger.h"
+
+#include "plugin.h"
+
+Plugin::Plugin() :
+ handle(nullptr)
+{
+}
+
+Plugin::~Plugin()
+{
+}
+
+int Plugin::load(const std::string& path, int flags)
+{
+ handle = ::dlopen(path.c_str(), flags);
+ if (!handle) {
+ return -1;
+ }
+
+ return 0;
+}
+
+void Plugin::unload()
+{
+ if (handle) {
+ dlclose(handle);
+ handle = nullptr;
+ }
+}
+
+void* Plugin::lookupSymbol(const std::string& name)
+{
+ void *result = nullptr;
+ if (handle) {
+ result = ::dlsym(handle, name.c_str());
+ }
+ return result;
+}
+
+PolicyLoader::PolicyLoader(const std::string& base) :
+ basename(base + "/")
+{
+}
+
+AbstractPolicyProvider* PolicyLoader::instantiate(const std::string& name, PolicyControlContext& context)
+{
+ PluginMap::iterator iter = pluginMap.find(name);
+ if (iter == pluginMap.end()) {
+ Plugin plguin;
+ if (plguin.load(basename + name, RTLD_LAZY | RTLD_LOCAL) != 0) {
+ ERROR(DPM, "Failed to load \"" << name << "\"");
+ return nullptr;
+ }
+
+ DEBUG(DPM, "Loading plugin: " << name << " ... ");
+ PolicyFactory factory = (PolicyFactory)(plguin.lookupSymbol("PolicyFactory"));
+ if (factory == nullptr) {
+ ERROR(DPM, dlerror());
+ return NULL;
+ }
+
+ pluginMap[name] = std::move(plguin);
+
+ return (*factory)(context);
+ }
+
+ return nullptr;
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#ifndef __DPM_PLUGIN_H__
+#define __DPM_PLUGIN_H__
+#include <string>
+#include <exception>
+#include <unordered_map>
+
+#include "pil/policy-context.h"
+#include "pil/policy-model.h"
+
+class Plugin {
+public:
+ Plugin();
+ virtual ~Plugin();
+
+ int load(const std::string& path, int flags);
+ void unload();
+ void* lookupSymbol(const std::string& name);
+
+ bool isLoaded() const
+ {
+ return handle != 0;
+ }
+
+ bool hasSymbol(const std::string& name)
+ {
+ return lookupSymbol(name) != 0;
+ }
+
+private:
+ void* handle;
+};
+
+class PolicyLoader {
+public:
+ typedef AbstractPolicyProvider* (*PolicyFactory)(PolicyControlContext& context);
+
+ PolicyLoader(const std::string& base);
+ AbstractPolicyProvider* instantiate(const std::string& name, rmi::Service& context);
+
+private:
+ typedef std::unordered_map<std::string, Plugin> PluginMap;
+
+ std::string basename;
+ PluginMap pluginMap;
+};
+
+#endif /*!__DPM_PLUGIN_H__*/
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <functional>
+
+#include <cynara-client.h>
+#include <cynara-session.h>
+
+#include <klay/exception.h>
+#include <klay/filesystem.h>
+
+#include "pil/policy-event.h"
+#include "pil/logger.h"
+
+#include "server.h"
+#include "sql-backend.h"
+
+#include <vconf.h>
+
+#define VCONFKEY_DPM_MODE_STATE "db/dpm/mode_state"
+
+using namespace std::placeholders;
+
+namespace {
+const std::string PolicyStoragePath = "/opt/dbspace/.dpm.db";
+const std::string PolicyManagerSocket = "/tmp/.device-policy-manager.sock";
+const std::string PolicyPluginBase = PLUGIN_INSTALL_DIR;
+const std::string BootCompleted = "/tmp/.dpm-bootCompleted";
+const std::string BootString = "bootCompleted";
+
+} // namespace
+
+DevicePolicyManager::DevicePolicyManager() :
+ rmi::Service(PolicyManagerSocket)
+{
+ initPolicyStorage();
+
+ PolicyEventNotifier::init();
+
+ setPrivilegeChecker(std::bind(&DevicePolicyManager::checkPeerPrivilege, this, _1, _2));
+ setNewConnectionCallback(std::bind(&DevicePolicyManager::checkNewConnection, this, _1));
+ setCloseConnectionCallback(std::bind(&DevicePolicyManager::checkCloseConnection, this, _1));
+
+ expose(this, "", (int)(DevicePolicyManager::enroll)(std::string, uid_t));
+ expose(this, "", (int)(DevicePolicyManager::disenroll)(std::string, uid_t));
+
+ bootCompletedFile = runtime::File(BootCompleted);
+ bootCompletedFile.create(0644);
+ bootCompletedFile.close();
+}
+
+DevicePolicyManager::~DevicePolicyManager()
+{
+ if (policyApplyThread.joinable())
+ policyApplyThread.join();
+
+ try {
+ if (bootCompletedFile.exists()) {
+ bootCompletedFile.remove();
+ }
+ } catch (std::exception &e) {
+ ERROR(DPM, e.what());
+ }
+}
+
+std::pair<int, int> DevicePolicyManager::loadPolicyPlugins()
+{
+ runtime::File folder(PolicyPluginBase);
+ if (!folder.exists() || !folder.isDirectory())
+ throw runtime::Exception("No exist plugin directories.");
+
+ policyLoader.reset(new PolicyLoader(PolicyPluginBase));
+
+ int passed = 0, failed = 0;
+ runtime::DirectoryIterator iter(PolicyPluginBase), end;
+ while (iter != end) {
+ if (!iter->isFile()) {
+ ++iter;
+ continue;
+ }
+
+ auto instance = policyLoader->instantiate(iter->getName(), *this);
+ if (instance == nullptr) {
+ ERROR(DPM, "Failed to instantiate.: " << iter->getName());
+ ++failed;
+ ++iter;
+ continue;
+ }
+
+ policyList.push_back(instance);
+ ++passed;
+ ++iter;
+ }
+ DEBUG(DPM, "Finished load policy-plugins: " <<
+ "passed: " << passed << ", " <<
+ "failed: " << failed);
+
+ return std::make_pair(passed, failed);
+}
+
+void DevicePolicyManager::initPolicyStorage()
+{
+ SQLBackend *backend = new SQLBackend();
+
+ if (backend->open(PolicyStoragePath)) {
+ throw runtime::Exception("Policy storage I/O error");
+ }
+
+ PolicyStorage::setBackend(backend);
+ DEBUG(DPM, "Success to init policy-storage.");
+
+ int mode = 0;
+ if(loadManagedClients() > 0) {
+ mode = 1;
+ }
+
+ if(::vconf_set_bool(VCONFKEY_DPM_MODE_STATE, mode) != 0) {
+ DEBUG(DPM, "VCONFKEY_DPM_MODE_STATE set failed.");
+ }
+}
+
+void DevicePolicyManager::applyPolicies()
+{
+ policyApplyThread = std::thread(
+ [this]() {
+ PolicyStorage::notify();
+
+ if (bootCompletedFile.exists()) {
+ bootCompletedFile.open(O_WRONLY);
+ bootCompletedFile.lock();
+ bootCompletedFile.write(BootString.c_str(), BootString.length());
+ bootCompletedFile.unlock();
+ bootCompletedFile.close();
+ }
+ });
+}
+
+bool DevicePolicyManager::getMaintenanceMode()
+{
+ return loadManagedClients() > 0 ? true : false;
+}
+
+void DevicePolicyManager::run(int activation, int timeout)
+{
+ do {
+ start(activation, timeout);
+ timeout = -1;
+ } while (getMaintenanceMode());
+}
+
+int DevicePolicyManager::enroll(const std::string& name, uid_t uid)
+{
+ int ret = PolicyStorage::enroll(name, uid);
+ if(ret == 0) {
+ if(::vconf_set_bool(VCONFKEY_DPM_MODE_STATE, 1) != 0) {
+ DEBUG(DPM, "VCONFKEY_DPM_MODE_STATE set failed.");
+ }
+ }
+ return ret;
+}
+
+int DevicePolicyManager::disenroll(const std::string& name, uid_t uid)
+{
+ int ret = PolicyStorage::unenroll(name, uid);
+ if(ret == 0) {
+ if(loadManagedClients() == 0) {
+ if(::vconf_set_bool(VCONFKEY_DPM_MODE_STATE, 0) != 0) {
+ DEBUG(DPM, "VCONFKEY_DPM_MODE_STATE set failed.");
+ }
+ stop();
+ }
+ }
+ return ret;
+}
+
+int DevicePolicyManager::loadManagedClients()
+{
+ return PolicyStorage::fetchDomains().size();
+}
+
+bool DevicePolicyManager::checkPeerPrivilege(const rmi::Credentials& cred, const std::string& privilege)
+{
+ if (!privilege.empty()) {
+ cynara *p_cynara;
+
+ if (::cynara_initialize(&p_cynara, NULL) != CYNARA_API_SUCCESS) {
+ ERROR(DPM, "Failure in cynara API");
+ return false;
+ }
+
+ if (::cynara_check(p_cynara, cred.security.c_str(), "",
+ std::to_string(cred.uid).c_str(),
+ privilege.c_str()) != CYNARA_API_ACCESS_ALLOWED) {
+ ::cynara_finish(p_cynara);
+ ERROR(DPM, "Access denied: " + cred.security + " : " + privilege);
+ return false;
+ }
+
+ ::cynara_finish(p_cynara);
+ }
+
+ return true;
+}
+
+bool DevicePolicyManager::checkNewConnection(const rmi::Connection& connection)
+{
+ auto pid = (connection.getPeerCredentials()).pid;
+ if(clientRegistry.count(pid)) {
+ if(clientRegistry[pid] >= MAX_CLIENT_CONNECTIONS) {
+ return false;
+ } else {
+ clientRegistry[pid]++;
+ }
+ } else {
+ clientRegistry.emplace(pid, 1);
+ }
+
+ return true;
+}
+
+bool DevicePolicyManager::checkCloseConnection(const rmi::Connection& connection)
+{
+ auto pid = (connection.getPeerCredentials()).pid;
+ if(clientRegistry.count(pid)) {
+ clientRegistry[pid]--;
+ if(clientRegistry[pid] == 0) {
+ clientRegistry.erase(pid);
+ }
+ }
+
+ return true;
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DEVICE_POLICY_MANAGER_H__
+#define __DEVICE_POLICY_MANAGER_H__
+
+#include <string>
+#include <memory>
+#include <vector>
+#include <utility>
+
+#include <vconf.h>
+
+#include <klay/filesystem.h>
+#include <klay/file-descriptor.h>
+#include <klay/rmi/service.h>
+
+#include "plugin.h"
+#include "sql-backend.h"
+
+#define MAX_CLIENT_CONNECTIONS 10
+
+class DevicePolicyManager : public rmi::Service {
+public:
+ DevicePolicyManager();
+ ~DevicePolicyManager();
+
+ int loadManagedClients();
+ std::pair<int, int> loadPolicyPlugins();
+ void applyPolicies();
+
+ void run(int activation, int timeout);
+
+private:
+ void initPolicyStorage();
+
+ int enroll(const std::string& name, uid_t uid);
+ int disenroll(const std::string& name, uid_t uid);
+
+ bool checkPeerPrivilege(const rmi::Credentials& cred, const std::string& privilege);
+ bool checkNewConnection(const rmi::Connection& connection);
+ bool checkCloseConnection(const rmi::Connection& connection);
+
+ bool getMaintenanceMode();
+
+private:
+ typedef std::unordered_map<int, int> ClientRegistry;
+ ClientRegistry clientRegistry;
+
+ std::vector<AbstractPolicyProvider *> policyList;
+ std::unique_ptr<PolicyLoader> policyLoader;
+ std::thread policyApplyThread;
+
+ runtime::File bootCompletedFile;
+};
+
+#endif //__DEVICE_POLICY_MANAGER_H__
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include <klay/exception.h>
+#include <klay/db/query-builder.h>
+
+#include "pil/logger.h"
+
+#include "sql-backend.h"
+#include "db-schema.h"
+
+using namespace query_builder;
+using namespace schema;
+
+namespace {
+
+auto admin = make_table("admin",
+ make_column("id", &Admin::id),
+ make_column("pkg", &Admin::pkg),
+ make_column("uid", &Admin::uid),
+ make_column("key", &Admin::key),
+ make_column("removable", &Admin::removable));
+
+auto managedPolicy = make_table("managed_policy",
+ make_column("id", &ManagedPolicy::id),
+ make_column("aid", &ManagedPolicy::aid),
+ make_column("pid", &ManagedPolicy::pid),
+ make_column("value", &ManagedPolicy::value));
+
+auto policyDefinition = make_table("policy_definition",
+ make_column("id", &PolicyDefinition::id),
+ make_column("scope", &PolicyDefinition::scope),
+ make_column("name", &PolicyDefinition::name),
+ make_column("ivalue", &PolicyDefinition::ivalue));
+
+auto dpm = make_database("dpm", admin, managedPolicy, policyDefinition);
+
+} // anonymous namespace
+
+int SQLBackend::open(const std::string& path)
+{
+ try {
+ database.reset(new database::Connection(path, database::Connection::ReadWrite |
+ database::Connection::Create));
+ return 0;
+ } catch (runtime::Exception& e) {
+ ERROR(DPM, e.what());
+ }
+
+ return -1;
+}
+
+void SQLBackend::close()
+{
+ database.reset();
+}
+
+int SQLBackend::define(const std::string& name, DataSetInt& value)
+{
+ int id = -1;
+ std::string query = policyDefinition.select(&PolicyDefinition::id,
+ &PolicyDefinition::ivalue)
+ .where(expr(&PolicyDefinition::name) == name);
+ database::Statement stmt(*database, query);
+
+ stmt.bind(1, name);
+ if (stmt.step()) {
+ id = stmt.getColumn(0);
+ value = stmt.getColumn(1);
+ }
+
+ return id;
+}
+
+bool SQLBackend::strictize(int id, DataSetInt& value, uid_t domain)
+{
+ bool updated = false;
+ std::string query = dpm.select(&ManagedPolicy::value)
+ .join<PolicyDefinition>()
+ .on(expr(&ManagedPolicy::pid) == expr(&PolicyDefinition::id))
+ .join<Admin>()
+ .on(expr(&ManagedPolicy::aid) == expr(&Admin::id))
+ .where(expr(&ManagedPolicy::pid) == id);
+
+ if (domain) {
+ query += "AND admin.uid = ? ";
+ }
+
+ database::Statement stmt(*database, query);
+ stmt.bind(1, id);
+ if (domain) {
+ stmt.bind(2, static_cast<int>(domain));
+ }
+
+ while (stmt.step()) {
+ updated = value.strictize(DataSetInt(stmt.getColumn(0)));
+ }
+
+ return updated;
+}
+
+void SQLBackend::update(int id, const std::string& name, uid_t domain, const DataSetInt& value)
+{
+ int uid = static_cast<int>(domain);
+ std::string selectQuery = admin.select(&Admin::id).where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+ database::Statement stmt0(*database, selectQuery);
+ stmt0.bind(1, name);
+ stmt0.bind(2, uid);
+ if (!stmt0.step()) {
+ throw runtime::Exception("Unknown device admin client: " + name);
+ }
+
+ int aid = stmt0.getColumn(0);
+
+ std::string updateQuery = managedPolicy.update(&ManagedPolicy::value)
+ .where(expr(&ManagedPolicy::pid) == id &&
+ expr(&ManagedPolicy::aid) == aid);
+ database::Statement stmt(*database, updateQuery);
+ stmt.bind(1, value);
+ stmt.bind(2, id);
+ stmt.bind(3, aid);
+ if (!stmt.exec()) {
+ throw runtime::Exception("Failed to update policy");
+ }
+}
+
+int SQLBackend::enroll(const std::string& name, uid_t domain)
+{
+ int uid = static_cast<int>(domain);
+ std::string selectQuery = admin.selectAll().where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+ database::Statement stmt0(*database, selectQuery);
+ stmt0.bind(1, name);
+ stmt0.bind(2, uid);
+ if (stmt0.step())
+ return 0;
+
+ std::string key = "Not supported";
+
+ std::string insertQuery = admin.insert(&Admin::pkg, &Admin::uid,
+ &Admin::key, &Admin::removable);
+ database::Statement stmt(*database, insertQuery);
+ stmt.bind(1, name);
+ stmt.bind(2, uid);
+ stmt.bind(3, key);
+ stmt.bind(4, true);
+ if (!stmt.exec())
+ return -1;
+
+ return 0;
+}
+
+int SQLBackend::unenroll(const std::string& name, uid_t domain)
+{
+ int uid = static_cast<int>(domain);
+ std::string query = admin.remove().where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+ database::Statement stmt(*database, query);
+ stmt.bind(1, name);
+ stmt.bind(2, uid);
+ if (!stmt.exec())
+ return -1;
+
+ return 0;
+}
+
+std::vector<uid_t> SQLBackend::fetchDomains()
+{
+ std::vector<uid_t> managedDomains;
+ std::string query = admin.select(distinct(&Admin::uid));
+ database::Statement stmt(*database, query);
+ while (stmt.step()) {
+ managedDomains.push_back(stmt.getColumn(0).getInt());
+ }
+
+ return managedDomains;
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_SQL_BACKEND_H__
+#define __DPM_SQL_BACKEND_H__
+#include <memory>
+#include <vector>
+
+#include <klay/exception.h>
+#include <klay/db/connection.h>
+#include <klay/db/statement.h>
+#include <klay/db/column.h>
+
+#include "pil/policy-storage.h"
+
+class SQLBackend : public PolicyStorageBackend {
+public:
+ int open(const std::string& location);
+ void close();
+
+ int define(const std::string& name, DataSetInt& value);
+
+ bool strictize(int id, DataSetInt& value, uid_t domain);
+
+ void update(int id, const std::string& name, uid_t domain, const DataSetInt& value);
+
+ int enroll(const std::string& name, uid_t domain);
+ int unenroll(const std::string& name, uid_t domain);
+
+ std::vector<uid_t> fetchDomains();
+
+private:
+ std::shared_ptr<database::Connection> database;
+};
+
+#endif //__DPM_SQL_BACKEND_H__
--- /dev/null
+# Copyright (c) 2017 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
+#
+
+SET(DPM_TEST_TARGET "dpm-test")
+SET(DPM_TEST_SRCS main.cpp
+ test-pil.cpp
+ test-server.cpp
+ test-query.cpp)
+
+PKG_CHECK_MODULES(${DPM_TEST_TARGET}_DEP REQUIRED klay glib-2.0 gio-2.0 vconf aul)
+
+INCLUDE_DIRECTORIES(SYSTEM ${${DPM_TEST_TARGET}_DEP_INCLUDE_DIRS}
+ ${CMAKE_SOURCE_DIR}/src)
+
+ADD_EXECUTABLE(${DPM_TEST_TARGET} ${DPM_TEST_SRCS})
+
+TARGET_LINK_LIBRARIES(${DPM_TEST_TARGET} ${${DPM_TEST_TARGET}_DEP_LIBRARIES}
+ dpm-server
+ dpm-pil)
+
+SET_TARGET_PROPERTIES(${DPM_TEST_TARGET} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${DPM_TEST_TARGET} PROPERTIES LINK_FLAGS "-pie")
+
+INSTALL(TARGETS ${DPM_TEST_TARGET}
+ DESTINATION bin
+ PERMISSIONS OWNER_READ
+ OWNER_WRITE
+ OWNER_EXECUTE
+ GROUP_READ
+ GROUP_EXECUTE
+ WORLD_READ
+ WORLD_EXECUTE)
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#include <klay/testbench.h>
+
+int main(int /*argc*/, char** /*argv*/)
+{
+ testbench::Testbench::runAllTestSuites();
+
+ return 0;
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 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
+ */
+
+#include "pil/policy-event.h"
+#include "pil/policy-client.h"
+
+#include <klay/testbench.h>
+
+#include <klay/gmainloop.h>
+
+#include <string>
+#include <memory>
+#include <thread>
+#include <chrono>
+
+namespace {
+
+const std::string TEST_PIL_EVENT_NAME = "EVENT_NAME";
+const std::string TEST_PIL_EVENT_STATE = "EVENT_STATE";
+std::string TEST_PIL_EVENT_DATA = "EVENT_DATA";
+
+} // anonymous namespace
+
+TESTCASE(PIL_EVENT)
+{
+ ScopedGMainLoop mainloop;
+
+ //TODO: handle should be created by dpm_manager_create()
+ std::unique_ptr<DevicePolicyClient> handle(
+ []() -> DevicePolicyClient* {
+ DevicePolicyClient* client = new DevicePolicyClient();
+
+ if (client == nullptr)
+ return nullptr;
+
+ return client;
+ }());
+ TEST_EXPECT(true, handle != nullptr);
+
+ DevicePolicyClient &client = GetDevicePolicyClient(static_cast<void*>(handle.get()));
+
+ bool isCalled = false;
+ auto onEvent = [&isCalled](const char* name, const char* state, void* data) {
+ isCalled = true;
+ auto receivedData = static_cast<std::string*>(data);
+ std::cout << "Signal caught. name = " << name << ", state : " << state
+ << ", data : " << *receivedData << std::endl;
+ };
+
+ client.subscribeSignal(TEST_PIL_EVENT_NAME, onEvent,
+ static_cast<void*>(&TEST_PIL_EVENT_DATA));
+
+ PolicyEventNotifier::create(TEST_PIL_EVENT_NAME);
+ PolicyEventNotifier::emit(TEST_PIL_EVENT_NAME, TEST_PIL_EVENT_STATE);
+
+ std::this_thread::sleep_for(std::chrono::seconds(1));
+ TEST_EXPECT(true, isCalled);
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 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
+ */
+
+#include "server/db-schema.h"
+
+#include <klay/testbench.h>
+
+#include <klay/db/query-builder.h>
+
+using namespace query_builder;
+using namespace schema;
+
+namespace {
+
+auto admin = make_table("admin",
+ make_column("id", &Admin::id),
+ make_column("pkg", &Admin::pkg),
+ make_column("uid", &Admin::uid),
+ make_column("key", &Admin::key),
+ make_column("removable", &Admin::removable));
+
+auto managedPolicy = make_table("managed_policy",
+ make_column("id", &ManagedPolicy::id),
+ make_column("aid", &ManagedPolicy::aid),
+ make_column("pid", &ManagedPolicy::pid),
+ make_column("value", &ManagedPolicy::value));
+
+auto policyDefinition = make_table("policy_definition",
+ make_column("id", &PolicyDefinition::id),
+ make_column("scope", &PolicyDefinition::scope),
+ make_column("name", &PolicyDefinition::name),
+ make_column("ivalue", &PolicyDefinition::ivalue));
+
+auto dpm = make_database("dpm", admin, managedPolicy, policyDefinition);
+
+} // anonymous namespace
+
+TESTCASE(DEFINE)
+{
+ std::string name;
+ std::string query = policyDefinition.select(&PolicyDefinition::id,
+ &PolicyDefinition::ivalue)
+ .where(expr(&PolicyDefinition::name) == name);
+
+ std::string expect = "SELECT id, ivalue FROM policy_definition WHERE name = ?";
+
+ TEST_EXPECT(expect, query);
+}
+
+TESTCASE(STRICTIZE)
+{
+ int id = 0;
+ std::string query = dpm.select(&ManagedPolicy::value)
+ .join<PolicyDefinition>()
+ .on(expr(&ManagedPolicy::pid) == expr(&PolicyDefinition::id))
+ .join<Admin>()
+ .on(expr(&ManagedPolicy::aid) == expr(&Admin::id))
+ .where(expr(&ManagedPolicy::pid) == id);
+
+ std::string expect = "SELECT managed_policy.value FROM managed_policy " \
+ "INNER JOIN policy_definition ON managed_policy.pid = policy_definition.id " \
+ "INNER JOIN admin ON managed_policy.aid = admin.id " \
+ "WHERE managed_policy.pid = ?";
+
+ TEST_EXPECT(expect, query);
+}
+
+TESTCASE(UPDATE)
+{
+ std::string name;
+ int uid = 0;
+ std::string selectQuery = admin.select(&Admin::id).where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+
+ std::string selectExpect = "SELECT id FROM admin WHERE pkg = ? AND uid = ?";
+
+ TEST_EXPECT(selectExpect, selectQuery);
+
+ int id = 0, aid = 0;
+ std::string updateQuery = managedPolicy.update(&ManagedPolicy::value)
+ .where(expr(&ManagedPolicy::pid) == id &&
+ expr(&ManagedPolicy::aid) == aid);
+
+ std::string updateExpect = "UPDATE managed_policy SET value = ? WHERE pid = ? AND aid = ?";
+
+ TEST_EXPECT(updateExpect, updateQuery);
+}
+
+TESTCASE(ENROLL)
+{
+ std::string name;
+ int uid = 0;
+ std::string selectQuery = admin.selectAll().where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+
+ std::string selectExpect = "SELECT * FROM admin WHERE pkg = ? AND uid = ?";
+
+ TEST_EXPECT(selectExpect, selectQuery);
+
+ std::string insertQuery = admin.insert(&Admin::pkg, &Admin::uid,
+ &Admin::key, &Admin::removable);
+
+ std::string insertExpect = "INSERT INTO admin (pkg, uid, key, removable) VALUES (?, ?, ?, ?)";
+
+ TEST_EXPECT(insertExpect, insertQuery);
+}
+
+TESTCASE(UNENROLL)
+{
+ std::string name;
+ int uid = 0;
+ std::string query = admin.remove().where(expr(&Admin::pkg) == name &&
+ expr(&Admin::uid) == uid);
+
+ std::string expect = "DELETE FROM admin WHERE pkg = ? AND uid = ?";
+
+ TEST_EXPECT(expect, query);
+}
+
+TESTCASE(FETCH_DOMAIN)
+{
+ std::string query = admin.select(distinct(&Admin::uid));
+
+ std::string expect = "SELECT DISTINCT uid FROM admin";
+
+ TEST_EXPECT(expect, query);
+}
--- /dev/null
+/*
+ * Copyright (c) 2019 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
+ */
+
+#include "server/server.h"
+
+#include <klay/testbench.h>
+
+TESTCASE(LOAD_PLUGINS)
+{
+ DevicePolicyManager manager;
+ auto result = manager.loadPolicyPlugins();
+ TEST_EXPECT(true, result.first > 0);
+ TEST_EXPECT(true, result.second == 0);
+}
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+ADD_SUBDIRECTORY(cli)
+ADD_SUBDIRECTORY(syspopup)
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+SET(DPM_ADMIN_CLI_TARGET "dpm-admin-cli")
+SET(DPM_SYSPOPUP_TARGET "dpm-syspopup")
+SET(DPM_PREFERENCE_TARGET "dpm-storage-builder")
+
+SET(DPM_ADMIN_CLI_SOURCES dpm-admin-cli.cpp)
+
+PKG_CHECK_MODULES(DPM_ADMIN_CLI_TARGET_DEP REQUIRED vconf)
+
+ADD_EXECUTABLE(${DPM_ADMIN_CLI_TARGET} ${DPM_ADMIN_CLI_SOURCES})
+
+INCLUDE_DIRECTORIES(SYSTEM ${CMAKE_SOURCE_DIR}/src
+ ${DPM_ADMIN_CLI_TARGET_DEP_INCLUDE_DIRS})
+
+TARGET_LINK_LIBRARIES(${DPM_ADMIN_CLI_TARGET} dpm-pil)
+
+SET_TARGET_PROPERTIES(${DPM_ADMIN_CLI_TARGET} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${DPM_ADMIN_CLI_TARGET} PROPERTIES LINK_FLAGS "-pie")
+
+INSTALL(FILES ${DPM_PREFERENCE_TARGET} DESTINATION bin)
+INSTALL(FILES ${DPM_SYSPOPUP_TARGET} DESTINATION bin)
+INSTALL(TARGETS ${DPM_ADMIN_CLI_TARGET} DESTINATION bin)
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <getopt.h>
+
+#include <memory>
+#include <string>
+
+#include "pil/status.h"
+#include "pil/policy-client.h"
+
+static void usage()
+{
+ std::cout << "Usage: dpm-admin-cli [option] [app id] -u [user name]\n"
+ << "Options:\n"
+ << " -d --deregister pkgid : Deregister device administrator\n"
+ << " -u --user username : Specify user name that the device administrator is associted\n"
+ << " -h --help : print usage\n"
+ << "\n"
+ << "Note:\n"
+ << " To register/deregister device administrator, "
+ << "you should specify user name that the device admin client is associated.\n"
+ << " Ex.: dpm-admin-cli -r org.tizen.dpm -u owner\n"
+ << std::endl;
+}
+
+static int registerAdministrator(const std::string& pkgname, uid_t uid)
+{
+ try {
+ DevicePolicyClient client;
+
+ Status<int> status { -1 };
+ status = client.methodCallForce<int>("DevicePolicyManager::enroll", pkgname, uid);
+ return status.get();
+ } catch (...) {
+ std::cerr << "Failed to enroll device" << std::endl;
+ return -1;
+ }
+}
+
+static int deregisterAdministrator(const std::string& pkgname, uid_t uid)
+{
+ try {
+ DevicePolicyClient client;
+
+ Status<int> status { -1 };
+ status = client.methodCallForce<int>("DevicePolicyManager::disenroll", pkgname, uid);
+ return status.get();
+ } catch (...) {
+ std::cerr << "Failed to disenroll device" << std::endl;
+ return -1;
+ }
+}
+
+static int getUID(const std::string& username)
+{
+ struct passwd pwd, *result;
+
+ int bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
+ if (bufsize == -1)
+ bufsize = 16384;
+
+ std::unique_ptr<char[]> buf(new char[bufsize]);
+ int ret = ::getpwnam_r(username.c_str(), &pwd, buf.get(), bufsize, &result);
+ if (ret != 0 || result == NULL) {
+ std::cout << "User " << username << " isn't exist" << std::endl;
+ return -1;
+ }
+
+ return (int)result->pw_uid;
+}
+
+enum Command {
+ NotSpecified,
+ RegisterAdministrator,
+ DeregisterAdministrator
+};
+
+int main(int argc, char *argv[])
+{
+ Command command = NotSpecified;
+
+ struct option options[] = {
+ {"register", required_argument, 0, 'r'},
+ {"deregister", required_argument, 0, 'd'},
+ {"user", required_argument, 0, 'u'},
+ {"help", no_argument, 0, 'h'},
+ {0, 0, 0, 0 }
+ };
+
+ char* username = NULL;
+ char* pkgname = NULL;
+
+ int index, opt;
+ while ((opt = getopt_long(argc, argv, "r:d:u:h", options, &index)) != -1) {
+ switch(opt) {
+ case 'r':
+ command = RegisterAdministrator;
+ pkgname = optarg;
+ break;
+ case 'd':
+ command = DeregisterAdministrator;
+ pkgname = optarg;
+ break;
+ case 'u':
+ username = optarg;
+ break;
+ case 'h':
+ usage();
+ return 0;
+ default:
+ usage();
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ if (username == NULL) {
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ int uid = getUID(username);
+ if (uid == -1) {
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ switch (command) {
+ case RegisterAdministrator:
+ return registerAdministrator(pkgname, static_cast<uid_t>(uid));
+ case DeregisterAdministrator:
+ return deregisterAdministrator(pkgname, static_cast<uid_t>(uid));
+ default:
+ usage();
+ }
+
+ return EXIT_FAILURE;
+}
--- /dev/null
+#! /bin/bash
+
+PATH=/usr/bin:/bin/usr/sbin:/sbin
+
+DB_PATH="/opt/dbspace/.dpm.db"
+JOURNAL_PATH="/opt/dbspace/.dpm.db-journal"
+
+if [[ -f ${DB_PATH} && -f ${JOURNAL_PATH} ]]; then
+ exit 0
+fi
+
+rm -f ${DB_PATH} ${JOURNAL_PATH}
+
+sqlite3 ${DB_PATH} \
+"CREATE TABLE IF NOT EXISTS admin ( \
+ id INTEGER PRIMARY KEY AUTOINCREMENT, \
+ pkg TEXT NOT NULL, \
+ uid INTEGER, \
+ key TEXT, \
+ removable INTEGER \
+); \
+CREATE TABLE IF NOT EXISTS managed_policy ( \
+ id INTEGER PRIMARY KEY AUTOINCREMENT, \
+ aid INTEGER, \
+ pid INTEGER, \
+ value INTEGER \
+); \
+CREATE TABLE IF NOT EXISTS policy_definition ( \
+ id INTEGER PRIMARY KEY AUTOINCREMENT, \
+ scope INTEGER, \
+ name TEXT NOT NULL, \
+ ivalue INTEGER \
+); \
+CREATE TRIGGER IF NOT EXISTS prepare_storage AFTER INSERT ON admin \
+FOR EACH ROW \
+BEGIN \
+INSERT INTO managed_policy(aid, pid, value) \
+SELECT NEW.ID, policy_definition.id, policy_definition.ivalue \
+FROM policy_definition; \
+END; \
+CREATE TRIGGER IF NOT EXISTS remove_storage AFTER DELETE ON admin \
+FOR EACH ROW \
+BEGIN \
+DELETE FROM managed_policy WHERE managed_policy.aid = OLD.ID; \
+END; \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-history', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-minimum-length', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-minimum-complexity', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-inactivity-timeout', 32767); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-expired', 32767); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-maximum-failure-count', 32767); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-numeric-sequences-length', 32767); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-maximum-character-occurrences', 32767); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-quality', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-recovery', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'password-pattern', ''); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'browser', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (1, 'clipboard', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth-tethering', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth-desktop-connectivity', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth-pairing', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth-uuid-restriction', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'bluetooth-device-restriction', 0); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'camera', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'external-storage', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'location', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'messaging', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'microphone', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'popimap-email', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'usb-debugging', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'usb-tethering', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'usb-client', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'wifi', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'wifi-hotspot', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'wifi-profile-change', 1); \
+INSERT INTO policy_definition(scope, name, ivalue) VALUES (0, 'wifi-ssid-restriction', 0);"
+
--- /dev/null
+#!/bin/bash
+PATH="/usr/bin:/bin:/usr/sbin:/sbin"
+
+dbus-send --system --type=method_call --print-reply --dest=org.tizen.DevicePolicyManager \
+ /org/tizen/DevicePolicyManager/Syspopup \
+ org.tizen.DevicePolicyManager.Syspopup.show \
+ string:${1}
+
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(org.tizen.dpm-syspopup C)
+
+FIND_PACKAGE(PkgConfig REQUIRED)
+PKG_CHECK_MODULES(dpm_syspopup_pkgs REQUIRED
+ klay
+ dlog
+ glib-2.0
+ bundle
+ elementary
+ capi-appfw-application
+ capi-system-system-settings
+ capi-ui-efl-util
+ notification
+ vconf
+ capi-system-info
+)
+
+INCLUDE_DIRECTORIES(${dpm_syspopup_pkgs_INCLUDE_DIRS} ${DPM_LIBS})
+LINK_DIRECTORIES(${dpm_syspopup_pkgs_LIBRARY_DIRS})
+
+SET(PKG_NAME "${PROJECT_NAME}")
+SET(PKG_SRC src/main.cpp
+ src/application.cpp
+ src/interface.cpp)
+
+SET(PKG_POPUP_SRC
+ src/popup/bluetooth.cpp
+ src/popup/browser.cpp
+ src/popup/camera.cpp
+ src/popup/clipboard.cpp
+ src/popup/krate-create.cpp
+ src/popup/krate-remove.cpp
+ src/popup/location.cpp
+ src/popup/message-retrieving.cpp
+ src/popup/message-sending.cpp
+ src/popup/microphone.cpp
+ src/popup/nfc.cpp
+ src/popup/package-installation.cpp
+ src/popup/package-uninstallation.cpp
+ src/popup/password.cpp
+ src/popup/popimap-email.cpp
+ src/popup/screen-capture.cpp
+ src/popup/settings-changes.cpp
+ src/popup/wifi.cpp
+ src/popup/wifi-hotspot.cpp
+ src/popup/usb-client.cpp
+ src/popup/external-storage.cpp
+ )
+
+SET(PKG_UI_SRC
+ src/ui/widget.cpp
+ src/ui/popup.cpp
+ src/ui/window.cpp
+ src/ui/button.cpp
+ src/ui/layout.cpp
+ src/ui/image.cpp
+ src/ui/notification.cpp
+ src/ui/appcontrol.cpp)
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
+
+ADD_EXECUTABLE(${PKG_NAME} ${PKG_SRC} ${PKG_POPUP_SRC} ${PKG_UI_SRC})
+INSTALL(TARGETS ${PKG_NAME} DESTINATION ${APP_INSTALL_PREFIX}/${PKG_NAME}/bin)
+
+TARGET_LINK_LIBRARIES(${PKG_NAME} ${dpm_syspopup_pkgs_LIBRARIES})
+
+#Install app data
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKG_NAME}.xml DESTINATION ${APP_SHARE_PACKAGES_DIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/${PKG_NAME}.png DESTINATION /usr/share/icons/default/small)
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/images/ DESTINATION ${APP_INSTALL_PREFIX}/${PKG_NAME}/res/images FILES_MATCHING PATTERN "*.png")
+
+# i18n
+ADD_SUBDIRECTORY(po)
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_" />
+ </request>
+</manifest>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="org.tizen.dpm-syspopup" version="1.0.0">
+ <profile name="mobile"/>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/notification</privilege>
+ <privilege>http://tizen.org/privilege/window.priority.set</privilege>
+ </privileges>
+ <ui-application appid="org.tizen.dpm-syspopup" exec="/usr/apps/org.tizen.dpm-syspopup/bin/org.tizen.dpm-syspopup" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+ <label>dpm-syspopup</label>
+ </ui-application>
+</manifest>
--- /dev/null
+# for i18n
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr.po fr_CA.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_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 ${APP_INSTALL_PREFIX}/org.tizen.dpm-syspopup/res/locale/${lang}/LC_MESSAGES RENAME dpm-syspopup.mo)
+ SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "الحافظة"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "موافق"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "إلغاء"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "التقاط الشاشة"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "كلمة المرور"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "نقطة اتصال"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "تمنع سياسة الأمان استخدام مزامنة سطح المكتب."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "الكاميرا"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "تمنع سياسة الحماية استخدام %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "سياسة الأمان تقيد استخدام %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "تم تطبيق سياسة الحماية."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "سياسة الحماية سارية المفعول"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "تمنع سياسة الحماية تثبيت التطبيقات."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "تمنع سياسة الحماية تثبيت هذا التطبيق."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "تمنع سياسة الحماية إلغاء تثبيت التطبيقات."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "تمنع سياسة الحماية إلغاء تثبيت هذا التطبيق."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "يطلب نهج الأمان منك تغيير كلمة المرور"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "تُقيد سياسة الحماية استخدام الميكروفون."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "تُقيد سياسة الحماية استخدام معلومات الموقع."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "تمنع سياسة الحماية استخدام البلوتوث."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "تمنع سياسة الحماية إرسال الرسائل."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "تُقيد سياسة الحماية استرداد الرسائل."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "تمنع سياسة الأمان استخدام تطبيقات التصفح."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "تُقيد سياسة الحماية استخدام بطاقة SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "تمنع سياسة الحماية فك تشفير الهاتف."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "تمنع سياسة الحماية استخدام شبكة Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "تمنع سياسة الحماية تغيير الضبط."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "سياسة الأمان تقيد استخدام البريد الإلكتروني POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "تمنع سياسة الأمان استخدام البريد الإلكتروني POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "يقوم نهج الأمان بتقييد استخدام اتصال الكمبيوتر."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Mübadilə buferi"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Ləğv et"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekranın şəkli"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Şifrə"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Giriş Nöqtəsi"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Təhlükəsizlik siyasəti iş masasının sinxronlaşdırılmasından istifadənin qarşısını alır."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Təhlükəsizlik siyasəti %s-dan istifadənin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Təhlükəsizlik siyasəti %s istifadəsini məhdudlaşdırır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Təhlükəsizlik siyasəti tətbiq edildi."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Təhlükəs siyas qüvvədədir"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Təhlükəsizlik siyasəti proqramların quraşdırılmasının qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Təhlükəsizlik siyasəti bu proqramın quraşdırılmasının qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Təhlükəsizlik siyasəti proqramların pozulmasının qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Təhlükəsizlik siyasəti bu proqramın pozulmasının qarşısını alır."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Təhlükəsizlik siyasəti parolu dəyişməyi tələb edir."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Təhlükəsizlik siyasəti mikrofondan istifadəsini məhdudlaşdırır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Təhlükəsizlik siyasəti məkan məlumatının istifadəsini məhdudlaşdırır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Təhlükəsizlik siyasəti Bluetooth-dan istifadənin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Təhlükəsizlik siyasəti mesaj göndərilməsinin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Təhlükəsizlik siyasəti mesajların əldə edilməsini məhdudlaşdırır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Təhlükəsizlik siyasəti brauzer proqramlarından istifadənin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Təhlükəsizlik siyasəti SD kartdan istifadəni məhdudlaşdırır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Təhlükəsizlik siyasəti telefonun şifrlənməsinin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Təhlükəsizlik siyasəti Wi-Fi-dan istifadənin qarşısını alır."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Təhlükəsizlik siyasəti parametrlərin dəyişdirilməsinin qarşısını alır."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Təhlükəsizlik siyasəti POP/IMAP e-poçtundan istifadəni məhdudlaşdırır."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Təhlükəsizlik siyasəti POP/IMAP e-mailindən istifadənin qarşısını alır."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Təhlükəsizlik siyasəti kompüter bağlantısından istifadəni məhdudlaşdırır."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Системен буфер"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Отказ"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Прихващане на екрана"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Парола"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Точка за достъп"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Политиката за защита пречи на използването на настолна синхронизация."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Камера"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Политиката за защита пречи на използването на %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Политиката за защита ограничава използването на %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Политиката за защита е приложена."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Полит. за защита е в сила"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Политиката за защита пречи на инсталирането на приложения."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Политиката за защита пречи на инсталирането на това приложение."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Политиката за защита пречи на деинсталирането на приложения."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Политиката за защита пречи на деинсталирането на това приложение."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Правилата на защита изискват да промените паролата си."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Политиката за защита ограничава използването на микрофон."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Политиката за защита ограничава използването на информация за местоположението."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Политиката за защита пречи на използването на Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Политиката за защита предотвратява изпращането на съобщения."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Политиката за защита ограничава извличането на съобщения."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Политиката за защита пречи на използването на приложения за браузър."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Политиката за защита ограничава използването на SD карта."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Политиката за защита пречи на дешифрирането на телефона."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Политиката за защита пречи на използването на Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Политиката за защита пречи на промяната на настройки."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Правилата за защита ограничават използването на POP/IMAP имейл."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Политиката за защита пречи на използването на POP/IMAP имейл."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Правилата за защита ограничават използването на връзка PC връзката."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Porta-retalls"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Acceptar"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Canc"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de pantalla"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Contrasenya"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Connexió compartida"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "La política de seguretat evita l'ús de la sincronització d'escriptori"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Càmera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "La política de seguretat impedeix l'ús de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "La política de seguretat restringeix l'ús de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Política de seguretat aplicada."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Política seguretat vigent"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "La política de seguretat impedeix la instal·lació d'aplicacions."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "La política de seguretat impedeix la instal·lació d'aquesta aplicació."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "La política de seguretat impedeix la desinstal·lació d'aplicacions."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "La política de seguretat impedeix la desinstal·lació d'aquesta aplicació."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "La política de seguretat requereix que canviï la contrasenya"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "La política de seguretat restringeix l'ús del micròfon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "La política de seguretat restringeix l'ús de la informació d'ubicació."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "La política de seguretat evita l'ús de Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "La política de seguretat impedeix l'enviament de missatges."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "La política de seguretat restringeix la recuperació de missatges."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "La política de seguretat impedeix l'ús d'aplicacions del navegador."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "La política de seguretat restringeix l'ús de la targeta SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "La política de seguretat impedeix el desxifratge del telèfon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "La política de seguretat evita l'ús de Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "La política de seguretat evita els canvis d'ajustaments."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguretat restringeix l'ús de correu electrònic POP/IMAP"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguretat evita l'ús de correu electrònic POP/IMAP"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "La política de seguretat restringeix l'ús de connexió del PC"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Schránka"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Zrušit"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Kopie obrazovky"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Heslo"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Zásady zabezpečení neumožňují použití synchronizace se stolním počítačem."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Fotoap"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Zásady zabezpečení neumožňují použití %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Zásady zabezpečení omezují použití %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Zásady zabezpečení byly použity."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Zás. zabezp. v platnosti"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Zásady zabezpečení zakazují instalaci aplikací."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Zásady zabezpečení zakazují instalaci této aplikace."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Zásady zabezpečení zakazují odinstalování aplikací."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Zásady zabezpečení zakazují odinstalování této aplikace."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Zásady zabezpečení požadují, abyste změnili heslo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Zásady zabezpečení zakazují použití mikrofonu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Zásady zabezpečení omezují použití informací o poloze."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Zásady zabezpečení zakazují použití Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Zásady zabezpečení zakazují odesílání zpráv."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Zásady zabezpečení zakazují načítání zpráv."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Zásady zabezpečení zakazují použití prohlížečů."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Zásady zabezpečení zakazují použití SD karty."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Zásady zabezpečení zakazují dešifrování telefonu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Zásady zabezpečení zakazují použití Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Zásady zabezpečení zakazují měnit nastavení."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Zásady zabezpečení omezují použití e-mailu POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Zásady zabezpečení neumožňují použití e-mailu POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Zásady zabezpečení omezují použití připojení k počítači."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Udklipsholder"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Annuller"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Skærmbillede"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Adgangskode"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Sikkerhedspolitik forhindrer brug af skrivebordssynkronisering."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "En sikkerhedspolitik forhindrer brug af %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Sikkerhedspolitik begrænser brug af %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Sikkerhedspolitikken er blevet anvendt."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Sik.politikken anvendes"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Sikkerhedspolitik forhindrer installation af apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Sikkerhedspolitik forhindrer installation af denne app."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Sikkerhedspolitik forhindrer afinstallation af apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Sikkerhedspolitik forhindrer afinstallation af denne app."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Sikkerhedspolitikken kræver, at du ændrer din adgangskode."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Sikkerhedspolitik begrænser brugen af mikrofon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Sikkerhedspolitik begrænser brugen af placeringsoplysninger."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Sikkerhedspolitik forhindrer brug af Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Sikkerhedspolitik forhindrer afsendelse af beskeder."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Sikkerhedspolitik begrænser hentning af beskeder."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Sikkerhedspolitik forhindrer brug af browserapps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Sikkerhedspolitik begrænser brugen af SD-kort."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Sikkerhedspolitik forhindrer dekryptering af telefonen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Sikkerhedspolitik forhindrer brug af Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Sikkerhedspolitik forhindrer ændring af indstillinger."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sikkerhedspolitik begrænser brug af POP/IMAP e-mail."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sikkerhedspolitik forhindrer brug af POP-/IMAP-e-mail."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Sikkerhedspolitik begrænser brug af pc-forbindelsen."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Zwischenablage"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Abbrechen"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Screenshot"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Passwort"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Sicherheitsrichtlinie verhindert die Verwendung der Desktop-Synchronisierung."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Sicherheitsrichtlinie verhindert die Verwendung von %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Eine Sicherheitsrichtlinie schränkt die Verwendung von %s ein."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Sicherheitsrichtlinien angewendet."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Sicherheitsrichtlinie aktiv"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Installation von Apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Installation dieser App."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Deinstallation von Apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Deinstallation dieser App."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Die Sicherheitsrichtlinie erfordert ein Ändern Ihres Passworts."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Eine Sicherheitsrichtlinie schränkt die Verwendung des Mikrofons ein."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Eine Sicherheitsrichtlinie schränkt die Verwendung von Standortinformationen ein."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Die Sicherheitsrichtlinie verhindert die Verwendung von Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Eine Sicherheitsrichtlinie verhindert das Senden von Nachrichten."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Eine Sicherheitsrichtlinie schränkt den Empfang von Nachrichten ein."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Verwendung von Browser-Apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Eine Sicherheitsrichtlinie schränkt die Verwendung von SD-Karten ein."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Eine Sicherheitsrichtlinie verhindert die Entschlüsselung des Telefons."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Die Sicherheitsrichtlinie verhindert die Verwendung von WLAN."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Die Sicherheitsrichtlinie verhindert das Ändern der Einstellungen."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sicherheitsrichtlinie schränkt die Verwendung von POP-/IMAP-E-Mail ein."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sicherheitsrichtlinie verhindert die Verwendung von POP/IMAP-E-Mail."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Eine Sicherheitsrichtlinie schränkt die Verwendung der PC-Verbindung ein."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Πρόχειρο"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Ακύρωση"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Καταγραφή οθόνης"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Κωδικός πρόσβασης"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση συγχρονισμού επιφάνειας εργασίας."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Κάμερα"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση της εφαρμογής %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Η πολιτική ασφαλείας περιορίζει τη χρήση %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Η πολιτική ασφάλειας εφαρμόστηκε."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Η πολιτική ασφάλ. ισχύει"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την εγκατάσταση εφαρμογών."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την εγκατάσταση αυτής της εφαρμογής."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την κατάργηση εγκατάστασης εφαρμογών."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την κατάργηση εγκατάστασης αυτής της εφαρμογής."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Απαιτείται να αλλάξετε τον κωδικό πρόσβασης από την πολιτική ασφάλειας."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση του μικροφώνου."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει τη χρήση πληροφοριών τοποθεσίας."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την αποστολή μηνυμάτων."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την ανάκτηση μηνυμάτων."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει τη χρήση προγραμμάτων περιήγησης."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση της κάρτας SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Η πολιτική ασφάλειας αποτρέπει την αποκρυπτογράφηση του τηλεφώνου."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση του Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Η πολιτική ασφάλειας δεν επιτρέπει την αλλαγή των ρυθμίσεων."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Η πολιτική ασφαλείας περιορίζει τη χρήση email POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση email POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Η πολιτική ασφαλείας περιορίζει τη χρήση της σύνδεσης υπολογιστή."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Clipboard"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Screen capture"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Password"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Security policy prevents use of desktop sync."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Camera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Security policy prevents use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Security policy restricts use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Security policy applied."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Security policy in effect"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Security policy prevents installation of apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Security policy prevents installation of this app."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Security policy prevents uninstalling apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Security policy prevents uninstalling of this app."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "The security policy requires you to change your password."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Security policy restricts use of mic."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Security policy restricts use of location info."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Security policy prevents use of Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Security policy prevents sending messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Security policy restricts retrieving messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Security policy prevents use of browser apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Security policy restricts use of SD card."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Security policy prevents decryption of phone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Security policy prevents use of Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Security policy prevents changing settings."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy restricts use of POP/IMAP email."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy prevents use of POP/IMAP email."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Security policy restricts use of the PC connection."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Clipboard"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Screen capture"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Password"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Security policy prevents use of desktop sync."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Camera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Security policy prevents use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Security policy restricts use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Security policy applied."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Security policy in effect"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Security policy prevents installation of apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Security policy prevents installation of this app."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Security policy prevents uninstalling apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Security policy prevents uninstalling of this app."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "The security policy requires you to change your password."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Security policy restricts use of mic."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Security policy restricts use of location info."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Security policy prevents use of Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Security policy prevents sending messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Security policy restricts retrieving messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Security policy prevents use of browser apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Security policy restricts use of SD card."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Security policy prevents decryption of phone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Security policy prevents use of Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Security policy prevents changing settings."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy restricts the use of POP/IMAP Email."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy prevents use of POP/IMAP Email."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Security policy restricts use of the PC connection."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Clipboard"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Screen capture"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Password"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Security policy prevents use of computer sync."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Camera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Security policy prevents use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Security policy restricts use of %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Security policy applied."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Security policy in effect"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Security policy prevents installation of apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Security policy prevents installation of this app."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Security policy prevents uninstalling apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Security policy prevents uninstalling of this app."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "The security policy requires you to change your password."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Security policy restricts use of mic."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Security policy restricts use of location info."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Security policy prevents use of Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Security policy prevents sending messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Security policy restricts retrieving messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Security policy prevents use of browser apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Security policy restricts use of SD card."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Security policy prevents decryption of phone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Security policy prevents use of Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Security policy prevents changing settings."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy restricts use of POP/IMAP email."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Security policy prevents use of POP/IMAP email."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Security policy restricts use of the computer connection."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Portapapeles"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de pantalla"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Contraseña"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Conexión compartida"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "La política de seguridad impide el uso de la sincronización de escritorio."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Cámara"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "La política de seguridad impide el uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "La política de seguridad restringe el uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Se ha aplicado la política de seguridad."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Política seguridad en vigor"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "La política de seguridad impide la instalación de aplicaciones."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "La política de seguridad impide la instalación de esta aplicación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "La política de seguridad impide la desinstalación de aplicaciones."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "La política de seguridad impide la desinstalación de esta aplicación."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "La política de seguridad requiere que cambies la contraseña."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "La política de seguridad restringe el uso del micrófono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "La política de seguridad restringe el uso de información de ubicación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "La política de seguridad impide el uso de Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "La política de seguridad impide el envío de mensajes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "La política de seguridad restringe la recuperación de mensajes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "La política de seguridad impide el uso de aplicaciones de navegador."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "La política de seguridad restringe el uso de tarjeta SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "La política de seguridad impide el descifrado del teléfono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "La política de seguridad impide el uso de Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "La política de seguridad impide que se cambien los ajustes."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguridad restringe el uso de correo electrónico POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguridad impide el uso del correo electrónico POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "La política de seguridad restringe el uso de conexión del PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Portapapeles"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de pantalla"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Contraseña"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Zona portátil"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "La política de seguridad impide el uso de sincronización de escritorio."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Cámara"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "La política de seguridad impide el uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "La política de seguridad restringe el uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Se aplicó la política de seguridad."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Política seguridad en vigor"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "La política de seguridad impide la instalación de aplicaciones."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "La política de seguridad impide la instalación de esta aplicación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "La política de seguridad impide la desinstalación de aplicaciones."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "La política de seguridad impide la desinstalación de esta aplicación."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "La política de seguridad requiere que cambie su contraseña."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "La política de seguridad restringe el uso del micrófono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "La política de seguridad restringe el uso de información de ubicación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "La política de seguridad impide el uso de Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "La política de seguridad impide el envío de mensajes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "La política de seguridad restringe la recuperación de mensajes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "La política de seguridad impide el uso de aplicaciones de navegación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "La política de seguridad restringe el uso de la tarjeta de memoria."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "La política de seguridad impide desencriptar el teléfono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "La política de seguridad impide el uso de Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "La política de seguridad impide que se cambie la configuración."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguridad restringe el uso de correo POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La política de seguridad impide el uso de correo POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "La política de seguridad restringe el uso de la conexión a la PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Lõikelaud"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Tühista"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekraani jäädvustamine"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Parool"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Kuumkoht"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Turvalisuse poliis takistab toolaua sunkroonimise kasutamist."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kaam."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Turvalisuse poliis takistab rakenduse %s kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Turvalisuse poliis piirab üksuse %s kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Turvalisuse poliis on rakendatud."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Turvalisuse poliis kehtib"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Turvalisuse poliis ei lase rakendusi installida."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Turvalisuse poliis ei lase seda rakendust installida."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Turvalisuse poliis ei lase rakendusi desinstallida."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Turvalisuse poliis ei lase seda rakendust desinstallida."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Turvalisuse poliis nouab, et muudaksite oma parooli."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Turvalisuse poliis piirab mikrofoni kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Turvalisuse poliis piirab asukohateabe kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Turvalisuse poliis takistab Bluetooth-ühenduse kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Turvalisuse poliis ei lase sõnumeid saata."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Turvalisuse poliis piirab sõnumite vastuvõtmist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Turvalisuse poliis ei lase brauserirakendusi kasutada."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Turvalisuse poliis piirab SD-kaardi kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Turvalisuse poliis ei luba telefoni dekrüptida."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Turvalisuse poliis takistab Wi-Fi kasutamist."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Turvalisuse poliis takistab seadete muutmist."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Turvalisuse poliis piirab POP/IMAP e-posti kasutuse."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Turvalisuse poliis takistab POP/IMAP e-posti kasutamist."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Turvalisuse poliis piirab arvutiuhenduse kasutuse."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Arbela"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Ados"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Utzi"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Pantaila kaptura"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Pasahitza"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Segurtasun politikak idazmahai sinkronizazioaren erabilera galarazten du"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Segurtasun politikak %s erabilera galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Segurtasun politikak %s erabiltzea mugatzen du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Aplikatu da segurtasun politika."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Segurt. politika indarrean"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Segurtasun politikak aplikazio hauek instalatzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Segurtasun politikak aplikazio hau instalatzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Segurtasun politikak aplikazioak desinstalatzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Segurtasun politikak aplikazio hau desinstalatzea galarazten du."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Segurtasun politikak pasahitza alda dezazula behar du"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Segurtasun politikak mikrofonoa erabiltzeko aukera mugatzen du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Segurtasun politikak kokapen informazioa erabiltzeko aukera mugatzen du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Segurtasun jarraibideak Bluetootha erabiltzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Segurtasun politikak mezuak bidaltzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Segurtasun politikak mezuak eskuratzeko aukera mugatzen du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Segurtasun politikak nabigatzeko aplikazioak erabiltzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Segurtasun politikak SD txartela erabiltzeko aukera mugatzen du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Segurtasun politikak telefonoa desenkriptatzea saihesten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Segurtasun jarraibideak Wi-Fi erabiltzea galarazten du."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Segurtasun jarraibideak ezarpenak aldatzea galarazten du."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Segurtasun politikak POP/IMAP postaren erabilera mugatzen du"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Segurtasun politikak POP/IMAP mezularitza elektronikoaren erabilera galarazten du"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Segurtasun politikak ordenagailu konexioaren erabilera mugatzen du"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Leikepöytä"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Peruuta"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ruudunkaappaus"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Salasana"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Tukiasema"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Suojauskäytäntö estää työpöydän synkronoinnin käytön."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Suojauskäytäntö estää sovelluksen %s käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Suojauskäytäntö estää toiminnon %s käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Suojauskäytäntö otettu käyttöön."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Suojauskäytäntö voimassa"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Suojauskäytäntö estää sovellusten asennuksen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Suojauskäytäntö estää tämän sovelluksen asennuksen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Suojauskäytäntö estää sovellusten asennuksen poistamisen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Suojauskäytäntö estää tämän sovelluksen asennuksen poistamisen."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Suojauskäytäntö vaatii, että vaihdat salasanan."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Suojauskäytäntö estää mikrofonin."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Suojauskäytäntö estää sijaintitietojen käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Suojauskäytäntö estää Bluetoothin käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Suojauskäytäntö estää viestien lähettämisen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Suojauskäytäntö estää viestien haun."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Suojauskäytäntö estää selainsovellusten käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Suojauskäytäntö estää SD-kortin käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Suojauskäytäntö estää puhelimen salauksen purkamisen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Suojauskäytäntö estää Wi-Fi-yhteyden käytön."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Suojauskäytäntö estää asetusten muuttamisen."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Suojauskäytäntö estää POP/IMAP-sähköpostin käytön."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Suojauskäytäntö estää POP/IMAP-sähköpostin käytön."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Suojauskäytäntö estää tietokoneyhteyden käytön."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Presse-papier"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Capture d'écran"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Mot de passe"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Point d'accès"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "La politique de sécurité empêche l'utilisation de la synchronisation avec le bureau."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Photo"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "La politique de sécurité empêche l'utilisation de l'application %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "La politique de sécurité limite l'utilisation de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "La politique de sécurité a été appliquée."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Politique sécu. en vigueur"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "La politique de sécurité empêche l'installation des applications."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "La politique de sécurité empêche l'installation de cette application."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "La politique de sécurité empêche la désinstallation des applications."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "La politique de sécurité empêche la désinstallation de cette application."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "En raison de la politique de sécurité, vous devez modifier votre mot de passe."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "La politique de sécurité limite l'utilisation du micro."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "La politique de sécurité limite l'utilisation des informations de position."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "La politique de sécurité empêche l'utilisation du Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "La politique de sécurité empêche l'envoi de messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "La politique de sécurité empêche la récupération des messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "La politique de sécurité empêche l'utilisation des applications du navigateur."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "La politique de sécurité limite l'utilisation de la carte SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "La politique de sécurité empêche le décryptage du téléphone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "La politique de sécurité empêche l'utilisation du Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "La politique de sécurité empêche la modification des paramètres."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La politique de sécurité limite l'utilisation de la messagerie POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La politique de sécurité empêche l'utilisation de la messagerie POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "La politique de sécurité limite l'utilisation de la connexion PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Presse-papier"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Capture d'écran"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Mot de passe"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Point d'accès"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "La politique de sécurité empêche l'utilisation de la synchronisation avec le bureau."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Photo"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "La politique de sécurité empêche l'utilisation de l'application %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "La politique de sécurité limite l'utilisation de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "La politique de sécurité a été appliquée."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Politique sécu. en vigueur"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "La politique de sécurité empêche l'installation des applications."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "La politique de sécurité empêche l'installation de cette application."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "La politique de sécurité empêche la désinstallation des applications."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "La politique de sécurité empêche la désinstallation de cette application."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "En raison de la politique de sécurité, vous devez modifier votre mot de passe."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "La politique de sécurité limite l'utilisation du micro."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "La politique de sécurité limite l'utilisation des informations de position."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "La politique de sécurité empêche l'utilisation du Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "La politique de sécurité empêche l'envoi de messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "La politique de sécurité empêche la récupération des messages."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "La politique de sécurité empêche l'utilisation des applications du navigateur."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "La politique de sécurité limite l'utilisation de la carte SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "La politique de sécurité empêche le décryptage du téléphone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "La politique de sécurité empêche l'utilisation du Wifi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "La politique de sécurité empêche la modification des paramètres."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La politique de sécurité limite l'utilisation de la messagerie POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "La politique de sécurité empêche l'utilisation de la messagerie POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "La politique de sécurité limite l'utilisation de la connexion PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Gearrthaisce"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cuir ar ceal"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Gabháil scáileáin"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Pasfhocal"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Ball te"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Cuireann an beartas slándála bac ar úsáid shioncronú deisce"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Ceam."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Cuireann an beartas slándála cosc ar úsáid %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Cuireann an polasaí slándála srian ar úsáid %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Beartas slándála curtha i bhfeidhm."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Bear. slándála i bhfeidhm"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Cuireann an beartas slándála cosc ar shuiteáil feidhmchlár."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Cuireann an beartas slándála cosc ar shuiteáil an fheidhmchláir seo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Cuireann an beartas slándála cosc ar dhíshuiteáil feidhmchlár."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Cuireann an beartas slándála cosc ar dhíshuiteáil an fheidhmchláir seo."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Éilíonn an beartas slándála ort do phasfhocal a athrú"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Cuireann an beartas slándála srian ar úsáid an mhicreafóin."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Cuireann an beartas slándála srian ar úsáid faisnéis suímh."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Cuireann an beartas slándála cosc ar Bluetooth a úsáid."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Cuireann an beartas slándála cosc ar sheoladh teachtaireachtaí."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Cuireann an beartas slándála srian ar aisghabháil teachtaireachtaí."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Cuireann an beartas slándála bac ar úsáid feidhmchláir bhrabhsálaí."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Cuireann an polasaí slándála srian ar úsáid an chárta SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Cuireann an beartas slándála cosc ar dhíchriptiú an fhóin."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Cuireann an beartas slándála cosc ar Wi-Fi a úsáid."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Cuireann an beartas slándála cosc ar shocruithe a athrú."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Cuireann an beartas slándála srian ar úsáid r-phost POP/IMAP"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Cuireann an beartas slándála bac ar úsáid r-phost POP/IMAP"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Cuireann an beartas slándála srian ar nasc PC a úsáid"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Portapapeis"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de pantalla"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Contrasinal"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Zona interactiva"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "A política de seguridade impide o uso da sincronización do escritorio"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Cámara"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "A política de seguridade impide o uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "A política de seguridade limita o uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Política de seguridade aplicada."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Política seguridade"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "A política de seguridade impide a instalación de aplicacións."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "A política de seguridade impide a instalación desta aplicación."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "A política de seguridade impide a desinstalación de aplicacións."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "A política de seguridade impide a desinstalación desta aplicación."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "A política de seguridade esíxete que cambies o contrasinal"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "A política de seguridade limita o uso do micrófono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "A política de seguridade limita o uso da información de localización."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "A política de seguridade impide o uso do Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "A política de seguridade impide o envío de mensaxes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "A política de seguridade limita a recuperación de mensaxes."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "A política de seguridade impide o uso de aplicacións de navegador."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "A política de seguridade limita o uso da tarxeta SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "A política de seguridade evita o descifrado do teléfono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "A política de seguridade impide o uso da Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "A política de seguridade impide o cambio dos axustes."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de seguridade limita o uso do correo electrónico POP/IMAP"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de seguridade impide o uso do correo electrónico POP/IMAP"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "A política de seguridade limita o uso da conexión co ordenador"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "क्लिपबोर्ड"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "ओके"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "रद्द करें"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "स्क्रीन कैप्चर"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "पासवर्ड"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "हॉटस्पॉट"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "सुरक्षा नीति डेस्कटॉप सिंक के उपयोग को रोकती है"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "कैमरा"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "सुरक्षा नीति %s के उपयोग को रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "सुरक्षा नीति %s के उपयोग को प्रतिबंधित करती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "सुरक्षा नीति लागू की गई।"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "सुरक्षा नीति प्रभाव में है"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "सुरक्षा नीति एप्स की स्थापना को रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "सुरक्षा नीति इस एप की स्थापना को रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "सुरक्षा नीति एप्स की स्थापना रद्द करने से रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "सुरक्षा नीति इस एप की स्थापना रद्द करने से रोकती है।"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "सुरक्षा नीति के तहत आपका पासवर्ड बदलना आवश्यक हैं।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "सुरक्षा नीति माइक के उपयोग को प्रतिबंधित करती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "सुरक्षा नीति स्थान जानकारी के उपयोग को प्रतिबंधित करती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "सुरक्षा नीति ब्लूटूथ का उपयोग करने से रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "सुरक्षा नीति सन्देश भेजने से रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "सुरक्षा नीति सन्देश पुनर्प्राप्त करने को प्रतिबंधित करती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "सुरक्षा नीति ब्राउजर एप्स के उपयोग को रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "सुरक्षा नीति SD कार्ड के उपयोग को प्रतिबंधित करती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "सुरक्षा नीति फोन के डिक्रिप्शन को रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "सुरक्षा नीति Wi-Fi का उपयोग करने से रोकती है।"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "सुरक्षा नीति सेटिंग्स बदलने से रोकती है।"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "सुरक्षा नीति POP/IMAP ईमेल के उपयोग को प्रतिबंधित करती है।"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "सुरक्षा नीति POP/IMAP ईमेल के उपयोग को रोकती है"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "सुरक्षा नीति PC कनेक्शन का उपयोग प्रतिबंधित करती है।"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Međuspremnik"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "U redu"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Prekid"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Snimka zaslona"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Lozinka"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Pristupna točka"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Sigurnosne odredbe sprečavaju upotrebu sinkronizacije radne površine."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Sigurnosne odredbe sprečavaju upotrebu aplikacije %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Sigurnosna pravila ograničavaju upotrebu značajke %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Sigurnosna pravila primijenjena."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Sigurn. pravila na snazi"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Sigurnosna pravila sprečavaju instalaciju aplikacija."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Sigurnosna pravila sprečavaju instalaciju ove aplikacije."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Sigurnosna pravila sprečavaju deinstaliranje aplikacija."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Sigurnosna pravila sprečavaju deinstaliranje ove aplikacije."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Zbog sigurnosnih pravila morate promijeniti lozinku."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Sigurnosna pravila ograničavaju upotrebu mikrofona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Sigurnosna pravila ograničavaju uporabu podataka o lokaciji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Sigurnosna pravila sprečavaju upotrebu Bluetootha."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Sigurnosna pravila sprečavaju slanje poruka."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Sigurnosna pravila ograničavaju preuzimanje poruka."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Sigurnosna pravila sprečavaju upotrebu aplikacija preglednika."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Sigurnosna pravila ograničavaju upotrebu SD kartice."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Sigurnosna pravila sprečavaju dešifriranje telefona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Sigurnosna pravila sprečavaju upotrebu Wi-Fi-a."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Sigurnosna pravila sprečavaju promjenu postavki."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sigurnosne odredbe ograničavaju korištenje usluge POP/IMAP email."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sigurnosne odredbe sprečavaju upotrebu POP/IMAP emaila."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Sigurnosna pravila ograničavaju upotrebu računalne veze."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Vágólap"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Mégse"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Képernyőfelvétel"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Jelszó"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "A biztonsági irányelv tiltja a számítógéppel történő szinkronizálás használatát."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "A biztonsági házirend tiltja a(z) %s használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "A biztonsági házirend korlátozza a(z) %s használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "A rendszer beállította a biztonsági házirendet."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "A bizt. h.rend érvényben"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "A biztonsági házirend tiltja az alkalmazások telepítését."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "A biztonsági házirend tiltja ennek az alkalmazásnak a telepítését."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "A biztonsági házirend tiltja az alkalmazások eltávolítását."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "A biztonsági házirend tiltja ennek az alkalmazásnak az eltávolítását."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "A biztonsági irányelv a jelszó módosítását igényli."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "A biztonsági házirend korlátozza a mikrofon használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "A biztonsági házirend korlátozza a helyadatok használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "A biztonsági irányelv tiltja a Bluetooth használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "A biztonsági házirend tiltja az üzenetek küldését."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "A biztonsági házirend korlátozza az üzenetek letöltését."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "A biztonsági házirend tiltja a böngészőalkalmazások használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "A biztonsági házirend korlátozza az SD-kártya használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "A biztonsági házirend tiltja a telefon dekódolását."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "A biztonsági irányelv tiltja a Wi-Fi használatát."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "A biztonsági irányelv tiltja a beállítások módosítását."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A biztonsági irányelv korlátozza a POP/IMAP e-mail használatát."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A biztonsági irányelv tiltja a POP/IMAP e-mail használatát."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "A biztonsági irányelv korlátozza a számítógépes kapcsolat használatát."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Գզրոց"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Ընդունել"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Դադարեցնել"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Էկրանի սևեռում"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Գաղտնաբառ"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Թեժ կետ"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Անվտանգության քաղաքականությունը կանխում է աշխատասեղանի համաժամացման օգտագործումը:"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Խցիկ"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս %s-ի օգտագործում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է %s-ի օգտագործումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Անվտանգության քաղաքականությունը կիրառվեց:"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Անվտ. քղքկնթյնը գործում է"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս ծրագրերի տեղադրում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս այս ծրագրի տեղադրումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս ապատեղադրել ծրագրերը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս ապատեղադրել այս ծրագիրը:"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Անվտանգության քաղաքականությունը պահանջում է, որ փոխեք Ձեր գաղտնաբառը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է միկրոֆոնի օգտագործումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է տեղի մասին տեղեկատվության օգտագործումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս Bluetooth-ի օգտագործում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս հաղորդագրություններ ուղարկել:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է հաղորդագրությունների առբերումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս զննարկիչ ծրագրերի օգտագործում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է SD քարտի օգտագործումը:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս հեռախոսի վերծանում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս Wi-Fi-ի օգտագործում:"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս փոխել դրվածքները:"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է POP/IMAP էլփոստի օգտագործումը:"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Անվտանգության քաղաքականությունը կանխում է POP/IMAP էլփոստի օգտագործումը:"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է ԱՀ կապի օգտագործումը:"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Klippiborð"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Í lagi"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Hætta við"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Myndupptaka"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Aðgangsorð"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Aðgangsstaður"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Öryggisstefna kemur í veg fyrir notkun skjáborðssamstillingar."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Taka"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Öryggisstefna kemur í veg fyrir notkun á %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Öryggisstefna takmarkar notkun á %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Öryggisstefna notuð."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Öryggisstefna er í gildi"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Öryggisstefna kemur í veg fyrir uppsetningu forrita."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Öryggisstefna kemur í veg fyrir uppsetningu forritsins."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Öryggisstefna kemur í veg fyrir að forrit séu fjarlægð."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Öryggisstefna kemur í veg fyrir að forritið sé fjarlægt."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Öryggisstefnan krefst þess að þú breytir lykilorðinu þínu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Öryggisstefna takmarkar notkun á hljóðnema."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Öryggisstefna takmarkar notkun staðsetningarupplýsinga."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Öryggisstefnan kemur í veg fyrir notkun Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Öryggisstefna kemur í veg fyrir skilaboðasendingar."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Öryggisstefna takmarkar endurheimt skilaboða."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Öryggisstefna kemur í veg fyrir notkun vafraforrita."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Öryggisstefna takmarkar notkun SD-korts."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Öryggisstefna kemur í veg fyrir afkóðun símans."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Öryggisstefnan kemur í veg fyrir notkun Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Öryggisstefnan kemur í veg fyrir breytingar á stillingum."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Öryggisreglur takmarka notkun POP/IMAP tölvupósts."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Öryggisstefna kemur í veg fyrir notkun POP-/IMAP-tölvupósts."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Öryggisstefna takmarkar notkun tölvutengingarinnar."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Appunti"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Annulla"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Schermate acquisite"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Password"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Router"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "I criteri di protezione non consentono la sincronizzazione desktop."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Camera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "I criteri di protezione non consentono l'uso di %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "I criteri di protezione limitano l'uso di %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Criteri di protezione applicati."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Criteri protezione attivi"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "I criteri di protezione impediscono l'installazione delle applicazioni."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "I criteri di protezione impediscono l'installazione di questa applicazione."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "I criteri di protezione impediscono la disinstallazione delle applicazioni."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "I criteri di protezione impediscono la disinstallazione di questa applicazione."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "I criteri di protezione richiedono di modificare la password."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "I criteri di protezione limitano l'uso del microfono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "I criteri di protezione limitano l'uso delle informazioni sulla posizione."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "I criteri di protezione impediscono l'uso del Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "I criteri di protezione impediscono l'invio di messaggi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "I criteri di protezione limitano il recupero dei messaggi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "I criteri di protezione impediscono l'uso delle applicazioni browser."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "I criteri di protezione limitano l'uso della scheda SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "I criteri di protezione impediscono la decrittografia del dispositivo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "I criteri di protezione impediscono l'uso del Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "I criteri di protezione impediscono la modifica delle impostazioni."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "I criteri di sicurezza limitano l'uso delle e-mail POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "I criteri di protezione non consentono l'utilizzo di e-mail POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "I criteri di protezione limitano l'utilizzo della connessione del PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "クリップボード"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "キャンセル"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "画面キャプチャ"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "パスワード"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "ホットスポット"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "デスクトップ同期の使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "カメラ"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "%sの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "%sの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "セキュリティポリシーを適用しました。"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "セキュリティポリシーを適用中"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "アプリのインストールは、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "このアプリのインストールは、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "アプリのアンインストールは、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "このアプリのアンインストールは、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "セキュリティポリシーにより、パスワードを変更する必要があります。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "マイクの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "位置情報の使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Bluetoothの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "メッセージの送信は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "メッセージの受信は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "ブラウザアプリの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "外部SDカードの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "端末の復号は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Wi-Fiの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "設定の変更は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Eメール(POP/IMAP)の使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Eメール(POP/IMAP)の使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "セキュリティポリシーにより、PC接続の利用を制限します。"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "ბუფერული მეხს."
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "კი"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "გაუქმება"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "ეკრანის სურათი"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "პაროლი"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "ცხელი წერტილი"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს სამუშაო დაფის სინქრონიზაციის გამოყენებას."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "კამერა"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს %s-ის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს %s-ის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "გამოიყენება უსაფრთხოების პოლიტიკა."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "უსაფრთხოება ძალაშია"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს აპლიკაციების დაინსტალირებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს ამ აპლიკაციის დაინსტალირებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს აპლიკაციების ინსტალაციის გაუქმებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს ამ აპლიკაციის ინსტალაციის გაუქმებას."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "უსაფრთხოების პოლიტიკით მოგეთხოვებათ შეცვალოთ პაროლი."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს, მიკროფონის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს ლოკაციის ინფორმაციის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს Bluetooth-ის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს შეტყობინებების გაგზავნას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს შეტყობინებების მიღებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს ბრაუზერი აპლიკაციების გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს SD ბარათის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს ტელეფონის გაშიფვრას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს Wi-Fi-ის გამოყენებას."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს პარამეტრების შეცვლას."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს POP/IMAP ელ.ფოსტის გამოყენებას."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "უსაფრთხოების პოლიტიკა კრძალავს POP/IMAP ელფოსტის გამოყენებას."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს კომპიუტერთან კავშირის გამოყენებას."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Буфер"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Бас тарту"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Экранды түсіру"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Кілтсөз"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Жедел нүкте"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Қауіпсіздік саясаты жұмыс үстелін синхрондауға жол бермейді."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Камера"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Қауіпсіздік саясаты %s қолданбасын пайдалануға жол бермеді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Қауіпсіздің саясаты %s мүмкіндігін пайдалануды шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Қауіпсіздік саясаты қолданылды."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Қауіпсіз. саясаты күшінде"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Қауіпсіздік саясаты қолданбаларды орнатуға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Қауіпсіздік саясаты осы қолданбаны орнатуға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Қауіпсіздік саясаты қолданбаларды жоюға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Қауіпсіздік саясаты осы қолданбаны жоюға жол бермейді."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Қауіпсіздік саясаты құпиясөздің өзгеруін қажет етеді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Қауіпсіздік саясаты микрофонды пайдалануды шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Қауіпсіздік саясаты орын ақпаратын пайдалануды шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Қауіпсіздік саясаты Bluetooth пайдалануды шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Қауіпсіздік саясаты хабарларды жіберуге жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Қауіпсіздік саясаты хабарларды қалпына келтіруді шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Қауіпсіздік саясаты браузер қолданбаларын пайдалануға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Қауіпсіздік саясаты SD картаны пайдалануды шектейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Қауіпсіздік саясаты телефонды шифрсыздандыруға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Қауіпсіздік саясаты Wi-Fi пайдалануға жол бермейді."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Қауіпсіздік саясаты параметрлерді өзгертуді болдырмайды."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Қауіпсіздік саясаты POP/IMAP электрондық поштасының пайдаланылуын шектейді."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Қауіпсіздік саясаты POP/IMAP электрондық поштасын пайдалануға жол бермейді."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Қауіпсіздік саясаты компьютерге қосылымды пайдалануды шектейді."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "클립보드"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "확인"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "취소"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "화면 캡처"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "비밀번호"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "핫스팟"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "보안정책에 따라 PC를 동기화할 수 없습니다."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "카메라"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "보안정책에 따라 %s 앱을 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "보안정책에 따라 %s 기능을 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "보안정책을 적용했습니다."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "보안정책 적용 중"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "보안정책에 따라 앱을 설치할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "보안정책에 따라 이 앱을 설치할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "보안정책에 따라 앱을 삭제할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "보안정책에 따라 이 앱을 삭제할 수 없습니다."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "보안정책에 따라 비밀번호를 변경하세요."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "보안정책에 따라 마이크를 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "보안정책에 따라 위치정보를 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "보안정책에 따라 [블루투스]를 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "보안정책에 따라 메시지를 보낼 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "보안정책에 따라 메시지를 가져올 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "보안정책에 따라 브라우저 앱을 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "보안정책에 따라 SD 카드를 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "보안정책에 따라 휴대전화의 암호화를 해제할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "보안정책에 따라 Wi-Fi를 사용할 수 없습니다."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "보안정책에 따라 설정을 변경할 수 없습니다."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "보안정책에 따라 [POP/IMAP 이메일]을 사용할 수 없습니다."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "보안정책에 따라 [POP/IMAP 이메일]을 사용할 수 없습니다."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "보안정책에 따라 PC에 연결할 수 없습니다."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Iškarpinė"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Gerai"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Atšaukti"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekrano nuotrauka"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Slaptažodis"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Saitvietė"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Saugos politika neleidžia naudoti darbalaukio sinchronizavimo."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Fot."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Saugos politika neleidžia naudoti %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Saugos politika draudžia naudoti „%s“."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Saugos politika pritaikyta."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Saugos politika galioja"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Saugos politika neleidžia diegti programų."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Saugos politika neleidžia diegti šios programos."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Saugos politika neleidžia išdiegti programų."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Saugos politika neleidžia išdiegti šios programos."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Pagal naują saugumo politiką reikalaujama, kad pakeistumėte slaptažodį dabar."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Saugos politika riboja mikrofono naudojimą."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Saugos politika riboja vietos informacijos naudojimą."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Saugos politika neleidžia naudoti „Bluetooth“."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Saugos politika neleidžia siųsti žinučių."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Saugos politika riboja žinučių gavimą."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Saugos politika neleidžia naudoti naršyklės programos."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Saugos politika riboja SD kortelės naudojimą."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Saugos politika neleidžia iššifruoti telefono."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Saugos politika neleidžia naudoti „Wi-Fi“."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Saugos politika neleidžia keisti nustatymų."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Saugos strategija riboja naudojimąsi POP/IMAP el. paštu."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Saugos politika neleidžia naudoti POP/IMAP el. pašto."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Saugos strategija riboja ryšio su kompiuteriu naudojimą."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Starpliktuve"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Labi"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Atcelt"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekrāna tvērums"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Parole"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Tīklājs"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Drošības politika liedz datora sinhronizācijas lietošanu."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Drošības politika neļauj lietot %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Drošības politika ierobežo %s lietošanu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Tiek lietota drošības politika."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Drošības politika spēkā"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Drošības politika neļauj instalēt programmas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Drošības politika neļauj instalēt šo programmu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Drošības politika neļauj atinstalēt programmas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Drošības politika neļauj atinstalēt šo programmu."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Drošības politika pieprasa nomainīt paroli."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Drošības politika neļauj izmantot mikrofonu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Drošības politika neļauj izmantot atrašanās vietas informāciju."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Drošības politika neļauj lietot Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Drošības politika neļauj sūtīt ziņas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Drošības politika neļauj izgūt ziņas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Drošības politika neļauj izmantot pārlūkprogrammas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Drošības politika neļauj izmantot SD karti."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Drošības politika neļauj atšifrēt tālruni."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Drošības politika neļauj lietot Wi-Fi tīklu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Drošības politika neļauj mainīt iestatījumus."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Drošības politika ierobežo POP/IMAP e-pasta lietošanu."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Drošības politika liedz POP/IMAP e-pasta lietošanu."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Drošības politika neļauj lietot savienojumu ar datoru."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Посредна меморија"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Откажи"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Сними од екран"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Лозинка"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Хотспот"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Политиката за безбедност спречува користење синхронизирање со компјутер."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Камера"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Политиката за безбедност спречува користење %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Политиката за безбедност го ограничува користењето %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Применета е полисата за безбедност."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Важ. Полиса за безбедност"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Полисата за безбедност спречува инсталирање на апликации."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Полисата за безбедност спречува инсталирање на оваа апликација."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Полисата за безбедност спречува одинсталирање апликации."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Полисата за безбедност спречува одинсталирање на оваа апликација."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Политиката на безбедност бара да ја смените лозинката."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Полисата за безбедност го ограничува користењето на микрофонот."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Полисата за безбедност ограничува користење на информации за локација."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Полисата за безбедност го спречува користењето Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Полисата за безбедност спречува испраќање пораки."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Полисата за безбедност ограничува враќање пораки."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Полисата за безбедност спречува користење на апликации за прегледник."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Полисата за безбедност го ограничува користењето на SD-картичката."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Политиката за безбедност го спречува дешифрирањето на телефонот."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Полисата за безбедност спречува користење Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Полисата за безбедност спречува менување поставувања."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Политиката на безбедност го ограничува користењето email POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Политиката на безбедност спречува користење е-пошта POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Политиката на безбедност го ограничува користењето врска со компјутер."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Utklippstavle"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ta et skjermbilde"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Passord"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Trådløssone"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Sikkerhetspolicyen hindrer bruk av skrivebordssynkronisering."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Sikkerhetspolicyen hindrer bruk av %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Sikkerhetspolicy begrenser bruk av %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Sikkerhetspolicy er tatt i bruk."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Sikkerhetspolicy i bruk"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Sikkerhetspolicy hindrer installasjon av apper."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Sikkerhetspolicy hindrer installasjon av denne appen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Sikkerhetspolicy hindrer avinstallering av apper."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Sikkerhetspolicy hindrer avinstallering av denne appen."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Sikkerhetspolicyen krever at du endrer passordet."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Sikkerhetspolicy begrenser bruk av mikrofon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Sikkerhetspolicy begrenser bruk av posisjonsinformasjon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Sikkerhetspolicy hindrer bruk av Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Sikkerhetspolicy hindrer sending av meldinger."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Sikkerhetspolicy begrenser henting av meldinger."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Sikkerhetspolicy hindrer bruk av nettleserapper."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Sikkerhetspolicy begrenser bruk av SD-kort."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Sikkerhetspolicy hindrer dekryptering av telefonen."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Sikkerhetspolicy hindrer bruk av Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Sikkerhetspolicy hindrer endring av innstillinger."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sikkerhetspolicy begrenser bruk av POP/IMAP-e-post."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Sikkerhetspolicyen hindrer bruk av e-post via POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Sikkerhetspolicy begrenser bruk av datamaskin-tilkoblingen."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Klembord"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Annul."
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Schermafbeelding"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Wachtwoord"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Beveiligingsbeleid verhindert gebruik van desktop synchroniseren."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Camera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Beveiligingsbeleid verhindert gebruik van %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Gebruik van %s beperkt door beveiligingsbeleid."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Beveiligingsbeleid toegepast."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Geldende beveilig.beleid"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Beveiligingsbeleid verhindert de installatie van deze apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Beveiligingsbeleid verhindert de installatie van deze app."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Beveiligingsbeleid verhindert het verwijderen van deze apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Beveiligingsbeleid verhindert het verwijderen van deze app."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Het beveiligingsbeleid vereist dat u uw wachtwoord wijzigt."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Beveiligingsbeleid beperkt gebruik van microfoon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Beveiligingsbeleid beperkt het gebruik van locatiegegevens."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Gebruik van Bluetooth wordt voorkomen door beveiligingsbeleid."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Beveiligingsbeleid verhindert het verzenden van berichten."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Beveiligingsbeleid beperkt het ophalen van berichten."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Beveiligingsbeleid verhindert gebruik van browser-apps."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Beveiligingsbeleid beperkt gebruik van SD-kaart."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Beveiligingsbeleid verhindert decodering van telefoon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Gebruik van Wi-Fi wordt voorkomen door beveiligingsbeleid."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Wijzigen van instellingen wordt voorkomen door beveiligingsbeleid."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Gebruik van POP/IMAP-e-mail beperkt door beveiligingsbeleid."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Beveiligingsbeleid verhindert gebruik van POP/IMAP-e-mail."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Gebruik van pc-verbinding wordt beperkt door beveiligingsbeleid."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Schowek"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Anuluj"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Przechwytywanie ekranu"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Hasło"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Router"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Zasady zabezpieczeń uniemożliwiają korzystanie z synchronizacji z komputerem."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Aparat"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Zasady zabezpieczeń uniemożliwiają korzystanie z aplikacji %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Zasady zabezpieczeń ograniczają użycie funkcji %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Zastosowano zasady zabezpieczeń."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Obowiązują zasady zabezp."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Zasady zabezpieczeń zapobiegają instalacji aplikacji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Zasady zabezpieczeń zapobiegają instalacji tej aplikacji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Zasady zabezpieczeń zapobiegają odinstalowaniu aplikacji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Zasady zabezpieczeń zapobiegają odinstalowaniu tej aplikacji."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Zasady zabezpieczeń wymagają zmiany hasła."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Zasady zabezpieczeń ograniczają użycie mikrofonu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Zasady zabezpieczeń ograniczają użycie informacji o lokalizacji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Zasady zabezpieczeń zapobiegają korzystaniu z połączenia Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Zasady zabezpieczeń zapobiegają wysyłaniu wiadomości."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Zasady zabezpieczeń ograniczają odbieranie wiadomości."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Zasady zabezpieczeń zapobiegają korzystaniu z aplikacji przeglądarki."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Zasady zabezpieczeń ograniczają użycie karty SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Zasady zabezpieczeń zapobiegają deszyfrowaniu telefonu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Zasady zabezpieczeń zapobiegają korzystaniu z sieci Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Zasady zabezpieczeń zapobiegają zmianie ustawień."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Zasady zabezpieczeń ograniczają użycie poczty POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Zasady zabezpieczeń uniemożliwiają korzystanie z poczty POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Zasady zabezpieczeń ograniczają użycie połączenia z komputerem."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Área de transferência"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de tela"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Senha"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Roteador"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "A política de segurança evita o uso da sincronização da área de trabalho."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Câmera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "A política de segurança evita o uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "A política de segurança restringe o uso de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Política de segurança aplicada."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Polít. de segur. em vigor"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "A política de segurança impede a instalação de aplicativos."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "A política de segurança impede a instalação deste aplicativo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "A política de segurança impede a desinstalação de aplicativos."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "A política de segurança impede a desinstalação deste aplicativo."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "A política de segurança exige a alteração da senha."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "A política de segurança restringe o uso de microfone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "A política de segurança restringe o uso de informações de localização."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "A política de segurança impede o uso do Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "A política de segurança impede o envio de mensagens."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "A política de segurança restringe a recuperação de mensagens."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "A política de segurança impede o uso de aplicativos de navegador."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "A política de segurança restringe o uso de cartão de memória."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "A política de segurança impede a decodificação do telefone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "A política de segurança impede o uso do Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "A política de segurança impede a alteração das configurações."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de segurança restringe a utilização de e-mail POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de segurança evita o uso de e-mail POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "A política de segurança restringe o uso da conexão do PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Área transferência"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captura de ecrã"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Palavra-passe"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "A política de segurança impede a utilização de sincronização do ambiente de trabalho."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Câmara"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "A política de segurança impede a utilização de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "A política de segurança restringe a utilização de %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Política de segurança aplicada."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Política segurança em vigor"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "A política de segurança impede a instalação de aplicações."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "A política de segurança impede a instalação desta aplicação."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "A política de segurança impede a desinstalação de aplicações."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "A política de segurança impede a desinstalação desta aplicação."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "A política de segurança exige que altere a sua palavra-passe."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "A política de segurança restringe a utilização do microfone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "A política de segurança restringe a utilização de informações de localização."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "A política de segurança impede a utilização de Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "A política de segurança impede o envio de mensagens."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "A política de segurança restringe a obtenção de mensagens."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "A política de segurança impede a utilização de aplicações de browser."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "A política de segurança restringe a utilização do cartão SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "A política de segurança impede a desencriptação do telefone."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "A política de segurança impede a utilização de Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "A política de segurança impede a alteração das definições."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de segurança restringe a utilização de e-mail POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "A política de segurança impede a utilização de e-mail POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "A política de segurança restringe a utilização da ligação do PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Clipboard"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Anulare"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Captură ecran"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Parolă"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Politica de securitate nu permite utilizarea sincronizării desktopului."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Cameră"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Politica de securitate nu permite utilizarea aplicației %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Politica de securitate restricționează utilizarea %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Politică de securitate aplicată."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Pol. securitate în vigoare"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Politica de securitate nu permite instalarea aplicațiilor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Politica de securitate nu permite instalarea acestei aplicații."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Politica de securitate nu permite dezinstalarea aplicațiilor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Politica de securitate nu permite dezinstalarea acestei aplicații."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Politica de securitate impune schimbarea parolei."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Politica de securitate restricționează utilizarea microfonului."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Politica de securitate restricționează utilizarea informațiilor privind locația."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Politica de securitate nu permite utilizarea Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Politica de securitate nu permite trimiterea mesajelor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Politica de securitate restricționează preluarea mesajelor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Politica de securitate nu permite utilizarea aplicațiilor de browser."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Politica de securitate restricționează utilizarea cardului SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Politica de securitate nu permite decriptarea telefonului."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Politica de securitate nu permite utilizarea Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Politica de securitate nu permite schimbarea setărilor."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politica de securitate restricționează utilizarea e-mailului POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politica de securitate nu permite utilizarea e-mailului POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Politica de securitate restricționează utilizarea conexiunii la PC."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Буфер обмена"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "ОК"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Отмена"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Снимок экрана"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Пароль"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Точка доступа"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Политика безопасности ограничивает синхронизацию с компьютером."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Камера"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Политика безопасности ограничивает использование %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Использование функции %s ограничивается политикой безопасности."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Политика безопасности применена."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Политика безоп. действует"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Политика безопасности запрещает установку приложений."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Политика безопасности запрещает установку этого приложения."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Политика безопасности запрещает удаление приложений."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Политика безопасности запрещает удаление этого приложения."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Политика безопасности требует смены пароля."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Политика безопасности запрещает использование микрофона."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Политика безопасности запрещает использование информации о местоположении."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Политика безопасности запрещает использование Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Политика безопасности запрещает отправку сообщений."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Политика безопасности запрещает получение сообщений."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Политика безопасности запрещает использование приложений на основе веб-браузера."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Политика безопасности запрещает использование SD-карты."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Политикой безопасности исключается расшифровка данных телефона."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Политика безопасности запрещает использование Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Политика безопасности запрещает изменять параметры."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Политика безопасности ограничивает использование эл. почты по протоколам POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Политика безопасности ограничивает использование POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Политика безопасности ограничивает подключение к компьютеру."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Schránka"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Zrušiť"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Snímka obrazovky"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Heslo"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Prístupový bod"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Politika zabezpečenie zabraňuje používaniu synchronizácie s počítačom."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Fotoap."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Politika zabezpečenia zabraňuje používaniu aplikácie %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Politika zabezpečenia obmedzuje používanie funkcie %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Politika zabezpečenia sa aplikovala."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Politika zabezp. aplikov."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Politika zabezpečenia zabraňuje inštalácii aplikácií."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Politika zabezpečenia zabraňuje inštalácii tejto aplikácie."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Politika zabezpečenia zabraňuje odinštalovaniu aplikácií."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Politika zabezpečenia zabraňuje odinštalovaniu tejto aplikácie."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Politika zabezpečenie vyžaduje, aby ste zmenili vaše heslo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Politika zabezpečenia obmedzuje používanie mikrofónu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Politika zabezpečenia obmedzuje používanie informácií o polohe."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Politika zabezpečenia zabraňuje používaniu pripojenia Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Politika zabezpečenia zabraňuje odosielaniu správ."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Politika zabezpečenia obmedzuje načítavanie správ."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Politika zabezpečenia zabraňuje používaniu aplikácií prehliadačov."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Politika zabezpečenia obmedzuje používanie karty SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Politika zabezpečenia zabraňuje dešifrovaniu telefónu."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Politika zabezpečenia zabraňuje používaniu pripojenia Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Politika zabezpečenia zabraňuje zmene nastavení."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politika zabezpečenia obmedzuje použitie e-mailov POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politika zabezpečenia zabraňuje používaniu e-mailov POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Politika zabezpečenia obmedzuje použitie počítačového pripojenia."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Odložišče"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "V redu"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Prekliči"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Zajem zaslona"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Geslo"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Dostopna točka"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Varnostni pravilnik preprečuje uporabo sinhronizacije namizja."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Fot."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Varnostni pravilnik preprečuje uporabo aplikacije %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Varnostni pravilnik omejuje uporabo programa %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Uporabljen je varnostni pravilnik."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Veljaven varn. pravilnik"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Varnostni pravilnik preprečuje namestitev aplikacij."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Varnostni pravilnik preprečuje namestitev te aplikacije."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Varnostni pravilnik preprečuje odstranitev aplikacij."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Varnostni pravilnik preprečuje odstranitev te aplikacije."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Varnostni pravilnik zahteva, da spremenite geslo."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Varnostni pravilnik omejuje uporabo mikrofona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Varnostni pravilnik omejuje uporabo informacij o lokaciji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Varnostni pravilnik preprečuje uporabo vmesnika Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Varnostni pravilnik preprečuje pošiljanje sporočil."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Varnostni pravilnik omejuje prejemanje sporočil."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Varnostni pravilnik preprečuje uporabo aplikacij brskalnika."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Varnostni pravilnik omejuje uporabo kartice SD."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Varnostni pravilnik preprečuje dešifriranje telefona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Varnostni pravilnik preprečuje uporabo vmesnika Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Varnostni pravilnik preprečuje spreminjanje nastavitev."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Varnostni pravilnik omejuje uporabo e-pošte POP/IMAP."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Varnostni pravilnik preprečuje uporabo e-pošte POP/IMAP."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Varnostni pravilnik omejuje uporabo računalniške povezave."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Privremena memorija"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Otkaži"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Snimanje prikaza ekrana"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Lozinka"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Pristupna tačka"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Politika bezbednosti sprečava korišćenje sinhronizacije sa računarom."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Politika bezbednosti sprečava korišćenje aplikacije %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Politika bezbednosti ograničava upotrebu funkcije %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Politika bezbednosti je primenjena."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Politika bezbed. na snazi"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Politika bezbednosti sprečava instalaciju aplikacija."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Politika bezbednosti sprečava instalaciju ove aplikacije."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Politika bezbednosti sprečava deinstaliranje aplikacija."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Politika bezbednosti sprečava deinstalaciju ove aplikacije."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Politika bezbednosti zahteva da promeniš lozinku."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Politika bezbednosti ograničava upotrebu mikrofona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Politika bezbednosti ograničava upotrebu informacija o lokaciji."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Politika bezbednosti sprečava korišćenje Bluetooth-a."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Politika bezbednosti sprečava slanje poruka."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Politika bezbednosti ograničava prijem poruka."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Politika bezbednosti sprečava korišćenje aplikacija pretraživača."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Politika bezbednosti ograničava upotrebu SD kartice."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Politika bezbednosti sprečava dešifrovanje telefona."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Politika bezbednosti sprečava korišćenje Wi-Fi veze."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Politika bezbednosti sprečava promenu podešavanja."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politika bezbednosti ograničava upotrebu POP/IMAP e-pošte."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Politika bezbednosti sprečava korišćenje POP/IMAP e-pošte."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Politika bezbednosti ograničava upotrebu veze sa računarom."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Urklipp"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Skärmbild"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Lösenord"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Hotspot"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Säkerhetspolicyn förhindrar att skrivbordssynkronisering används."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Säkerhetspolicyn förhindrar att %s används."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Säkerhetspolicyn begränsar användningen av %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Säkerhetspolicy används."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Säkerhetspolicy gäller"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Säkerhetspolicyn förhindrar att appar installeras."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Säkerhetspolicyn förhindrar att appen installeras."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Säkerhetspolicyn förhindrar att appar avinstalleras."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Säkerhetspolicyn förhindrar att appen avinstalleras."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Säkerhetspolicyn kräver att du ändrar lösenordet."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Säkerhetspolicyn begränsar användningen av mikrofon."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Säkerhetspolicyn begränsar användningen av platsinformation."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Säkerhetspolicyn förhindrar att Bluetooth används."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Säkerhetspolicyn förhindrar att meddelanden skickas."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Säkerhetspolicyn begränsar hämtning av meddelanden."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Säkerhetspolicyn förhindrar att webbläsare används."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Säkerhetspolicy begränsar användningen av SD-kort."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Säkerhetspolicyn hindrar att telefonen avkrypteras."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Säkerhetspolicyn förhindrar att Wi-Fi används."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Säkerhetspolicyn förhindrar ändring av inställningarna."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Säkerhetspolicy begränsar användningen av POP/IMAP-e-post."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Säkerhetspolicyn förhindrar att POP-/IMAP-e-post används."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Säkerhetspolicyn begränsar användningen av datoranslutningen."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Pano"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "Tamam"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "İptal"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekran yakalama"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Şifre"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Erişim Noktası"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Güvenlik ilkesi masaüstü eşitleme kullanımını engelliyor."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Güvenlik ilkesi, %s kullanımını engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Güvenlik ilkesi, %s kullanımını kısıtlıyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Güvenlik ilkesi uygulandı."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Güvenlik ilkesi geçerli"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Güvenlik ilkesi, uygulamaların yüklenmesini engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Güvenlik ilkesi, bu uygulamanın yüklenmesini engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Güvenlik ilkesi, uygulamaların kaldırılmasını engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Güvenlik ilkesi, bu uygulamanın kaldırılmasını engelliyor."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Güvenlik ilkesi, şifrenizi değiştirmenizi istiyor"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Güvenlik ilkesi, mikrofon kullanımını kısıtlıyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Güvenlik ilkesi, konum bilgisi kullanımını kısıtlıyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Güvenlik ilkesi Bluetooth kullanımını engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Güvenlik ilkesi, mesaj göndermeyi engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Güvenlik ilkesi, mesaj almayı kısıtlıyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Güvenlik ilkesi, tarayıcı uygulamalarının kullanımını engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Güvenlik ilkesi, SD kart kullanımını kısıtlıyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Güvenlik ilkesi, telefonun şifresini çözmeyi engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Güvenlik ilkesi Wi-Fi kullanımını engelliyor."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Güvenlik ilkesi ayarların değiştirilmesini engelliyor."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Güvenlik ilkesi POP/IMAP eposta kullanımını kısıtlıyor."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Güvenlik ilkesi POP/IMAP e-posta kullanımını engelliyor."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Güvenlik ilkesi PC bağlantısı kullanımını kısıtlıyor."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Буфер обміну"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Скасувати"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Знімок екрана"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Пароль"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Точка доступу"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Політика безпеки попереджає використання синхронізації з комп’ютером."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Камера"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Політика безпеки забороняє використання %s."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Використання функції %s обмежено політикою безпеки."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Застосовано політику безпеки."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Діє політика безпеки"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Політикою безпеки заборонено встановлення програм."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Політикою безпеки заборонено встановлення цієї програми."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Політикою безпеки заборонено видалення програм."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Політикою безпеки заборонено видалення цієї програми."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Політика безпеки вимагає змінення паролю."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Політикою безпеки заборонено використання мікрофона."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Політикою безпеки заборонено використання інформації про розташування."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Політика безпеки попереджає використання функції Bluetooth."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Політикою безпеки заборонено надсилання повідомлень."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Політикою безпеки заборонено отримання повідомлень."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Політикою безпеки заборонено використання програм на базі браузера."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Політикою безпеки заборонено використання SD-карти."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Політикою безпеки виключається можливість дешифрування даних телефону."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Політика безпеки попереджає використання мережі Wi-Fi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Політика безпеки попереджає змінення установок."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Використання протоколів POP/IMAP електронної пошти обмежено політикою безпеки."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Політика безпеки попереджає використання протоколів POP/IMAP електронної пошти."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Використання підключення до ПК заборонено політикою безпеки."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "Bufer"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "Bekor qilish"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "Ekran rasmi"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "Parol"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "Faol nuqta"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "Xavfsizlik siyosati ishchi stolni sinxronlash ishlatilishidan saqlaydi."
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "Kamera"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "Xavfsizlik siyosati %s ishlatilishiga yo‘l qo‘ymayapti."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "Xavfsizlik siyosati %s’dan foydalanishni cheklaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "Xavfsizlik siyosati qo‘llanildi."
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "Xavf-lik siyosati kuchda"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "Xavfsizlik siyosati ilovalar o‘rnatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "Xavfsizlik siyosati ushbu ilova o‘rnatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "Xavfsizlik siyosati ilovalar olib tashlanishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "Xavfsizlik siyosati ushbu ilova olib tashlanishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "Xavfsizlik siyosati parolingizni o‘zgartirishni talab qiladi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "Xavfsizlik siyosati mikrofon ishlatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "Xavfsizlik siyosati joylashuv ma’lumotlari ishlatilishiga yo‘q qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "Xavfsizlik siyosati Bluetooth ishlatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "Xavfsizlik siyosati xabarlar yuborilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "Xavfsizlik siyosati xabarlar olinishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "Xavfsizlik siyosati brauzer ilovalari ishlatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "Xavfsizlik siyosati SD-karta ishlatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "Xavfsizlik siyosati telefon shifrdan chiqarilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "Xavfsizlik siyosati Wi-Fi ishlatilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "Xavfsizlik siyosati parametrlar o‘zgartirilishiga yo‘l qo‘ymaydi."
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Xavfsizlik siyosati POP/IMAP e-pochtasidan foydalanishni cheklaydi."
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "Xavfsizlik siyosati POP/IMAP e-pochta ishlatilishidan saqlaydi."
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "Xavfsizlik siyosati ShK ulanishidan foydalanishni cheklaydi."
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "剪贴板"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "确定"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "取消"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "屏幕截取"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "密码"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "热点"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "安全政策可防止桌面同步的使用。"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "相机"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "安全策略阻止使用%s"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "安全政策限制 %s 的使用"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "已应用安全政策"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "安全政策已生效"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "安全政策会阻止安装应用程序"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "安全政策会阻止安装此应用程序"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "安全政策会阻止卸载应用程序"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "安全政策会阻止卸载此应用程序"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "安全政策需要您更改密码。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "安全政策会限制使用麦克风"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "安全政策会限制使用位置信息"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "安全政策阻止使用蓝牙。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "安全政策会阻止发送信息"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "安全政策会限制获取信息"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "安全政策会阻止使用浏览器应用程序"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "安全政策会限制使用 SD 卡"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "安全政策阻止对手机进行解密"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "安全政策阻止使用 Wi-Fi。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "安全政策阻止更改设置。"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "安全政策限制使用POP/IMAP电子邮件。"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "安全政策可防止 POP/IMAP 电子邮件的使用。"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "安全政策限制 PC 连接的使用。"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "剪貼板"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "確定"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "取消"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "螢幕擷取"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "密碼"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "熱點"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "安全性政策可防止桌上電腦同步的使用。"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "相機"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "安全性政策防止%s的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "安全政策限制使用 %s。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "已應用安全性政策。"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "安全性政策已生效"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "安全性政策會阻止安裝應用程式。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "安全性政策會阻止安裝此應用程式。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "安全性政策會阻止解除安裝應用程式。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "安全性政策會阻止解除安裝此應用程式。"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "安全性政策將要求您變更密碼。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "安全政策會限制使用話筒。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "安全政策會限制使用位置資訊。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "安全性政策可防止藍牙的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "安全性政策會阻止發送訊息。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "安全性政策會限制取回訊息。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "安全性政策會阻止瀏覽器應用程式的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "安全政策會限制使用 SD 卡。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "安全性政策阻止手機的解密。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "安全性政策防止 Wi-Fi 的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "安全性政策防止變更設定。"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "安全政策限制使用 POP/IMAP 電子郵件。"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "安全性政策可防止 POP/IMAP 電子郵件的使用。"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "安全性政策限制使用電腦連線。"
+
--- /dev/null
+msgid "IDS_TPLATFORM_OPT_CLIPBOARD"
+msgstr "剪貼簿"
+
+msgid "IDS_TPLATFORM_BUTTON_OK"
+msgstr "確認"
+
+msgid "IDS_TPLATFORM_BUTTON2_CANCEL"
+msgstr "取消"
+
+msgid "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN"
+msgstr "螢幕擷取"
+
+msgid "IDS_ST_BODY_PASSWORD"
+msgstr "密碼"
+
+msgid "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT"
+msgstr "無線基地台"
+
+msgid "IDS_ST_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_DESKTOP_SYNC"
+msgstr "安全性原則可防止桌機同步的使用。"
+
+msgid "IDS_IDLE_TAB4_CAMERA"
+msgstr "相機"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_PS"
+msgstr "安全性原則禁止%s的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS"
+msgstr "安全性原則限制 %s 的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_APPLIED"
+msgstr "已套用安全性原則。"
+
+msgid "IDS_IDLE_MBODY_SECURITY_POLICY_IN_EFFECT"
+msgstr "安全性原則已生效"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS"
+msgstr "安全性原則會防止應用程式的安裝。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_THIS_APP"
+msgstr "安全性原則會防止此應用程式的安裝。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS"
+msgstr "安全性原則會防止解除安裝應用程式。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_OF_THIS_APP"
+msgstr "安全性原則會防止解除安裝此應用程式。"
+
+msgid "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"
+msgstr "安全性政策將要求您變更密碼。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC"
+msgstr "安全性原則會限制麥克風的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO"
+msgstr "安全性原則會限制位置資訊的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH"
+msgstr "安全性原則會防止藍牙的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES"
+msgstr "安全性原則會防止訊息的傳送。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES"
+msgstr "安全性原則會限制訊息的擷取。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS"
+msgstr "安全性原則會防止瀏覽器應用程式的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD"
+msgstr "安全性原則會限制 SD 卡的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_DECRYPTION_OF_PHONE"
+msgstr "安全性原則阻擋手機的解密。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI"
+msgstr "安全性原則會防止 Wi-Fi 的使用。"
+
+msgid "IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_CHANGING_SETTINGS"
+msgstr "安全性原則會防止變更設定。"
+
+msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "由於安全政策,使用POP/IMAP電子郵件被限制。"
+
+msgid "IDS_ST_POP_SECURITY_POLICY_PREVENTS_USE_OF_POP_IMAP_EMAIL"
+msgstr "安全性原則可防止 POP/IMAP 電子郵件的使用。"
+
+msgid "IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION"
+msgstr "安全性政策限制使用電腦連線。"
+
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "application.h"
+
+Application::Application(const std::string &name)
+ : packageName(name), appControl(nullptr)
+{
+}
+
+Application::~Application()
+{
+}
+
+bool Application::createDispatcher(void *data)
+{
+ Application *application = reinterpret_cast<Application *>(data);
+ return application->onCreate();
+}
+
+void Application::terminateDispatcher(void *data)
+{
+ Application *application = reinterpret_cast<Application *>(data);
+ return application->onTerminate();
+}
+
+void Application::pauseDispatcher(void *data)
+{
+ Application *application = reinterpret_cast<Application *>(data);
+ return application->onPause();
+}
+
+void Application::resumeDispatcher(void *data)
+{
+ Application *application = reinterpret_cast<Application *>(data);
+ return application->onResume();
+}
+
+void Application::appControlDispatcher(app_control_h app_control, void *data)
+{
+ Application *application = reinterpret_cast<Application *>(data);
+ application->appControl.reset(new AppControl{app_control});
+
+ return application->onAppControl();
+}
+
+void Application::languageChangedDispatcher(app_event_info_h event_info, void *user_data)
+{
+ int ret = 0;
+ char *locale = NULL;
+
+ ret = ::system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
+ if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
+ throw runtime::Exception("failed to get language");
+ }
+
+ ::elm_language_set(locale);
+ ::free(locale);
+}
+
+int Application::run(int argc, char *argv[])
+{
+ int ret = 0;
+ ui_app_lifecycle_callback_s event_callback = { 0, };
+ app_event_handler_h handlers[5] = { NULL, };
+
+ event_callback.create = createDispatcher;
+ event_callback.terminate = terminateDispatcher;
+ event_callback.pause = pauseDispatcher;
+ event_callback.resume = resumeDispatcher;
+ event_callback.app_control = appControlDispatcher;
+
+ try {
+ ::ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],
+ APP_EVENT_LANGUAGE_CHANGED,
+ languageChangedDispatcher, NULL);
+
+ ret = ::ui_app_main(argc, argv, &event_callback, this);
+ if (ret != APP_ERROR_NONE)
+ throw runtime::Exception("app_main() is failed");
+ } catch(runtime::Exception &e) {
+ dlog_print(DLOG_ERROR, packageName.c_str(), "%s", e.what());
+ ::ui_app_exit();
+ }
+
+ return ret;
+}
+
+bool Application::onCreate()
+{
+ return true;
+}
+
+void Application::onTerminate()
+{
+}
+
+void Application::onPause()
+{
+}
+
+void Application::onResume()
+{
+}
+
+void Application::onAppControl()
+{
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __APPLICATION_H__
+#define __APPLICATION_H__
+
+#include <memory>
+
+#include <app.h>
+#include <app_common.h>
+#include <Elementary.h>
+#include <efl_util.h>
+
+#include <dlog.h>
+#include <system_info.h>
+#include <system_settings.h>
+#include <klay/exception.h>
+
+#include "ui/appcontrol.h"
+
+class Application {
+public:
+ Application(const std::string &name);
+ virtual ~Application();
+
+ virtual int run(int argc, char *argv[]);
+
+protected:
+ virtual bool onCreate();
+ virtual void onResume();
+ virtual void onPause();
+ virtual void onTerminate();
+ virtual void onAppControl();
+
+ std::string packageName;
+ std::unique_ptr<AppControl> appControl;
+private:
+ static bool createDispatcher(void *data);
+ static void resumeDispatcher(void *data);
+ static void pauseDispatcher(void *data);
+ static void terminateDispatcher(void *data);
+ static void appControlDispatcher(app_control_h app_control, void *data);
+ static void languageChangedDispatcher(app_event_info_h event_info, void* user_data);
+};
+
+#endif /*__APPLICATION_H__*/
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "interface.h"
+
+SyspopupInterface::SyspopupInterface()
+ : prefix(0), title(""), content(""), popup(nullptr), window(nullptr)
+{
+}
+
+SyspopupInterface::SyspopupInterface(const std::string &contentText)
+ : prefix(0), title(""), content(contentText), popup(nullptr), window(nullptr)
+{
+}
+
+SyspopupInterface::SyspopupInterface(int prefixEnabled, const std::string &contentText)
+ : prefix(prefixEnabled), title(""), content(contentText), popup(nullptr), window(nullptr)
+{
+}
+
+SyspopupInterface::SyspopupInterface(const std::string &titleText, const std::string &contentText)
+ : prefix(0), title(titleText), content(contentText), popup(nullptr), window(nullptr)
+{
+}
+
+SyspopupInterface::~SyspopupInterface()
+{
+ if (popup != nullptr) {
+ popup->dispose();
+ }
+
+ if (window)
+ delete window;
+}
+
+int SyspopupInterface::getProfile()
+{
+ char *profileName = nullptr;
+ int ret = ::system_info_get_platform_string("http://tizen.org/feature/profile", &profileName);
+ if (ret != SYSTEM_INFO_ERROR_NONE) {
+ return Profile::Invalid;
+ }
+
+ switch (*profileName) {
+ case 'm':
+ case 'M':
+ ret = Profile::Mobile;
+ break;
+ case 'w':
+ case 'W':
+ ret = Profile::Wearable;
+ break;
+ default:
+ ret = Profile::Invalid;
+ break;
+ }
+
+ ::free(profileName);
+ return ret;
+}
+
+bool SyspopupInterface::isManufacturer(const std::string &name)
+{
+ bool ret = false;
+ char *manufacturer = nullptr;
+
+ ::system_info_get_platform_string("tizen.org/system/manufacturer", &manufacturer);
+ ret = !name.compare(manufacturer);
+ ::free(manufacturer);
+ return ret;
+}
+
+void SyspopupInterface::createWindow()
+{
+ if (window == nullptr)
+ window = new Window{"dpm-syspopup"};
+}
+
+void SyspopupInterface::createToastPopup()
+{
+ createWindow();
+ switch (getProfile()) {
+ case Profile::Mobile :
+ popup.reset(new MobileToastPopup(window));
+ break;
+ case Profile::Wearable:
+ popup.reset(new WearableToastPopup(window));
+ break;
+ default:
+ throw runtime::Exception("Invalid profile");
+ break;
+ }
+}
+
+void SyspopupInterface::createDefaultPopup()
+{
+ createWindow();
+ switch (getProfile()) {
+ case Profile::Mobile:
+ popup.reset(new MobileDefaultPopup(window));
+ break;
+ case Profile::Wearable:
+ popup.reset(new WearableDefaultPopup(window));
+ break;
+ default:
+ throw runtime::Exception("Invalid profile");
+ break;
+ }
+}
+
+void SyspopupInterface::show()
+{
+ if (!title.empty()) {
+ popup->setTitleText(title);
+ }
+
+ if (!content.empty() && !prefix) {
+ popup->setContentText(content);
+ }
+
+ if (!content.empty() && prefix) {
+ popup->setPrefixContentText(content);
+ }
+
+ if (popup != nullptr) {
+ popup->show();
+ }
+}
+
+std::unordered_map<std::string, SyspopupInterface *> ManagedPopup::list;
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __SYSPOPUP_INTERFACE_H__
+#define __SYSPOPUP_INTERFACE_H__
+
+#include <iostream>
+#include <memory>
+#include <vector>
+#include <functional>
+#include <unordered_map>
+
+#include <dlog.h>
+#include <system_info.h>
+#include <klay/exception.h>
+
+#include "ui/window.h"
+#include "ui/popup.h"
+#include "ui/appcontrol.h"
+#include "ui/notification.h"
+
+class SyspopupInterface {
+public:
+ enum Profile {
+ Mobile = 0,
+ Wearable,
+ Invalid,
+ };
+
+ SyspopupInterface();
+ SyspopupInterface(const std::string &contentText);
+ SyspopupInterface(int prefixEnabled, const std::string &contentText);
+ SyspopupInterface(const std::string &titleText, const std::string &contentText);
+
+ virtual ~SyspopupInterface();
+
+ virtual void initialize() = 0;
+ virtual void contribute(const std::string &userData) = 0;
+ virtual void dispose() = 0;
+
+ void show();
+
+protected:
+ int getProfile();
+ bool isManufacturer(const std::string &name);
+
+ void createToastPopup();
+ void createDefaultPopup();
+
+ int prefix;
+ std::string title;
+ std::string content;
+ std::unique_ptr<Popup> popup;
+private:
+ void createWindow();
+ Window *window;
+};
+
+class ManagedPopup {
+public:
+ static std::unordered_map<std::string, SyspopupInterface *> list;
+};
+
+template <typename Syspopup>
+class SyspopupManager {
+public:
+ SyspopupManager(const std::string &id);
+ ~SyspopupManager();
+
+private:
+ std::unique_ptr<Syspopup> popup;
+};
+
+template <typename Syspopup>
+SyspopupManager<Syspopup>::SyspopupManager(const std::string &id)
+{
+ popup.reset(new Syspopup{});
+ ManagedPopup::list[id] = popup.get();
+}
+
+template<typename Syspopup>
+SyspopupManager<Syspopup>::~SyspopupManager()
+{
+}
+
+#endif /* __SYSPOPUP_INTERFACE_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include <klay/exception.h>
+#include "syspopup.h"
+
+DPMSyspopup::DPMSyspopup()
+ : Application("dpm-syspopup"), id(""), userData("")
+{
+}
+
+DPMSyspopup::~DPMSyspopup()
+{
+}
+
+void DPMSyspopup::onAppControl()
+{
+ SyspopupInterface *popup = nullptr;
+
+ id = appControl->getData("id");
+ if (ManagedPopup::list.find(id) == ManagedPopup::list.end()) {
+ throw runtime::Exception("popup is not supported.");
+ }
+
+ popup = ManagedPopup::list[id];
+ if (popup == nullptr) {
+ throw runtime::Exception("failed to get popup instance");
+ }
+
+ popup->initialize();
+ userData = appControl->getData("user-data");
+ popup->contribute(userData);
+ popup->show();
+}
+
+void DPMSyspopup::onTerminate()
+{
+ SyspopupInterface *popup = nullptr;
+ popup = ManagedPopup::list[id];
+ if (popup == nullptr) {
+ throw runtime::Exception("failed to get popup instance");
+ }
+ popup->dispose();
+}
+
+int main(int argc, char *argv[])
+{
+ int ret = 0;
+ DPMSyspopup syspopup;
+ ret = syspopup.run(argc, argv);
+ return ret;
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "bluetooth.h"
+
+BluetoothPopup::BluetoothPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BLUETOOTH")
+{
+}
+
+BluetoothPopup::~BluetoothPopup()
+{
+}
+
+void BluetoothPopup::initialize()
+{
+}
+
+void BluetoothPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void BluetoothPopup::dispose()
+{
+}
+
+SyspopupManager<BluetoothPopup> bluetoothPopup("bluetooth");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_BLUETOOTH_SYSPOPUP_H__
+#define __DPM_BLUETOOTH_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class BluetoothPopup : public SyspopupInterface {
+public:
+ BluetoothPopup();
+ virtual ~BluetoothPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_BLUETOOTH_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "browser.h"
+
+BrowserPopup::BrowserPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_BROWSER_APPS")
+{
+}
+
+BrowserPopup::~BrowserPopup()
+{
+}
+
+void BrowserPopup::initialize()
+{
+}
+
+void BrowserPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void BrowserPopup::dispose()
+{
+}
+
+SyspopupManager<BrowserPopup> browserPopup("browser");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_BROWSER_SYSPOPUP_H__
+#define __DPM_BROWSER_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class BrowserPopup : public SyspopupInterface {
+public:
+ BrowserPopup();
+ virtual ~BrowserPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_BROWSER_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "camera.h"
+
+CameraPopup::CameraPopup()
+ : SyspopupInterface(true, "IDS_IDLE_TAB4_CAMERA")
+{
+}
+
+CameraPopup::~CameraPopup()
+{
+}
+
+void CameraPopup::initialize()
+{
+}
+
+void CameraPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void CameraPopup::dispose()
+{
+}
+
+SyspopupManager<CameraPopup> cameraPopup("camera");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_CAMERA_SYSPOPUP_H__
+#define __DPM_CAMERA_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class CameraPopup : public SyspopupInterface {
+public:
+ CameraPopup();
+ virtual ~CameraPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_CAMERA_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "clipboard.h"
+
+ClipboardPopup::ClipboardPopup()
+ : SyspopupInterface(true, "IDS_TPLATFORM_OPT_CLIPBOARD")
+{
+}
+
+ClipboardPopup::~ClipboardPopup()
+{
+}
+
+void ClipboardPopup::initialize()
+{
+}
+
+void ClipboardPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void ClipboardPopup::dispose()
+{
+}
+
+SyspopupManager<ClipboardPopup> clipboardPopup("clipboard");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_CLIPBOARD_SYSPOPUP_H__
+#define __DPM_CLIPBOARD_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class ClipboardPopup : public SyspopupInterface {
+public:
+ ClipboardPopup();
+ virtual ~ClipboardPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_CLIPBOARD_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "external-storage.h"
+
+ExternalStoragePopup::ExternalStoragePopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_SD_CARD")
+{
+}
+
+ExternalStoragePopup::~ExternalStoragePopup()
+{
+}
+
+void ExternalStoragePopup::initialize()
+{
+}
+
+void ExternalStoragePopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void ExternalStoragePopup::dispose()
+{
+}
+
+SyspopupManager<ExternalStoragePopup> sdCardPopup("external-storage");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_EXTERNAL_STORAGE_SYSPOPUP_H__
+#define __DPM_EXTERNAL_STORAGE_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class ExternalStoragePopup : public SyspopupInterface {
+public:
+ ExternalStoragePopup();
+ virtual ~ExternalStoragePopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_EXTERNAL_STORAGE_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "krate-create.h"
+
+KrateCreatePopup::KrateCreatePopup()
+ : SyspopupInterface("IDS_DPM_KRATE_CREATE", "IDS_DPM_BODY_KRATE_CREATE"),
+ setupWizard("org.tizen.krate-setup-wizard")
+{
+}
+
+KrateCreatePopup::~KrateCreatePopup()
+{
+}
+
+void KrateCreatePopup::initialize()
+{
+ notification.setTitle("IDS_DPM_NOTI_KRATE_CREATE");
+ notification.setContent("IDS_DPM_NOTI_BODY_KRATE_CREATE");
+ notification.setImage("/usr/share/icons/default/small/org.tizen.dpm-syspopup.png");
+ setupWizard.setData("mode", "create");
+}
+
+void KrateCreatePopup::contribute(const std::string &userData)
+{
+ setupWizard.setData("krate", userData);
+ if (!isManufacturer("Tizen")) {
+ setupWizard.setAppID("com.samsung.krate-setup-wizard");
+ }
+ notification.setAppControl(setupWizard);
+
+ createDefaultPopup();
+ if (popup == nullptr) {
+ throw runtime::Exception("failed to create popup interface");
+ }
+
+ popup->onDispose = [this]() {
+ notification.post();
+ ::ui_app_exit();
+ };
+
+ popup->setButton("IDS_TPLATFORM_BUTTON2_CANCEL",
+ [this](void *event_info) {
+ popup->dispose();
+ },
+ "IDS_TPLATFORM_BUTTON_OK",
+ [this](void *event_info) {
+ popup->onDispose = [this]() {
+ setupWizard.launch();
+ ::ui_app_exit();
+ };
+ popup->dispose();
+ });
+}
+
+void KrateCreatePopup::dispose()
+{
+}
+
+SyspopupManager<KrateCreatePopup> krateCreatePopup("krate-create");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_KRATE_CREATE_SYSPOPUP_H__
+#define __DPM_KRATE_CREATE_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class KrateCreatePopup : public SyspopupInterface {
+public:
+ KrateCreatePopup();
+ virtual ~KrateCreatePopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+
+private:
+ AppControl setupWizard;
+ Notification notification;
+};
+
+#endif /* __DPM_KRATE_CREATE_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "krate-remove.h"
+
+KrateRemovePopup::KrateRemovePopup()
+ : SyspopupInterface("IDS_DPM_KRATE_REMOVE", "IDS_DPM_BODY_KRATE_REMOVE"),
+ setupWizard("org.tizen.krate-setup-wizard")
+{
+}
+
+KrateRemovePopup::~KrateRemovePopup()
+{
+}
+
+void KrateRemovePopup::initialize()
+{
+ notification.setTitle("IDS_DPM_NOTI_KRATE_REMOVE");
+ notification.setContent("IDS_DPM_NOTI_BODY_KRATE_REMOVE");
+ notification.setImage("/usr/share/icons/default/small/org.tizen.dpm-syspopup.png");
+ setupWizard.setData("mode", "remove");
+}
+
+void KrateRemovePopup::contribute(const std::string &userData)
+{
+ setupWizard.setData("krate", userData);
+ if (!isManufacturer("Tizen")) {
+ setupWizard.setAppID("com.samsung.krate-setup-wizard");
+ }
+ notification.setAppControl(setupWizard);
+
+ createDefaultPopup();
+ if (popup == nullptr) {
+ throw runtime::Exception("failed to create popup interface");
+ }
+ popup->onDispose = [this]() {
+ notification.post();
+ ::ui_app_exit();
+ };
+ popup->setButton("IDS_TPLATFORM_BUTTON2_CANCEL",
+ [this](void *event_info) {
+ popup->dispose();
+ },
+ "IDS_TPLATFORM_BUTTON_OK",
+ [this](void *event_info) {
+ popup->onDispose = [this]() {
+ setupWizard.launch();
+ ::ui_app_exit();
+ };
+ popup->dispose();
+ });
+}
+
+void KrateRemovePopup::dispose()
+{
+}
+
+SyspopupManager<KrateRemovePopup> krateRemovePopup("krate-remove");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_KRATE_REMOVE_SYSPOPUP_H__
+#define __DPM_KRATE_REMOVE_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class KrateRemovePopup : public SyspopupInterface {
+public:
+ KrateRemovePopup();
+ virtual ~KrateRemovePopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+
+private:
+ AppControl setupWizard;
+ Notification notification;
+};
+
+#endif /* __DPM_KRATE_REMOVE_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "location.h"
+
+LocationPopup::LocationPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO")
+{
+}
+
+LocationPopup::~LocationPopup()
+{
+}
+
+void LocationPopup::initialize()
+{
+}
+
+void LocationPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void LocationPopup::dispose()
+{
+}
+
+SyspopupManager<LocationPopup> locationPopup("location");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_LOCATION_SYSPOPUP_H__
+#define __DPM_LOCATION_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class LocationPopup : public SyspopupInterface {
+public:
+ LocationPopup();
+ virtual ~LocationPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_LOCATION_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "message-retrieving.h"
+
+MessageRetrievingPopup::MessageRetrievingPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_RETRIEVING_MESSAGES")
+{
+}
+
+MessageRetrievingPopup::~MessageRetrievingPopup()
+{
+}
+
+void MessageRetrievingPopup::initialize()
+{
+}
+
+void MessageRetrievingPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void MessageRetrievingPopup::dispose()
+{
+}
+
+SyspopupManager<MessageRetrievingPopup> messageRetrievingPopup("message-retrieving");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_MESSAGE_RETRIEVING_SYSPOPUP_H__
+#define __DPM_MESSAGE_RETRIEVING_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class MessageRetrievingPopup : public SyspopupInterface {
+public:
+ MessageRetrievingPopup();
+ virtual ~MessageRetrievingPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_MESSAGE_RETRIEVING_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "message-sending.h"
+
+MessageSendingPopup::MessageSendingPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES")
+{
+}
+
+MessageSendingPopup::~MessageSendingPopup()
+{
+}
+
+void MessageSendingPopup::initialize()
+{
+}
+
+void MessageSendingPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void MessageSendingPopup::dispose()
+{
+}
+
+SyspopupManager<MessageSendingPopup> messageSendingPopup("message-sending");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_MESSAGE_SENDING_SYSPOPUP_H__
+#define __DPM_MESSAGE_SENDING_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class MessageSendingPopup : public SyspopupInterface {
+public:
+ MessageSendingPopup();
+ virtual ~MessageSendingPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_MESSAGE_SENDING_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "microphone.h"
+
+MicrophonePopup::MicrophonePopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_MIC")
+{
+}
+
+MicrophonePopup::~MicrophonePopup()
+{
+}
+
+void MicrophonePopup::initialize()
+{
+}
+
+void MicrophonePopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void MicrophonePopup::dispose()
+{
+}
+
+SyspopupManager<MicrophonePopup> microphonePopup("microphone");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_MICROPHONE_SYSPOPUP_H__
+#define __DPM_MICROPHONE_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class MicrophonePopup : public SyspopupInterface {
+public:
+ MicrophonePopup();
+ virtual ~MicrophonePopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_MICROPHONE_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "nfc.h"
+
+NFCPopup::NFCPopup()
+ : SyspopupInterface(true, "IDS_ST_BODY_NFC")
+{
+}
+
+NFCPopup::~NFCPopup()
+{
+}
+
+void NFCPopup::initialize()
+{
+}
+
+void NFCPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void NFCPopup::dispose()
+{
+}
+
+SyspopupManager<NFCPopup> nfcPopup("nfc");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_NFC_SYSPOPUP_H__
+#define __DPM_NFC_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class NFCPopup : public SyspopupInterface {
+public:
+ NFCPopup();
+ virtual ~NFCPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_NFC_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "package-installation.h"
+
+PackageInstallationPopup::PackageInstallationPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_INSTALLATION_OF_APPS")
+{
+}
+
+PackageInstallationPopup::~PackageInstallationPopup()
+{
+}
+
+void PackageInstallationPopup::initialize()
+{
+}
+
+void PackageInstallationPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void PackageInstallationPopup::dispose()
+{
+}
+
+SyspopupManager<PackageInstallationPopup> packageInstallationPopup("package-installation");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_PACKAGE_INSTALLATION_SYSPOPUP_H__
+#define __DPM_PACKAGE_INSTALLATION_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class PackageInstallationPopup : public SyspopupInterface {
+public:
+ PackageInstallationPopup();
+ virtual ~PackageInstallationPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_PACKAGE_INSTALLATION_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "package-uninstallation.h"
+
+PackageUninstallationPopup::PackageUninstallationPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_UNINSTALLING_APPS")
+{
+}
+
+PackageUninstallationPopup::~PackageUninstallationPopup()
+{
+}
+
+void PackageUninstallationPopup::initialize()
+{
+}
+
+void PackageUninstallationPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void PackageUninstallationPopup::dispose()
+{
+}
+
+SyspopupManager<PackageUninstallationPopup> packageUninstallationPopup("package-uninstallation");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_PACKAGE_UNINSTALLATION_SYSPOPUP_H__
+#define __DPM_PACKAGE_UNINSTALLATION_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class PackageUninstallationPopup : public SyspopupInterface {
+public:
+ PackageUninstallationPopup();
+ virtual ~PackageUninstallationPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_PACKAGE_UNINSTALLATION_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include <vconf.h>
+#include "password.h"
+
+PasswordPopup::PasswordPopup()
+ : SyspopupInterface("IDS_ST_BODY_PASSWORD", "IDS_IDLE_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_CHANGE_YOUR_PASSWORD"),
+ setAppControl("org.tizen.setting-locktype"), verifyAppControl("org.tizen.setting-password")
+{
+}
+
+PasswordPopup::~PasswordPopup()
+{
+}
+
+void PasswordPopup::initialize()
+{
+ setAppControl.setData("caller", "DPM");
+ setAppControl.setData(APP_CONTROL_DATA_SHIFT_WINDOW, "true");
+}
+
+void PasswordPopup::contribute(const std::string &userData)
+{
+ createDefaultPopup();
+ if (popup == nullptr) {
+ throw runtime::Exception("Failed to create popup interface");
+ }
+
+ popup->deleteEcoreHandler(ECORE_EVENT_KEY_DOWN);
+
+ auto replyHandler = [this](AppControl *ug, AppControl *reply, int result) {
+ if (result != APP_CONTROL_RESULT_SUCCEEDED) {
+ popup->dispose();
+ return;
+ }
+ std::string resultData = reply->getData("result");
+
+ if (resultData.compare("SETTING_PW_TYPE_ENTER_LOCK_TYPE") == 0
+ || resultData.compare("SETTING_PW_TYPE_VERIFY_FP_ALT_PASSWORD") == 0) {
+ std::string current(reply->getData("current"));
+ if (!current.empty()) {
+ setAppControl.setData("current", current);
+ setAppControl.launch();
+ }
+ }
+ popup->dispose();
+ };
+
+ auto z3ConfirmEvent = [this, replyHandler](void *event_info) {
+ int lockType = 0;
+ ::vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lockType);
+
+ if (lockType == SETTING_SCREEN_LOCK_TYPE_PASSWORD
+ || lockType == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) {
+ verifyAppControl.setData("caller", "DPM");
+ verifyAppControl.setData(APP_CONTROL_DATA_SHIFT_WINDOW, "true");
+ verifyAppControl.setData("viewtype", "SETTING_PW_TYPE_ENTER_LOCK_TYPE");
+ verifyAppControl.launch(std::forward<AppControl::ReplyHandler>(replyHandler));
+ } else {
+ setAppControl.launch();
+ popup->dispose();
+ }
+ };
+
+ auto z2ConfirmEvent = [this](void *event_info) {
+ AppControl setPassword("com.samsung.setting.locktype");
+ setPassword.setData("caller", "dpm");
+ setPassword.launch();
+ };
+
+ if (isManufacturer("Tizen")) {
+ popup->setButton("IDS_TPLATFORM_BUTTON_OK", std::forward<Widget::SmartHandler>(z3ConfirmEvent));
+ } else {
+ popup->setButton("IDS_TPLATFORM_BUTTON_OK", std::forward<Widget::SmartHandler>(z2ConfirmEvent));
+ }
+}
+
+void PasswordPopup::dispose()
+{
+}
+
+SyspopupManager<PasswordPopup> passwordPopup("password-enforce-change");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_PASSWORD_SYSPOPUP_H__
+#define __DPM_PASSWORD_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class PasswordPopup : public SyspopupInterface {
+public:
+ PasswordPopup();
+ virtual ~PasswordPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+
+private:
+ AppControl setAppControl;
+ AppControl verifyAppControl;
+};
+
+#endif /* __DPM_PASSWORD_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "popimap-email.h"
+
+PopimapEmailPopup::PopimapEmailPopup()
+ : SyspopupInterface("IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL")
+{
+}
+
+PopimapEmailPopup::~PopimapEmailPopup()
+{
+}
+
+void PopimapEmailPopup::initialize()
+{
+}
+
+void PopimapEmailPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void PopimapEmailPopup::dispose()
+{
+}
+
+SyspopupManager<PopimapEmailPopup> popimapEmailPopup("popimap-email");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_POPIMAP_EMAIL_SYSPOPUP_H__
+#define __DPM_POPIMAP_EMAIL_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class PopimapEmailPopup : public SyspopupInterface {
+public:
+ PopimapEmailPopup();
+ virtual ~PopimapEmailPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_POPIMAP_EMAIL_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "screen-capture.h"
+
+ScreenCapturePopup::ScreenCapturePopup()
+ : SyspopupInterface(true, "IDS_MF_BODY_SCREEN_CAPTURE_M_NOUN")
+{
+}
+
+ScreenCapturePopup::~ScreenCapturePopup()
+{
+}
+
+void ScreenCapturePopup::initialize()
+{
+}
+
+void ScreenCapturePopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void ScreenCapturePopup::dispose()
+{
+}
+
+SyspopupManager<ScreenCapturePopup> screenCapturePopup("screen-capture");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SCREEN_CAPTURE_SYSPOPUP_H__
+#define __DPM_SCREEN_CAPTURE_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class ScreenCapturePopup : public SyspopupInterface {
+public:
+ ScreenCapturePopup();
+ virtual ~ScreenCapturePopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_SCREEN_CAPTURE_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "settings-changes.h"
+
+SettingsChangesPopup::SettingsChangesPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_LOCATION_INFO")
+{
+}
+
+SettingsChangesPopup::~SettingsChangesPopup()
+{
+}
+
+void SettingsChangesPopup::initialize()
+{
+}
+
+void SettingsChangesPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void SettingsChangesPopup::dispose()
+{
+}
+
+SyspopupManager<SettingsChangesPopup> settingsChangesPopup("settings-changes");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SETTINGS_CHANGES_SYSPOPUP_H__
+#define __DPM_SETTINGS_CHANGES_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class SettingsChangesPopup : public SyspopupInterface {
+public:
+ SettingsChangesPopup();
+ virtual ~SettingsChangesPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_SETTINGS_CHANGES_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "usb-client.h"
+
+USBClientPopup::USBClientPopup()
+ : SyspopupInterface("IDS_USB_POP_SECURITY_POLICY_RESTRICTS_USE_OF_THE_PC_CONNECTION")
+{
+}
+
+USBClientPopup::~USBClientPopup()
+{
+}
+
+void USBClientPopup::initialize()
+{
+}
+
+void USBClientPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void USBClientPopup::dispose()
+{
+}
+
+SyspopupManager<USBClientPopup> usbClientPopup("usb-client");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_USB_CLIENT_SYSPOPUP_H__
+#define __DPM_USB_CLIENT_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class USBClientPopup : public SyspopupInterface {
+public:
+ USBClientPopup();
+ virtual ~USBClientPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_USB_CLIENT_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "wifi-hotspot.h"
+
+WiFiHotSpotPopup::WiFiHotSpotPopup()
+ : SyspopupInterface(true, "IDS_MOBILEAP_MBODY_HOTSPOT_SPRINT")
+{
+}
+
+WiFiHotSpotPopup::~WiFiHotSpotPopup()
+{
+}
+
+void WiFiHotSpotPopup::initialize()
+{
+}
+
+void WiFiHotSpotPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void WiFiHotSpotPopup::dispose()
+{
+}
+
+SyspopupManager<WiFiHotSpotPopup> wifiHotspotPopup("wifi-hotspot");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_WIFI_HOTSPOT_SYSPOPUP_H__
+#define __DPM_WIFI_HOTSPOT_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class WiFiHotSpotPopup : public SyspopupInterface {
+public:
+ WiFiHotSpotPopup();
+ virtual ~WiFiHotSpotPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_WIFI_HOTSPOT_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "wifi.h"
+
+WiFiPopup::WiFiPopup()
+ : SyspopupInterface("IDS_IDLE_TPOP_SECURITY_POLICY_PREVENTS_USE_OF_WI_FI")
+{
+}
+
+WiFiPopup::~WiFiPopup()
+{
+}
+
+void WiFiPopup::initialize()
+{
+}
+
+void WiFiPopup::contribute(const std::string &userData)
+{
+ createToastPopup();
+}
+
+void WiFiPopup::dispose()
+{
+}
+
+SyspopupManager<WiFiPopup> wifiPopup("wifi");
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_WIFI_SYSPOPUP_H__
+#define __DPM_WIFI_SYSPOPUP_H__
+
+#include "../interface.h"
+
+class WiFiPopup : public SyspopupInterface {
+public:
+ WiFiPopup();
+ virtual ~WiFiPopup();
+
+ void initialize();
+ void contribute(const std::string &userData);
+ void dispose();
+};
+
+#endif /* __DPM_WIFI_SYSPOPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_H__
+#define __DPM_SYSPOPUP_H__
+
+#include "application.h"
+#include "interface.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "org.tizen.dpm-syspopup"
+
+class DPMSyspopup : public Application {
+public:
+ DPMSyspopup();
+ ~DPMSyspopup();
+
+ void onAppControl();
+ void onTerminate();
+
+private:
+ std::string id;
+ std::string userData;
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "appcontrol.h"
+
+AppControl::AppControl(app_control_h handle)
+ : appControl(nullptr)
+{
+ if (handle != nullptr) {
+ ::app_control_clone(&appControl, handle);
+ }
+ replyEventHandler = [](AppControl *, AppControl *, int) {
+ };
+}
+
+AppControl::AppControl(const std::string &id)
+ : appControl(nullptr)
+{
+ ::app_control_create(&appControl);
+ setAppID(id);
+}
+
+AppControl::~AppControl()
+{
+ if (appControl != nullptr)
+ ::app_control_destroy(appControl);
+}
+
+AppControl::operator app_control_h()
+{
+ return appControl;
+}
+
+void AppControl::setAppID(const std::string &id)
+{
+ ::app_control_set_app_id(appControl, id.c_str());
+}
+
+void AppControl::setData(const std::string &key, const std::string &data)
+{
+ ::app_control_add_extra_data(appControl, key.c_str(), data.c_str());
+}
+
+std::string AppControl::getData(const std::string &key)
+{
+ std::string data("");
+ char *appData = nullptr;
+
+ ::app_control_get_extra_data(appControl, key.c_str(), &appData);
+ if (appData) {
+ data = appData;
+ ::free(appData);
+ }
+ return data;
+}
+
+void AppControl::launch(void)
+{
+ ::app_control_send_launch_request(appControl, nullptr, nullptr);
+}
+
+void AppControl::launch(ReplyHandler &&handler)
+{
+ replyEventHandler = std::move(handler);
+ ::app_control_send_launch_request(appControl, replyEventHandlerDispatcher, reinterpret_cast<void *>(this));
+}
+
+void AppControl::replyEventHandlerDispatcher(app_control_h ug, app_control_h reply, app_control_result_e result, void *data)
+{
+ AppControl *appControl = reinterpret_cast<AppControl *>(data);
+ AppControl ugControl(ug);
+ AppControl replyControl(reply);
+
+ appControl->replyEventHandler(&ugControl, &replyControl, result);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_APPCONTROL_H__
+#define __DPM_SYSPOPUP_APPCONTROL_H__
+
+#include <functional>
+#include <app_control_internal.h>
+
+class AppControl {
+public:
+ typedef std::function<void(AppControl *, AppControl *, int)> ReplyHandler;
+ AppControl(app_control_h handle);
+ AppControl(const std::string &id);
+ ~AppControl();
+
+ operator app_control_h();
+
+ void setAppID(const std::string &id);
+ void setData(const std::string &key, const std::string &data);
+ std::string getData(const std::string &key);
+
+ void launch();
+ void launch(ReplyHandler &&handler);
+ static void replyEventHandlerDispatcher(app_control_h ug, app_control_h reply, app_control_result_e result, void *data);
+public:
+ ReplyHandler replyEventHandler;
+private:
+ app_control_h appControl;
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "button.h"
+
+Button::Button(Widget *parent)
+ : Widget("Button", ::elm_button_add(evasObject(parent)))
+{
+ onClick = [](void *event_info) {
+ };
+
+ addSmartHandler("clicked", [this](void *event_info) {
+ this->onClick(event_info);
+ });
+}
+
+Button::~Button()
+{
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_BUTTON_H__
+#define __DPM_SYSPOPUP_BUTTON_H__
+
+#include <functional>
+#include "widget.h"
+
+class Button : public Widget {
+public:
+ Button(Widget *parent);
+ ~Button();
+
+ std::function<void(void*)> onClick;
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "image.h"
+
+Image::Image(Widget *parent)
+ : Widget("Image", ::elm_image_add(evasObject(parent)))
+{
+ evas_object_size_hint_weight_set(evasObject(this), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+}
+
+Image::~Image()
+{
+}
+
+void Image::setFile(const std::string &path)
+{
+ ::elm_image_file_set(evasObject(this), path.c_str(), NULL);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_IMAGE_H__
+#define __DPM_SYSPOPUP_IMAGE_H__
+
+#include "widget.h"
+
+class Image : public Widget {
+public:
+ Image(Widget *parent);
+ ~Image();
+
+ void setFile(const std::string &path);
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "layout.h"
+
+Layout::Layout(Widget *parent)
+ : Widget("Layout", ::elm_layout_add(evasObject(parent)))
+{
+}
+
+Layout::~Layout()
+{
+}
+
+void Layout::setTheme(const std::string &clas, const std::string &group, const std::string &style)
+{
+ ::elm_layout_theme_set(evasObject(this), clas.c_str(), group.c_str(), style.c_str());
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_LAYOUT_H__
+#define __DPM_SYSPOPUP_LAYOUT_H__
+
+#include "widget.h"
+
+class Layout : public Widget {
+public:
+ Layout(Widget *parent);
+ ~Layout();
+
+ void setTheme(const std::string &clas, const std::string &group, const std::string &style);
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "notification.h"
+
+Notification::Notification()
+{
+ notification = ::notification_create(NOTIFICATION_TYPE_NOTI);
+}
+
+Notification::~Notification()
+{
+ if (notification)
+ ::notification_free(notification);
+}
+
+void Notification::setTitle(const std::string &title)
+{
+ int ret;
+
+ ret = ::notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE,
+ dgettext("dpm-syspopup", title.c_str()), NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ if (ret != NOTIFICATION_ERROR_NONE)
+ throw runtime::Exception("Failed to set title to noti");
+}
+
+void Notification::setContent(const std::string &content)
+{
+ int ret;
+
+ ret = ::notification_set_text(notification, NOTIFICATION_TEXT_TYPE_CONTENT,
+ dgettext("dpm-syspopup", content.c_str()), NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ if (ret != NOTIFICATION_ERROR_NONE)
+ throw runtime::Exception("Failed to set content to noti");
+}
+
+void Notification::setImage(const std::string &path)
+{
+ int ret;
+
+ ret = ::notification_set_image(notification, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+ path.c_str());
+
+ if (ret != NOTIFICATION_ERROR_NONE)
+ throw runtime::Exception("Failed to set image to noti");
+}
+
+
+void Notification::setAppControl(AppControl &appControl)
+{
+ int ret;
+
+ ret = ::notification_set_launch_option(notification,
+ NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, appControl);
+
+ if (ret != NOTIFICATION_ERROR_NONE)
+ throw runtime::Exception("Failed to set launch option to noti");
+}
+
+void Notification::post()
+{
+ int ret;
+
+ ret = ::notification_post(notification);
+
+ if (ret != NOTIFICATION_ERROR_NONE)
+ throw runtime::Exception("Failed to post the noti");
+}
+
+void Notification::dispose()
+{
+ ::notification_delete(notification);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_NOTIFICATION_H__
+#define __DPM_SYSPOPUP_NOTIFICATION_H__
+
+#include <notification.h>
+#include "widget.h"
+#include "appcontrol.h"
+
+class Notification {
+public:
+ Notification();
+ ~Notification();
+
+ void setTitle(const std::string &title);
+ void setContent(const std::string &content);
+ void setImage(const std::string &path);
+ void setAppControl(AppControl &appcontrol);
+ void post();
+ void dispose();
+private:
+ notification_h notification;
+};
+
+#endif
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "popup.h"
+
+Popup::Popup(Widget *parent)
+ : Widget("Popup", ::elm_popup_add(evasObject(parent))), leftButton(this), rightButton(this)
+{
+ onDispose = [this]() {
+ ::ui_app_exit();
+ };
+
+ addEcoreHandler(ECORE_EVENT_KEY_DOWN,
+ [this](void *event) {
+ Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event;
+ if (!strcmp(ev->keyname, "XF86Home")
+ || !strcmp(ev->keyname, "XF86Back")) {
+ this->dispose();
+ }
+ return EINA_TRUE;
+ });
+}
+
+Popup::~Popup()
+{
+}
+
+void Popup::setTimeOut(double time)
+{
+ ::elm_popup_timeout_set(evasObject(this), time);
+ addSmartHandler("timeout", [this](void *event_info) {
+ this->dispose();
+ });
+}
+
+void Popup::setAlign(double align)
+{
+ ::elm_popup_align_set(evasObject(this), ELM_NOTIFY_ALIGN_FILL, align);
+}
+
+void Popup::setTitleText(const std::string &text)
+{
+ setText("title,text", text.c_str());
+ ::elm_object_item_part_text_translatable_set(evasObject(this), "title,text", EINA_TRUE);
+}
+
+void Popup::setContentText(const std::string &text)
+{
+ setText(text);
+}
+
+void Popup::setPrefixContentText(const std::string &text)
+{
+ char *prefix = NULL;
+ char *contentText = NULL;
+ char prefixText[PATH_MAX] = "";
+
+ prefix = dgettext("dpm-syspopup", "IDS_IDLE_TPOP_SECURITY_POLICY_RESTRICTS_USE_OF_PS");
+ contentText = dgettext("dpm-syspopup", text.c_str());
+
+ ::snprintf(prefixText, PATH_MAX, prefix, contentText);
+
+ setText(prefixText);
+}
+
+void Popup::setButton(const std::string &text, SmartHandler &&handler)
+{
+ leftButton.setText(text);
+ leftButton.onClick = std::move(handler);
+ setContent("button1", &leftButton);
+}
+
+void Popup::setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler)
+{
+ leftButton.setText(leftText);
+ leftButton.onClick = std::move(leftHandler);
+ setContent("button1", &leftButton);
+
+ rightButton.setText(rightText);
+ rightButton.onClick = std::move(rightHandler);
+ setContent("button2", &rightButton);
+}
+
+MobileToastPopup::MobileToastPopup(Widget *parent)
+ : Popup(parent)
+{
+ setStyle("toast");
+ setTimeOut(3.0);
+}
+
+MobileToastPopup::~MobileToastPopup()
+{
+}
+
+WearableToastPopup::WearableToastPopup(Widget *parent)
+ : Popup(parent)
+{
+ setStyle("toast/circle");
+ setTimeOut(3.0);
+}
+
+WearableToastPopup::~WearableToastPopup()
+{
+}
+
+void WearableToastPopup::setContentText(const std::string &text)
+{
+ setText("elm.text", text);
+}
+
+MobileDefaultPopup::MobileDefaultPopup(Widget *parent)
+ : Popup(parent)
+{
+ setStyle("default");
+ setAlign(1.0);
+}
+
+MobileDefaultPopup::~MobileDefaultPopup()
+{
+}
+
+void MobileDefaultPopup::setButton(const std::string &text, SmartHandler &&handler)
+{
+ Popup::setButton(text, std::forward<SmartHandler>(handler));
+ leftButton.setStyle("popup");
+}
+
+void MobileDefaultPopup::setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler)
+{
+ Popup::setButton(leftText, std::forward<SmartHandler>(leftHandler), rightText, std::forward<SmartHandler>(rightHandler));
+ leftButton.setStyle("popup");
+ rightButton.setStyle("popup");
+}
+
+WearableDefaultPopup::WearableDefaultPopup(Widget *parent)
+ : Popup(parent), layout(this), leftButtonImage(&leftButton), rightButtonImage(&rightButton)
+{
+ setStyle("circle");
+ setAlign(1.0);
+ setContent(&layout);
+}
+
+WearableDefaultPopup::~WearableDefaultPopup()
+{
+}
+
+void WearableDefaultPopup::setTitleText(const std::string &text)
+{
+ layout.setText("elm.text.title", text.c_str());
+}
+
+void WearableDefaultPopup::setContentText(const std::string &text)
+{
+ layout.setText("elm.text", text.c_str());
+}
+
+void WearableDefaultPopup::setButton(const std::string &text, SmartHandler &&handler)
+{
+ layout.setTheme("layout", "popup", "content/circle/buttons1");
+
+ leftButton.setStyle("bottom");
+ leftButton.onClick = std::move(handler);
+
+ leftButtonImage.setFile("/usr/apps/org.tizen.dpm-syspopup/res/images/tw_ic_popup_btn_delete.png");
+ leftButton.setContent(&leftButtonImage);
+}
+
+void WearableDefaultPopup::setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler)
+{
+ layout.setTheme("layout", "popup", "content/circle/buttons2");
+
+ leftButton.setStyle("popup/circle/left");
+ leftButton.onClick = std::move(leftHandler);
+
+ leftButtonImage.setFile("/usr/apps/org.tizen.dpm-syspopup/res/images/tw_ic_popup_btn_delete.png");
+ leftButton.setContent(&leftButtonImage);
+
+ rightButton.setStyle("popup/circle/right");
+ rightButton.onClick = std::move(rightHandler);
+
+ rightButtonImage.setFile("/usr/apps/org.tizen.dpm-syspopup/res/images/tw_ic_popup_btn_check.png");
+ rightButton.setContent(&rightButtonImage);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_POPUP_H__
+#define __DPM_SYSPOPUP_POPUP_H__
+
+#include <memory>
+
+#include "widget.h"
+#include "button.h"
+#include "layout.h"
+#include "image.h"
+
+struct PopupInfo {
+ int type;
+ std::string title;
+ std::string content;
+};
+
+class Popup : public Widget {
+public:
+ Popup(Widget *parent);
+ virtual ~Popup();
+
+ void setTimeOut(double time);
+ void setAlign(double align);
+
+ virtual void setTitleText(const std::string &text);
+ virtual void setContentText(const std::string &text);
+ virtual void setPrefixContentText(const std::string &text);
+ virtual void setButton(const std::string &text, SmartHandler &&handler);
+ virtual void setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler);
+
+ std::function<void()> onDelete;
+protected:
+ Button leftButton;
+ Button rightButton;
+};
+
+class MobileToastPopup : public Popup {
+public:
+ MobileToastPopup(Widget *parent);
+ ~MobileToastPopup();
+};
+
+class WearableToastPopup : public Popup {
+public:
+ WearableToastPopup(Widget *parent);
+ ~WearableToastPopup();
+
+ void setContentText(const std::string &text);
+};
+
+class MobileDefaultPopup : public Popup {
+public:
+ MobileDefaultPopup(Widget *parent);
+ ~MobileDefaultPopup();
+
+ void setButton(const std::string &text, SmartHandler &&handler);
+ void setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler);
+};
+
+class WearableDefaultPopup : public Popup {
+public:
+ WearableDefaultPopup(Widget *parent);
+ ~WearableDefaultPopup();
+
+ void setTitleText(const std::string &text);
+ void setContentText(const std::string &text);
+ void setButton(const std::string &text, SmartHandler &&handler);
+ void setButton(const std::string &leftText, SmartHandler &&leftHandler, const std::string &rightText, SmartHandler &&rightHandler);
+
+ Layout layout;
+
+ Image leftButtonImage;
+ Image rightButtonImage;
+};
+
+#endif /* __DPM_SYSPOPUP_POPUP_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+#include "widget.h"
+
+Widget::Widget(const std::string &t, Evas_Object *obj)
+ : object(obj), tag(t), disposed(false)
+{
+ onShow = [this]() {
+ };
+ onHide = [this]() {
+ };
+ onDispose = [this]() {
+ };
+
+ addEventHandler(EVAS_CALLBACK_SHOW, [this](void *event_info) {
+ this->onShow();
+ });
+ addEventHandler(EVAS_CALLBACK_HIDE, [this](void *event_info) {
+ this->onHide();
+ });
+ addEventHandler(EVAS_CALLBACK_DEL, [this](void *event_info) {
+ this->onDispose();
+ });
+
+ ::evas_object_size_hint_weight_set(object, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+}
+
+Widget::~Widget()
+{
+ if (!disposed)
+ dispose();
+
+ eventList.clear();
+ smartList.clear();
+ ecoreList.clear();
+}
+
+void Widget::setText(const std::string &text)
+{
+ ::elm_object_text_set(object, dgettext("dpm-syspopup", text.c_str()));
+}
+
+void Widget::setText(const std::string &part, const std::string &text)
+{
+ ::elm_object_part_text_set(object, part.c_str(), dgettext("dpm-syspopup", text.c_str()));
+}
+
+void Widget::setStyle(const std::string &style)
+{
+ ::elm_object_style_set(object, style.c_str());
+}
+
+void Widget::setContent(Widget *content)
+{
+ ::elm_object_content_set(object, evasObject(content));
+}
+
+void Widget::setContent(const std::string &part, Widget *content)
+{
+ ::elm_object_part_content_set(object, part.c_str(), evasObject(content));
+}
+
+void Widget::show(void)
+{
+ ::evas_object_show(object);
+}
+
+void Widget::hide(void)
+{
+ ::evas_object_hide(object);
+}
+
+void Widget::dispose(void)
+{
+ if (disposed)
+ return;
+
+ disposed = true;
+ ::evas_object_del(object);
+}
+
+Evas_Object *Widget::evasObject(Widget *widget)
+{
+ return widget ? widget->object : nullptr;
+}
+
+void Widget::smartHandlerDispatcher(void *data, Evas_Object *obj, void *event_info)
+{
+ SmartHandler *handler = reinterpret_cast<SmartHandler *>(data);
+ (*handler)(event_info);
+}
+
+void Widget::eventHandlerDispatcher(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+ EventHandler *handler = reinterpret_cast<EventHandler *>(data);
+ (*handler)(event_info);
+}
+
+Eina_Bool Widget::ecoreHandlerDispatcher(void *data, int type, void *event)
+{
+ bool ret = EINA_FALSE;
+ EcoreHandler *handler = reinterpret_cast<EcoreHandler *>(data);
+ ret = (*handler)(event);
+ return ret;
+}
+
+void Widget::addEventHandler(Evas_Callback_Type type, EventHandler &&handler)
+{
+ eventList[type] = std::move(handler);
+ ::evas_object_event_callback_add(object, type, eventHandlerDispatcher, reinterpret_cast<void *>(&eventList[type]));
+}
+
+void Widget::addSmartHandler(const std::string &event, SmartHandler &&handler)
+{
+ smartList[event] = std::move(handler);
+ ::evas_object_smart_callback_add(object, event.c_str(), smartHandlerDispatcher, reinterpret_cast<void *>(&smartList[event]));
+}
+
+void Widget::addEcoreHandler(int type, EcoreHandler &&handler)
+{
+ ecoreList[type].handler = std::move(handler);
+ ecoreList[type].ecoreHandler = ::ecore_event_handler_add(type, ecoreHandlerDispatcher, reinterpret_cast<void *>(&ecoreList[type].handler));
+}
+
+void Widget::deleteEcoreHandler(int type)
+{
+ if (ecoreList.find(type) != ecoreList.end() && ecoreList[type].ecoreHandler != nullptr) {
+ ::ecore_event_handler_del(ecoreList[type].ecoreHandler);
+ }
+ ecoreList[type].ecoreHandler = nullptr;
+ ecoreList.erase(type);
+}
+
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_WIDGET_H__
+#define __DPM_SYSPOPUP_WIDGET_H__
+
+#include <functional>
+#include <unordered_map>
+
+#include <app.h>
+#include <app_common.h>
+#include <bundle.h>
+#include <system_settings.h>
+#include <Elementary.h>
+#include <efl_util.h>
+#include <klay/exception.h>
+
+class Widget {
+public:
+ typedef std::function<void(void *event)> EventHandler;
+ typedef std::function<void(void *event)> SmartHandler;
+ typedef std::function<Eina_Bool(void *event)> EcoreHandler;
+
+ virtual ~Widget();
+
+ void setText(const std::string &text);
+ void setText(const std::string &part, const std::string &text);
+ void setStyle(const std::string &style);
+ void setContent(Widget *content);
+ void setContent(const std::string &part, Widget *content);
+ void show();
+ void hide();
+ void dispose();
+
+ void addEventHandler(Evas_Callback_Type type, EventHandler &&handler);
+ void addSmartHandler(const std::string &event, SmartHandler &&handler);
+ void addEcoreHandler(int type, EcoreHandler &&handler);
+ void deleteEcoreHandler(int type);
+
+ static void smartHandlerDispatcher(void *data, Evas_Object *obj, void *event_info);
+ static void eventHandlerDispatcher(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+ static Eina_Bool ecoreHandlerDispatcher(void *data, int type, void *event);
+
+ std::function<void()> onShow;
+ std::function<void()> onHide;
+ std::function<void()> onDispose;
+
+protected:
+ Widget(const std::string &t, Evas_Object *obj);
+ virtual Evas_Object *evasObject(Widget *widget);
+
+protected:
+ std::unordered_map<int, EventHandler> eventList;
+ std::unordered_map<std::string, SmartHandler> smartList;
+
+ struct EcoreInfo {
+ EcoreInfo() : ecoreHandler(nullptr) {
+ }
+ EcoreHandler handler;
+ Ecore_Event_Handler *ecoreHandler;
+ };
+ std::unordered_map<int, EcoreInfo> ecoreList;
+private:
+ Evas_Object *object;
+ std::string tag;
+ bool disposed;
+};
+
+#endif /* __WIDGET_H__ */
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#include "window.h"
+
+Window::Window(const std::string &packageName)
+ : Widget("Window", ::elm_win_add(NULL, packageName.c_str(), ELM_WIN_NOTIFICATION))
+{
+ ::elm_win_title_set(evasObject(this), packageName.c_str());
+ setRotate();
+ setConfig();
+ show();
+}
+
+Window::~Window()
+{
+}
+
+void Window::setRotate()
+{
+ int rots[] = {0, 90, 180, 270};
+
+ if (::elm_win_wm_rotation_supported_get(evasObject(this)))
+ ::elm_win_wm_rotation_available_rotations_set(evasObject(this), rots, 4);
+}
+
+void Window::setConfig()
+{
+ ::efl_util_set_notification_window_level(evasObject(this), EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+ ::elm_win_borderless_set(evasObject(this), EINA_TRUE);
+ ::elm_win_alpha_set(evasObject(this), EINA_TRUE);
+ ::elm_win_autodel_set(evasObject(this), EINA_TRUE);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2017 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.
+ *
+ */
+
+#ifndef __DPM_SYSPOPUP_WINDOW_H__
+#define __DPM_SYSPOPUP_WINDOW_H__
+
+#include "widget.h"
+
+class Window : public Widget {
+public:
+ Window(const std::string &packageName);
+ ~Window();
+
+private:
+ void setRotate();
+ void setConfig();
+};
+
+#endif /*__DPM_WINDOW_SYSPOPUP_H__*/
--- /dev/null
+# Copyright (c) 2019 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.
+#
+
+SET(TARGET_SYSPOPUP device-policy-syspopup)
+
+# TODO: minimize dependencies
+SET(SERVER_DEP klay
+ glib-2.0
+ gio-2.0
+ sqlite3
+ bundle
+ aul
+ appsvc
+ pkgmgr
+ pkgmgr-info
+ vconf
+ syspopup-caller
+ deviced
+ libtzplatform-config
+ cynara-client
+ cynara-session)
+
+SET(SYSPOPUP syspopup.cpp
+ syspopup-service.cpp)
+
+
+PKG_CHECK_MODULES(SERVER_DEPS REQUIRED ${SERVER_DEP})
+
+INCLUDE_DIRECTORIES(${SERVER_DEPS_INCLUDE_DIRS})
+
+ADD_EXECUTABLE(${TARGET_SYSPOPUP} ${SYSPOPUP})
+TARGET_LINK_LIBRARIES(${TARGET_SYSPOPUP} ${SERVER_DEPS_LIBRARIES} dpm-pil)
+
+SET_TARGET_PROPERTIES(${TARGET_SYSPOPUP} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${TARGET_SYSPOPUP} PROPERTIES LINK_FLAGS "-pie")
+
+INSTALL(TARGETS ${TARGET_SYSPOPUP} DESTINATION bin)
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#include "syspopup.h"
+#include <klay/gmainloop.h>
+#include <klay/audit/logger.h>
+#include <klay/audit/dlog-sink.h>
+#include <glib.h>
+#include <unistd.h>
+#include <thread>
+
+namespace {
+
+std::unique_ptr<audit::DlogLogSink> _sink = nullptr;
+
+} // namespace
+
+audit::LogSink *SINK = nullptr;
+
+class SyspopupMainLoop {
+public:
+ SyspopupMainLoop() :
+ mainloop(g_main_loop_new(NULL, FALSE), g_main_loop_unref)
+ {
+ handle = std::thread(g_main_loop_run, mainloop.get());
+ }
+ ~SyspopupMainLoop()
+ {
+ while (!g_main_loop_is_running(mainloop.get())) {
+ std::this_thread::yield();
+ }
+ g_main_loop_quit(mainloop.get());
+ handle.join();
+ }
+private:
+ std::unique_ptr<GMainLoop, void(*)(GMainLoop*)> mainloop;
+ std::thread handle;
+};
+
+int main()
+{
+ _sink.reset(new audit::DlogLogSink("DPM"));
+ SINK = dynamic_cast<audit::LogSink*>((_sink).get());
+
+ try {
+ SyspopupMainLoop mainloop;
+ SyspopupService syspopup;
+ syspopup.run();
+
+ ::sleep(3);
+ } catch (std::exception &e) {
+ ERROR(SINK, e.what());
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+#include <unistd.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <string>
+#include <stdexcept>
+
+#include <bundle.h>
+#include <tzplatform_config.h>
+
+#include <klay/exception.h>
+#include <klay/auth/user.h>
+#include <klay/dbus/connection.h>
+#include <klay/audit/logger.h>
+
+#include "pil/launchpad.h"
+
+#include "syspopup.h"
+
+using namespace std::placeholders;
+
+namespace {
+
+const std::string SYSPOPUP_BUS_NAME = "org.tizen.DevicePolicyManager";
+const std::string SYSPOPUP_OBJECT_PATH = "/org/tizen/DevicePolicyManager/Syspopup";
+const std::string SYSPOPUP_INTERFACE = "org.tizen.DevicePolicyManager.Syspopup";
+const std::string SYSPOPUP_METHOD_SHOW = "show";
+
+const std::string manifest =
+ "<node>"
+ " <interface name='" + SYSPOPUP_INTERFACE + "'>"
+ " <method name='" + SYSPOPUP_METHOD_SHOW + "'>"
+ " <arg type='s' name='id' direction='in'/>"
+ " <arg type='b' name='result' direction='out'/>"
+ " </method>"
+ " </interface>"
+ "</node>";
+
+} // namespace
+
+dbus::Variant SyspopupService::onMethodCall(const std::string& objectPath,
+ const std::string& interface,
+ const std::string& methodName,
+ dbus::Variant parameters)
+{
+ if (objectPath != SYSPOPUP_OBJECT_PATH || interface != SYSPOPUP_INTERFACE) {
+ throw runtime::Exception("Invalid Interface");
+ }
+ if (methodName != SYSPOPUP_METHOD_SHOW) {
+ throw runtime::Exception("Unknown Method");
+ }
+
+ const gchar *id = NULL;
+ parameters.get("(&s)", &id);
+
+ Bundle bundle;
+ bundle.add("id", id);
+
+ Launchpad launchpad(activeUser);
+ launchpad.launch("org.tizen.dpm-syspopup", bundle);
+
+ return dbus::Variant("(b)", true);
+}
+
+void SyspopupService::onNameAcquired()
+{
+}
+
+void SyspopupService::onNameLost()
+{
+}
+
+SyspopupService::~SyspopupService()
+{
+}
+
+SyspopupService::SyspopupService()
+{
+ runtime::User defaultUser(::tzplatform_getenv(TZ_SYS_DEFAULT_USER));
+ activeUser = defaultUser.getUid();
+}
+
+void SyspopupService::run()
+{
+ dbus::Connection& connection = dbus::Connection::getSystem();
+ connection.setName(SYSPOPUP_BUS_NAME,
+ std::bind(&SyspopupService::onNameAcquired, this),
+ std::bind(&SyspopupService::onNameLost, this));
+
+ connection.registerObject(SYSPOPUP_OBJECT_PATH, manifest,
+ std::bind(&SyspopupService::onMethodCall, this, _1, _2, _3, _4),
+ nullptr);
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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
+ */
+
+#ifndef __DPM_SYSPOPUP_SERVICE_H__
+#define __DPM_SYSPOPUP_SERVICE_H__
+
+#include <string>
+
+#include <klay/dbus/connection.h>
+
+class SyspopupService {
+public:
+ SyspopupService();
+ ~SyspopupService();
+
+ void run();
+
+private:
+ dbus::Variant onMethodCall(const std::string& objectPath,
+ const std::string& interface,
+ const std::string& methodName,
+ dbus::Variant parameters);
+
+ void onNameAcquired();
+ void onNameLost();
+
+private:
+ uid_t activeUser;
+};
+
+#endif //__DPM_SYSPOPUP_SERVICE_H__