diff options
author | Yunjin Lee <yunjin-.lee@samsung.com> | 2020-03-04 16:38:52 +0900 |
---|---|---|
committer | Yunjin Lee <yunjin-.lee@samsung.com> | 2020-03-09 15:55:06 +0900 |
commit | 935ea47811bbd2f78538c92afbcfd1c978054cb9 (patch) | |
tree | 372eb0efb9d14ebef52c7dd4e97afa3016f2841e | |
parent | da0c8ec3073d36567a7416da049bce00e519e2db (diff) | |
download | askuser-popup-935ea47811bbd2f78538c92afbcfd1c978054cb9.tar.gz askuser-popup-935ea47811bbd2f78538c92afbcfd1c978054cb9.tar.bz2 askuser-popup-935ea47811bbd2f78538c92afbcfd1c978054cb9.zip |
Refine askuser-popupsubmit/tizen_5.5/20200309.073500submit/tizen/20200311.043751submit/tizen/20200309.073354accepted/tizen/unified/20200311.130747accepted/tizen/5.5/unified/20200310.151212
- Add DID for page num AO
- Apply ppm_popup_send_response()
- Use TEXT instead of SWALLOW part for popup contents
- Remove custom layout
- Check return value
- Check unfocused
- Modify contents to grab highlight
- Show as multi mode when privacy_num is greater than 1
Change-Id: I5de978662f107e562fd2b432f79e346aadb8a93d
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | common/include/common_utils.h | 13 | ||||
-rw-r--r-- | common/src/common_utils.c | 9 | ||||
-rwxr-xr-x | packaging/org.tizen.askuser-popup.spec | 7 | ||||
-rwxr-xr-x | po/CMakeLists.txt | 1 | ||||
-rwxr-xr-x | po/ar.po | 3 | ||||
-rwxr-xr-x | po/as.po | 3 | ||||
-rwxr-xr-x | po/az.po | 3 | ||||
-rwxr-xr-x | po/be_BY.po | 3 | ||||
-rwxr-xr-x | po/bg.po | 3 | ||||
-rwxr-xr-x | po/bn.po | 3 | ||||
-rwxr-xr-x | po/bn_BD.po | 3 | ||||
-rwxr-xr-x | po/bs_BA.po | 24 | ||||
-rwxr-xr-x | po/ca.po | 3 | ||||
-rwxr-xr-x | po/cs.po | 3 | ||||
-rwxr-xr-x | po/da.po | 3 | ||||
-rwxr-xr-x | po/de.po | 3 | ||||
-rwxr-xr-x | po/el_GR.po | 3 | ||||
-rwxr-xr-x | po/en.po | 3 | ||||
-rwxr-xr-x | po/en_PH.po | 3 | ||||
-rwxr-xr-x | po/en_US.po | 3 | ||||
-rwxr-xr-x | po/es_ES.po | 3 | ||||
-rwxr-xr-x | po/es_US.po | 3 | ||||
-rwxr-xr-x | po/et.po | 3 | ||||
-rwxr-xr-x | po/eu.po | 3 | ||||
-rwxr-xr-x | po/fa.po | 3 | ||||
-rwxr-xr-x | po/fi.po | 3 | ||||
-rwxr-xr-x | po/fr.po | 5 | ||||
-rwxr-xr-x | po/fr_CA.po | 5 | ||||
-rwxr-xr-x | po/ga.po | 3 | ||||
-rwxr-xr-x | po/gl.po | 3 | ||||
-rwxr-xr-x | po/gu.po | 3 | ||||
-rwxr-xr-x | po/he.po | 3 | ||||
-rwxr-xr-x | po/hi.po | 3 | ||||
-rwxr-xr-x | po/hr.po | 3 | ||||
-rwxr-xr-x | po/hu.po | 3 | ||||
-rwxr-xr-x | po/hy.po | 3 | ||||
-rwxr-xr-x | po/id.po | 3 | ||||
-rwxr-xr-x | po/is.po | 3 | ||||
-rwxr-xr-x | po/it_IT.po | 3 | ||||
-rwxr-xr-x | po/ja_JP.po | 3 | ||||
-rwxr-xr-x | po/ka.po | 3 | ||||
-rwxr-xr-x | po/kk.po | 3 | ||||
-rwxr-xr-x | po/km.po | 3 | ||||
-rwxr-xr-x | po/kn.po | 3 | ||||
-rwxr-xr-x | po/ko_KR.po | 3 | ||||
-rwxr-xr-x | po/ky_KG.po | 3 | ||||
-rwxr-xr-x | po/lo.po | 3 | ||||
-rwxr-xr-x | po/lt.po | 3 | ||||
-rwxr-xr-x | po/lv.po | 3 | ||||
-rwxr-xr-x | po/mk.po | 3 | ||||
-rwxr-xr-x | po/ml.po | 3 | ||||
-rwxr-xr-x | po/mn_MN.po | 3 | ||||
-rwxr-xr-x | po/mr.po | 3 | ||||
-rwxr-xr-x | po/ms.po | 3 | ||||
-rwxr-xr-x | po/my_MM.po | 3 | ||||
-rwxr-xr-x | po/my_ZG.po | 3 | ||||
-rwxr-xr-x | po/nb.po | 3 | ||||
-rwxr-xr-x | po/ne.po | 3 | ||||
-rwxr-xr-x | po/nl.po | 3 | ||||
-rwxr-xr-x | po/or.po | 3 | ||||
-rwxr-xr-x | po/pa.po | 3 | ||||
-rwxr-xr-x | po/pl.po | 3 | ||||
-rwxr-xr-x | po/pl_SP.po | 3 | ||||
-rwxr-xr-x | po/pt_BR.po | 3 | ||||
-rwxr-xr-x | po/pt_PT.po | 3 | ||||
-rwxr-xr-x | po/ro.po | 3 | ||||
-rwxr-xr-x | po/ru_RU.po | 3 | ||||
-rwxr-xr-x | po/si.po | 3 | ||||
-rwxr-xr-x | po/sk.po | 3 | ||||
-rwxr-xr-x | po/sl.po | 3 | ||||
-rwxr-xr-x | po/sq.po | 3 | ||||
-rwxr-xr-x | po/sr.po | 3 | ||||
-rwxr-xr-x | po/sv.po | 3 | ||||
-rwxr-xr-x | po/ta.po | 3 | ||||
-rwxr-xr-x | po/te.po | 3 | ||||
-rwxr-xr-x | po/tg_TJ.po | 3 | ||||
-rwxr-xr-x | po/th.po | 3 | ||||
-rwxr-xr-x | po/tk_TM.po | 3 | ||||
-rwxr-xr-x | po/tl.po | 3 | ||||
-rwxr-xr-x | po/tr_TR.po | 3 | ||||
-rwxr-xr-x | po/uk.po | 3 | ||||
-rwxr-xr-x | po/ur.po | 3 | ||||
-rwxr-xr-x | po/uz.po | 3 | ||||
-rwxr-xr-x | po/vi.po | 3 | ||||
-rwxr-xr-x | po/zh_CN.po | 3 | ||||
-rwxr-xr-x | po/zh_HK.po | 3 | ||||
-rwxr-xr-x | po/zh_TW.po | 3 | ||||
-rw-r--r-- | res/edc/popup_custom.edc | 62 | ||||
-rwxr-xr-x | ui/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ui/src/app_main.c | 178 | ||||
-rw-r--r-- | ui/src/popup.c | 221 |
92 files changed, 518 insertions, 256 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bd295a8..2ba57d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,13 +46,6 @@ SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) ADD_SUBDIRECTORY(ui) ADD_SUBDIRECTORY(po) -ADD_CUSTOM_TARGET(popup_custom.edj - COMMAND edje_cc -no-save res/edc/popup_custom.edc res/popup_custom.edj - DEPENDS res/edc/popup_custom.edc - ) -ADD_DEPENDENCIES(org.tizen.askuser-popup popup_custom.edj) - -INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/popup_custom.edj DESTINATION ${RESDIR}/edje/) INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/button DESTINATION ${TZ_SYS_RO_APP}/org.tizen.askuser-popup/res FILES_MATCHING PATTERN "*.png") INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/icon DESTINATION ${TZ_SYS_RO_APP}/org.tizen.askuser-popup/res FILES_MATCHING PATTERN "*.png") INSTALL(FILES ${CMAKE_SOURCE_DIR}/packaging/org.tizen.askuser-popup.xml DESTINATION ${TZ_SYS_RO_PACKAGES}/) diff --git a/common/include/common_utils.h b/common/include/common_utils.h index 5d57de8..f8ff9c2 100644 --- a/common/include/common_utils.h +++ b/common/include/common_utils.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2019-2020 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. @@ -28,8 +28,8 @@ #include <app.h> #include <dlog.h> #include <app_control_internal.h> - - +#include <efl_extension.h> +#include <ppm_popup.h> #ifdef _cplusplus extern "C" { @@ -61,7 +61,7 @@ extern "C" { typedef struct { char* privacy; bool user_responsed; - char* response; + ppm_popup_response_e response; } privacy_data_s; typedef struct _app_data_s { @@ -75,16 +75,15 @@ typedef struct _app_data_s { Evas_Object *eext_scroller; Evas_Object *btn_l; Evas_Object *btn_r; - Evas_Object *label; - Evas_Object *counter; + Evas_Object *ao_contents; Eext_Circle_Surface *circle_surface; - app_control_h caller; char* caller_pkgid; bool all_responded; char* launch_type; + int popup_id; GList* privacy_list; int privacy_num; diff --git a/common/src/common_utils.c b/common/src/common_utils.c index 23c68c1..27b6e73 100644 --- a/common/src/common_utils.c +++ b/common/src/common_utils.c @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2019-2020 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. @@ -20,8 +20,6 @@ * @brief */ -#include <efl_extension.h> - #include "common_utils.h" privacy_data_s* new_privacy_data() @@ -33,7 +31,7 @@ privacy_data_s* new_privacy_data() } pd->privacy = NULL; pd->user_responsed = false; - pd->response = NULL; + pd->response = PRIVACY_PRIVILEGE_MANAGER_POPUP_RESPONSE_DENY_ONCE; return pd; } @@ -42,6 +40,7 @@ void init_app_data(app_data_s* ad) ad->all_responded = false; ad->launch_type = NULL; ad->caller_pkgid = NULL; + ad->popup_id = 0; ad->privacy_list = NULL; ad->privacy_num = 0; @@ -52,8 +51,6 @@ void __free_privacy_data(privacy_data_s* pd) { if (pd->privacy) free(pd->privacy); - if (pd->response) - free(pd->response); } void free_privacy_data(gpointer pd) diff --git a/packaging/org.tizen.askuser-popup.spec b/packaging/org.tizen.askuser-popup.spec index 4a231f5..0b4fe9c 100755 --- a/packaging/org.tizen.askuser-popup.spec +++ b/packaging/org.tizen.askuser-popup.spec @@ -3,7 +3,7 @@ Name: org.tizen.askuser-popup-profile_wearable Summary: Ask user popup for wearable profile -Version: 0.0.1 +Version: 0.0.2 Release: 0 Provides: org.tizen.askuser-popup = %{version}-%{release} Group: Applications/Other @@ -24,7 +24,9 @@ BuildRequires: pkgconfig(security-privilege-manager) BuildRequires: pkgconfig(pkgmgr-info) BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: pkgconfig(capi-privacy-privilege-manager) BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(capi-system-device) %description Application providing ui for requesting privacy permission to the user. @@ -73,6 +75,3 @@ make %{?_smp_mflags} %{PREFIX}/bin/ %{PREFIX}/res/icon/ %{PREFIX}/res/button/ -%{PREFIX}/res/edje/ - - diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 4dd815d..552bb90 100755 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -6,6 +6,7 @@ SET(POFILES bg.po bn_BD.po bn.po + bs_BA.po ca.po cs.po da.po @@ -16,6 +16,9 @@ msgstr "رفض" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "طلب الخصوصية" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "الصفحة %d من %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "اسمح لـ %1$s بالوصول إلى إذن %2$s." @@ -16,6 +16,9 @@ msgstr "অস্বীকাৰ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "গোপনীয়তাৰ অনুৰোধ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d-ৰ %d পৃষ্ঠা৷" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s অনুমতিৰ বাবে %1$s প্ৰৱেশৰ অনুমতি দিয়ক।" @@ -16,6 +16,9 @@ msgstr "Rədd et" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Məxfilik sorğusu" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Səhifə %d / %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s %2$s icazəsinə çıxış icazəsi ver." diff --git a/po/be_BY.po b/po/be_BY.po index c765087..0966f7d 100755 --- a/po/be_BY.po +++ b/po/be_BY.po @@ -16,6 +16,9 @@ msgstr "Адхіліць" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Запыт аб прыватнасці" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Старонка %d з %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Даць %1$s дазвол на доступ %2$s." @@ -16,6 +16,9 @@ msgstr "Отказ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Заявка за поверителна информация" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Стр. %d от %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Позволете на %1$s достъп до разрешението %2$s." @@ -16,6 +16,9 @@ msgstr "অস্বীকার" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "গোপনীয়তার অনুরোধ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d-টির মধ্যে %dটি পৃষ্ঠা।" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$sকে %2$s অনুমতিতে অ্যাক্সেস করতে মঞ্জুর করুন।" diff --git a/po/bn_BD.po b/po/bn_BD.po index 183b3ca..4747eb0 100755 --- a/po/bn_BD.po +++ b/po/bn_BD.po @@ -16,6 +16,9 @@ msgstr "প্রত্যাখ্যান" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "গোপনীয়তার অনুরোধ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d-এর মধ্যে পেইজ %d।" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s-কে %2$s অনুমতি অ্যাক্সেস করার অনুমোদন দিন৷" diff --git a/po/bs_BA.po b/po/bs_BA.po new file mode 100755 index 0000000..4896b9a --- /dev/null +++ b/po/bs_BA.po @@ -0,0 +1,24 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Plural-Forms: nplurals=6; plural=(n%10==1 && n%100!=11 ? 1 : n%10 >=2 && n%10 <=4 && !(n%100>=12 && n%100<=14) ? 3 : 5);" + + +msgid "IDS_CLOCK_BODY_DONT_REPEAT_ABB" +msgstr "Ne ponavljaj." + +msgid "IDS_IDLE_BUTTON_ALLOW_ABB7" +msgstr "Dozvoli" + +msgid "IDS_IDLE_BUTTON_DENY" +msgstr "Odbij" + +msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" +msgstr "Zahtjev za privatnost" + +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Stranica %d od %d." + +msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" +msgstr "Dozvolite aplikaciji %1$s pristup dozvoli %2$s." + @@ -16,6 +16,9 @@ msgstr "Denegar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Sol·licitud de privadesa" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Pàgina %d de %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Permet que %1$s accedeixi al permís %2$s." @@ -16,6 +16,9 @@ msgstr "Odmítnout" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Požadavek na ochranu osobních údajů" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Stránka %d z %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Povolte aplikaci %1$s přístup k oprávnění %2$s." @@ -16,6 +16,9 @@ msgstr "Afvis" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Fortrolighedsanmodning" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Side %d af %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Giv %1$s adgang til tilladelsen %2$s." @@ -16,6 +16,9 @@ msgstr "Ablehnen" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Datenschutzanfrage" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Seite %d von %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s den Zugriff auf %2$s erlauben." diff --git a/po/el_GR.po b/po/el_GR.po index df97f17..b6545b8 100755 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -16,6 +16,9 @@ msgstr "Απόρριψη" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Αίτηση απορρήτου" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Σελίδα %d από %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Επιτρέψτε στην εφαρμογή %1$s την πρόσβαση στο δικαίωμα %2$s." @@ -16,6 +16,9 @@ msgstr "Deny" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Privacy request" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Page %d of %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Allow %1$s access to %2$s permission." diff --git a/po/en_PH.po b/po/en_PH.po index 8ec01a4..8f42eab 100755 --- a/po/en_PH.po +++ b/po/en_PH.po @@ -16,6 +16,9 @@ msgstr "Deny" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Privacy request" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Page %d of %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Allow %1$s access to %2$s permission." diff --git a/po/en_US.po b/po/en_US.po index 8ec01a4..8f42eab 100755 --- a/po/en_US.po +++ b/po/en_US.po @@ -16,6 +16,9 @@ msgstr "Deny" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Privacy request" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Page %d of %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Allow %1$s access to %2$s permission." diff --git a/po/es_ES.po b/po/es_ES.po index 1dfd604..3edd426 100755 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -16,6 +16,9 @@ msgstr "Rechazar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Solicitud de privacidad" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Página %d de %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Conceder que %1$s acceda al permiso %2$s." diff --git a/po/es_US.po b/po/es_US.po index 2e32d7b..fa7e93a 100755 --- a/po/es_US.po +++ b/po/es_US.po @@ -16,6 +16,9 @@ msgstr "Rechazar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Solicitud de privacidad" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Página %d de %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Permitir que %1$s acceda a %2$s." @@ -16,6 +16,9 @@ msgstr "Keela" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Privaatsustaotlus" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Lehekülg %d/%d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Andke rakendusele %1$s juurdepääs loale %2$s." @@ -16,6 +16,9 @@ msgstr "Ukatu" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Pribatutasun eskaera" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d. orria %d-tik" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Baimendu %1$s aplikazioari %2$s atzitzea." @@ -16,6 +16,9 @@ msgstr "رد کردن" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "درخواست حریم خصوصی" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "صفحه %d از %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "به %1$s اجازه دسترسی به %2$s بدهید." @@ -16,6 +16,9 @@ msgstr "Estä" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Tietosuojapyyntö" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Sivu %d / %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Salli, että %1$s käyttää käyttöoikeutta %2$s." @@ -16,6 +16,9 @@ msgstr "Refuser" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Demande de confidentialité" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Page %d sur %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" -msgstr "Accordez à %1$s l'accès à l'autorisation %2$s." +msgstr "Accordez à %1$s l'accès à %2$s." diff --git a/po/fr_CA.po b/po/fr_CA.po index 2820a32..53b5111 100755 --- a/po/fr_CA.po +++ b/po/fr_CA.po @@ -16,6 +16,9 @@ msgstr "Refuser" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Demande de confidentialité" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Page %d sur %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" -msgstr "Accordez à %1$s l'accès à l'autorisation %2$s." +msgstr "Accordez à %1$s l'accès à %2$s." @@ -16,6 +16,9 @@ msgstr "Diúltaigh" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Iarratas príobháide" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Leathanach %d de %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Ceadaigh do %1$s an cead %2$s a rochtain." @@ -16,6 +16,9 @@ msgstr "Denegar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Solicitude de privacidade" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Páxina %d de %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Permite que %1$s acceda ao permiso %2$s." @@ -16,6 +16,9 @@ msgstr "નકારો" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ગોપનીયતા વિનંતી" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d માંથી %d પૃષ્ઠ." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ને %2$s ની મંજૂરીથી સંમત થાઓ." @@ -16,6 +16,9 @@ msgstr "דחה" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "בקשת פרטיות" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "עמוד %d מתוך %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "אשר ל-%1$s גישה להרשאת %2$s." @@ -16,6 +16,9 @@ msgstr "अस्वीकारें" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "गोपनीयता अनुरोध" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "पेज %d के %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s को %2$s अनुमति एक्सेस करने की अनुमति दें।" @@ -16,6 +16,9 @@ msgstr "Odbij" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Zahtjev za pristup privatnim podacima" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Stranica %d od %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Dopustite aplikaciji %1$s da pristupi dopuštenju %2$s." @@ -16,6 +16,9 @@ msgstr "Tilt" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Adatvédelmi kérés" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d. oldal, összesen: %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "A(z) %2$s engedély megadása a(z) %1$s számára." @@ -16,6 +16,9 @@ msgstr "Մերժել" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Գաղտնիության պահանջ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Էջ %d՝ %d-ից:" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Թույլ տալ, որ %1$s-ն օգտվի %2$s թույլտվությունից:" @@ -16,6 +16,9 @@ msgstr "Tolak" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Permintaan privasi" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Halaman %d dari %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Perbolehkan %1$s mengakses izin %2$s." @@ -16,6 +16,9 @@ msgstr "Hafna" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Persónuverndarbeiðni" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Bls. %d af %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Veita %1$s aðgang að heimild fyrir %2$s." diff --git a/po/it_IT.po b/po/it_IT.po index 25ee27c..48ce3d9 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -16,6 +16,9 @@ msgstr "Nega" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Richiesta sulla privacy" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Pagina %d di %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Concedete a %1$s l’autorizzazione ad accedere a %2$s." diff --git a/po/ja_JP.po b/po/ja_JP.po index 57ccc4f..23eda6a 100755 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -16,6 +16,9 @@ msgstr "拒否" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "プライバシーの要求" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%2$dページ中%1$dページ" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$sの権限へのアクセスを%1$sに許可します。" @@ -16,6 +16,9 @@ msgstr "უარყოფა" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "კონფიდენციალურობის მოთხოვნა" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "გვერდი %d, სულ %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s-ს მიეცით უფლება, რომ გამოიყენოს ნებართვა: %2$s." @@ -16,6 +16,9 @@ msgstr "Бас тарту" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Құпиялылық сұрауы" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d беттің ішіндегі %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s %2$s рұқсатын беріңіз." @@ -16,6 +16,9 @@ msgstr "បដិសេធ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "សំណើភាពឯកជន" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "ទំព័រ %d នៃ %d។" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "អនុញ្ញាតឲ្យ %1$s ចូលប្រើការអនុញ្ញាត %2$s។" @@ -16,6 +16,9 @@ msgstr "ನಿರಾಕರಿಸು" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ಗೌಪ್ಯತೆ ವಿನಂತಿ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%dರ ಪುಟ %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ಪ್ರವೇಶಿಸಲು %2$s ಅನುಮತಿಸಿ." diff --git a/po/ko_KR.po b/po/ko_KR.po index 1910490..06768ee 100755 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -16,6 +16,9 @@ msgstr "허용 안 함" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "개인정보 요청" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%2$d 페이지 중 %1$d 페이지입니다." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s 앱에 %2$s 권한을 허용합니다." diff --git a/po/ky_KG.po b/po/ky_KG.po index 1b677f3..4d8825a 100755 --- a/po/ky_KG.po +++ b/po/ky_KG.po @@ -16,6 +16,9 @@ msgstr "Четке кагуу" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Жекелик талаптары" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d ичинен %d бет" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s %1$s кошулуусуна уруксат берүү." @@ -16,6 +16,9 @@ msgstr "ປະຕິເສດ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ຄຳຂໍຄວາມເປັນສ່ວນຕົວ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "ໜ້າ %d ໃນ %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "ອະນຸຍາດໃຫ້ %1$s ເຂົ້າໃຊ້ການອະນຸຍາດ %2$s." @@ -16,6 +16,9 @@ msgstr "Atmesti" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Privatumo užklausa" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d puslapis: %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Suteikite %1$s leidimą pasiekti %2$s." @@ -16,6 +16,9 @@ msgstr "Noraidīt" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Konfidencialitātes pieprasījums" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d lapa no %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Piešķiriet programmai %1$s piekļuvi %2$s atļaujai." @@ -16,6 +16,9 @@ msgstr "Отфрли" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Барање за приватност" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Страница %d од %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Дозволи %1$s да пристапи до дозвола за %2$s." @@ -16,6 +16,9 @@ msgstr "നിഷേധിക്കുക" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "സ്വകാര്യതാ അഭ്യർത്ഥന" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "പേജ് %d ല് %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s അനുമതിയിലേക്ക് %1$s ആക്സസ് അനുവദിക്കുക." diff --git a/po/mn_MN.po b/po/mn_MN.po index 2d51437..d29d649 100755 --- a/po/mn_MN.po +++ b/po/mn_MN.po @@ -16,6 +16,9 @@ msgstr "Татгалзах" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Нууцлалын хүсэлт" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Хуудас %d / %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s хандалтыг %2$s зөвшөөрөлд зөвшөөр." @@ -16,6 +16,9 @@ msgstr "नकार द्या" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "गोपनीयता विनंती" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d पैकी %d पेज." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ला %2$s परवानगीच्या ऍक्सेसची अनुमती द्या." @@ -16,6 +16,9 @@ msgstr "Nafi" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Permintaan privasi" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Halaman %d dari %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Benarkan capaian %1$s ke kebenaran %2$s." diff --git a/po/my_MM.po b/po/my_MM.po index d312847..7a79e66 100755 --- a/po/my_MM.po +++ b/po/my_MM.po @@ -16,6 +16,9 @@ msgstr "ငြင်းဆိုပါ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ကိုယ်ရေးလုံခြုံမှု တောင်းဆိုချက်" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "စာမျက်နှာ %d ၏ %d။" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ကို %2$s ခွင့်ပြုချက်ထဲ ဝင်သုံးခွင့် ပြုပါ။" diff --git a/po/my_ZG.po b/po/my_ZG.po index 282d4fc..3d4c273 100755 --- a/po/my_ZG.po +++ b/po/my_ZG.po @@ -16,6 +16,9 @@ msgstr "ျငင္းဆိုပါ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ကုိယ္ေရးလံုျခံဳမႈ ေတာင္းဆုိခ်က္" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "စာမ်က္ႏွာ %d ၏ %d။" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ကုိ %2$s ခြင့္ျပဳခ်က္ထဲ ဝင္သံုးခြင့္ ျပဳပါ။" @@ -16,6 +16,9 @@ msgstr "Avslå" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Personvernforespørsel" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Side %d av %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Gi %1$s tilgang til %2$s-tillatelsen." @@ -16,6 +16,9 @@ msgstr "अस्वीकार गर्नु" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "गोपनीयता अनुरोध" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d को %d पृष्ठ।" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s लाई %2$s सम्बन्धी अनुमतिमा पहुँच गर्न दिने हो।" @@ -16,6 +16,9 @@ msgstr "Weigeren" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Verzoek om privacy" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Pagina %d van %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s heeft toegang tot machtiging %2$s." @@ -16,6 +16,9 @@ msgstr "ଅଗ୍ରାହ୍ୟ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ଗୋପନୀୟ ଅନୁରୋଧ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d ର %d ପୃଷ୍ଠା" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$sକୁ %2$s ଆକସେସ୍ ଅନୁମତି ଦିଅନ୍ତୁ।" @@ -16,6 +16,9 @@ msgstr "ਅਸਵੀਕਾਰ ਕਰੋ" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "ਗੋਪਨਿਯਤਾ ਬੇਨਤੀ" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "ਪੰਨਾ %d ਵਿੱਚੋਂ %d।" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s ਨੂੰ %2$s ਐਕਸੈੱਸ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਉ।" @@ -16,6 +16,9 @@ msgstr "Odmów" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Żądanie związane z prywatnością" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Strona %d z %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Zezwól aplikacji %1$s na dostęp do uprawnienia %2$s." diff --git a/po/pl_SP.po b/po/pl_SP.po index 39f8f14..f88d31b 100755 --- a/po/pl_SP.po +++ b/po/pl_SP.po @@ -16,6 +16,9 @@ msgstr "Ôdkoż" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Przikŏz pochytany z prywatnościōm" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Zajta %d z %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Przizwōl aplikacyji %1$s na dostymp do dozwŏlynio %2$s." diff --git a/po/pt_BR.po b/po/pt_BR.po index b651962..11161ca 100755 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -16,6 +16,9 @@ msgstr "Negar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Solicitação de privacidade" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Página %d de %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Permita que %1$s acesse a permissão %2$s." diff --git a/po/pt_PT.po b/po/pt_PT.po index fb51c3f..29196dd 100755 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -16,6 +16,9 @@ msgstr "Recusar" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Pedido de privacidade" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Página %d de %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Permita que %1$s aceda à permissão %2$s." @@ -16,6 +16,9 @@ msgstr "Refuz" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Solicitare confidențialitate" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Pagina %d din %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Acordați aplicației %1$s accesul la permisiunea %2$s." diff --git a/po/ru_RU.po b/po/ru_RU.po index 50fc2f6..8a10348 100755 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -16,6 +16,9 @@ msgstr "Запретить" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Запрос на предоставление конфиденциальных данных" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Страница %d из %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Предоставление %1$s доступа к разрешению %2$s." @@ -16,6 +16,9 @@ msgstr "ප්රතික්." msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "රහස්යතා ඉල්ලීම" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d හි %d පිටුව." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s හට %2$s අවසරයට ඉඩ දෙන්න." @@ -16,6 +16,9 @@ msgstr "Zamietnuť" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Žiadosť o ochranu osobných údajov" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Strana %d z %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Udeľte aplikácii %1$s povolenie %2$s." @@ -16,6 +16,9 @@ msgstr "Zavrni" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Zahteva za zasebnost" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Stran %d od %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Aplikaciji %1$s omogočite dostop do dovoljenja %2$s." @@ -16,6 +16,9 @@ msgstr "Refuzo" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Kërkesë privatësie" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Faqe %d nga %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Jepi %1$s akses në lejen %2$s." @@ -16,6 +16,9 @@ msgstr "Odbij" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Zahtev za privatnim informacijama" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Strana %d od %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Dozvolite aplikaciji %1$s da pristupi dozvoli %2$s." @@ -16,6 +16,9 @@ msgstr "Neka" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Sekretessbegäran" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Sida %d av %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Ge %1$s åtkomst till behörighet för %2$s." @@ -16,6 +16,9 @@ msgstr "நிராகரி" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "தனிப்பயன் கோரிக்கை" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "பக்கம் %d-ல் %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s அனுமதிக்கு %1$s அணுகலை அனுமதிக்கவும்." @@ -16,6 +16,9 @@ msgstr "తిరస్కరించు" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "గోప్యతా అభ్యర్థన" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d యొక్క %d పేజీ." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s అనుమతిని ప్రాప్యత చేయడానికి %1$sను అనుమతించాలా." diff --git a/po/tg_TJ.po b/po/tg_TJ.po index 86ba853..39649d7 100755 --- a/po/tg_TJ.po +++ b/po/tg_TJ.po @@ -16,6 +16,9 @@ msgstr "Рад кардан" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Дархости махфият" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Саҳифаи %d аз %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Ба %1$s барои дастрас кардани %2$s иҷозат диҳед." @@ -16,6 +16,9 @@ msgstr "ไม่" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "การร้องขอความเป็นส่วนตัว" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "หน้าที่ %d จาก %d" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "อนุญาต %1$s ให้เข้าถึงการอนุญาต %2$s หรือไม่" diff --git a/po/tk_TM.po b/po/tk_TM.po index f720f83..39fc897 100755 --- a/po/tk_TM.po +++ b/po/tk_TM.po @@ -16,6 +16,9 @@ msgstr "Ret et" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Gizlinlik haýyşy" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "%d-nyň %d sahypasy" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s %2$s rugsadyna girsin." @@ -16,6 +16,9 @@ msgstr "Tanggihan" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Hiling sa privacy" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Pahina %d ng %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Payagan ang %1$s sa pahintulot na %2$s." diff --git a/po/tr_TR.po b/po/tr_TR.po index e8c46b2..179ea65 100755 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -16,6 +16,9 @@ msgstr "Reddet" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Gizlilik isteği" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Sayfa %d / %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s uygulamasına %2$s izni verin." @@ -16,6 +16,9 @@ msgstr "Заборонити" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Запит на надання конфіденційних даних" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Сторінка %d з %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Надання %1$s доступу до дозволу %2$s." @@ -16,6 +16,9 @@ msgstr "انکار کریں" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "رازداری کی درخواست" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "صفحہ %d از %d۔" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%2$s کی رسائی کی اجازت کے لیے %1$s کی اجازت دیں۔" @@ -16,6 +16,9 @@ msgstr "Rad etish" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Maxfiylik so‘rovi" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Sahifa %d, %ddan." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "%1$s’ga %2$s ruxsatiga kirish uchun ijozat bering." @@ -16,6 +16,9 @@ msgstr "Từ chối" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "Yêu cầu về riêng tư" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "Trang %d của %d." + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "Cho phép %1$s truy cập %2$s." diff --git a/po/zh_CN.po b/po/zh_CN.po index 9efb42a..ddbf032 100755 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -16,6 +16,9 @@ msgstr "拒绝" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "隐私请求" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "第 %d 页,共 %d 页。" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "允许%1$s访问%2$s。" diff --git a/po/zh_HK.po b/po/zh_HK.po index 0bbda2e..58ab3fb 100755 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -16,6 +16,9 @@ msgstr "拒絕" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "私隱請求" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "第 %d 頁,共 %d 頁。" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "允許 %1$s 存取%2$s權限。" diff --git a/po/zh_TW.po b/po/zh_TW.po index 6f060c5..641ed17 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -16,6 +16,9 @@ msgstr "拒絕" msgid "IDS_IDLE_HEADER_PRIVACY_REQUEST" msgstr "隱私權要求" +msgid "IDS_PB_BODY_PAGE_PD_OF_PD" +msgstr "頁面 %d 為 %d。" + msgid "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" msgstr "允許 %1$s 存取 %2$s 權限。" diff --git a/res/edc/popup_custom.edc b/res/edc/popup_custom.edc deleted file mode 100644 index 30418d3..0000000 --- a/res/edc/popup_custom.edc +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2011 - 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. - * - */ - -collections { - base_scale: 1.3; - - -group { name: "popup_internal"; //wearable - parts { - part { name: "elm.swallow.content"; // text: Allow ... priv_name - scale: 1; - type: SWALLOW; - description { state: "default" 0.0; - fixed: 1 0; - rel2 { - relative: 1.0 0.0; - to_y: "spacer_m"; - } - } - } - spacer { "spacer_m"; - scale: 1; - desc { state: "default" 0.0; - align: 0.0 1.0; - fixed: 0 1; - min: 0 60; - rel1 { - relative: 1.0 1.0; - offset: 0 60; - } - } - } - part { name: "elm.privilege_counter"; - scale: 1; - type: SWALLOW; - desc { state: "default" 0.0; - visible: 1; - fixed: 0 1; - rel1.relative: 0.0 1.0; - rel1.to_y: "spacer_m"; - rel2.relative: 1.0 1.0; - min: 20 20; - max: -1 100; - } - } - } -} -} diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt index 43fd6de..cfe9797 100755 --- a/ui/CMakeLists.txt +++ b/ui/CMakeLists.txt @@ -1,7 +1,7 @@ INCLUDE(FindPkgConfig) SET(pkg_name "org.tizen.askuser-popup") -pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-extension security-privilege-manager dlog capi-appfw-app-control bundle capi-appfw-app-manager capi-appfw-application pkgmgr-info) +pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-extension security-privilege-manager dlog capi-appfw-app-control bundle capi-appfw-app-manager capi-appfw-application pkgmgr-info capi-privacy-privilege-manager capi-system-device) SET(SRCS ${CMAKE_SOURCE_DIR}/common/src/common_utils.c diff --git a/ui/src/app_main.c b/ui/src/app_main.c index aa22d71..e8e57dc 100644 --- a/ui/src/app_main.c +++ b/ui/src/app_main.c @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2019-2020 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. @@ -20,12 +20,10 @@ * @brief */ -#include <libintl.h> -#include <efl_extension.h> #include <app_info.h> +#include <app_manager.h> #include <bundle.h> #include <bundle_internal.h> -#include <glib.h> #include "common_utils.h" #include "view.h" @@ -76,21 +74,7 @@ static bool app_create(void * data) return true; } -// TODO: remove clone -// -> There's no response request from caller app so no need to save app-control -static void __app_control_clone(app_control_h *clone, app_control_h app_control) -{ - if (*clone) - app_control_destroy(*clone); - int ret = app_control_clone(clone, app_control); - if (ret != APP_CONTROL_ERROR_NONE) - LOGE("app_control_clone failed. ret = %d", ret); - else - LOGD("app control cloned"); - - return; -} - +//TODO: remove when implementation is done void print_all(const char *k, const char *v, void *data) { LOGD("%s -> %s ", k, v); @@ -102,78 +86,87 @@ static void app_control(app_control_h app_control, void *data) /* Handle the launch request. */ app_data_s *ad = (app_data_s *)data; int ret = 0; - ad->launch_type = NULL; - char* caller_appid = NULL; - __app_control_clone(&(ad->caller), app_control); + char* caller_appid = NULL; + ret = app_control_get_caller(app_control, &caller_appid); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGE("app_control_get_caller() failed. Can't get caller info. Terminate."); + ui_app_exit(); + } - app_control_get_caller(ad->caller, &caller_appid); + LOGD("caller appid = %s", caller_appid); - if (caller_appid != NULL) { - LOGD("launched by aul_forward_app()"); + app_info_h app_info; + ret = app_info_create(caller_appid, &app_info); + free(caller_appid); + if (ret != APP_MANAGER_ERROR_NONE) { + LOGE("app_info_create() failed. ret = %d", ret); + ui_app_exit(); + } - app_info_h app_info; - app_info_create(caller_appid, &app_info); - app_info_get_package(app_info, &(ad->caller_pkgid)); - app_info_destroy(app_info); - free(caller_appid); - if (ad->caller_pkgid) { - LOGD("caller_pkgid = %s", ad->caller_pkgid); - } else { - LOGE("Failed to get caller_pkgid"); - //TODO: Error notification for askuser? - ui_app_exit(); - } + ret = app_info_get_package(app_info, &(ad->caller_pkgid)); + if (ret != APP_MANAGER_ERROR_NONE) { + LOGE("app_info_get_package() failed. ret = %d", ret); + ui_app_exit(); + } - bundle *b = NULL; + if (ad->caller_pkgid == NULL) { + LOGE("Failed to get caller_pkgid"); + ui_app_exit(); + } - app_control_to_bundle(app_control, &b); + bundle *b = NULL; - bundle_iterate(b, print_all, NULL); //TODO: remove or comment it + ret = app_control_to_bundle(app_control, &b); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGE("caller pkgid [%s]: app_control_to_bundle() failed. ret = %d", ad->caller_pkgid, ret); + ui_app_exit(); + } - const char* launch_type = bundle_get_val(b, "launch_type"); - ad->launch_type = strdup(launch_type); - if (!ad->launch_type) { - LOGE("Failed to get launch_type"); - //TODO: Error notification for askuser? - ui_app_exit(); - } else if (strcmp(ad->launch_type, "multi") && strcmp(ad->launch_type, "single")) { - LOGE("Unknown launch_type = %s", ad->launch_type); - //TODO: Error notification for askuser? - ui_app_exit(); - } + //bundle_iterate(b, print_all, NULL); //TODO: remove or comment it when implementation is done - const char** privacy_list = bundle_get_str_array(b, "privacy_list", &ad->privacy_num); - ad->all_responded = false; - ad->privacy_idx = 0; - LOGD("privacy num = %d", ad->privacy_num); - int i = 0; - for (i = 0; i < ad->privacy_num; ++i) { - LOGD("privacy_list: %s", privacy_list[i]); - privacy_data_s *pd = new_privacy_data(); - pd->privacy = strdup(privacy_list[i]); - pd->response = NULL; - pd->user_responsed = false; - ad->privacy_list = g_list_append(ad->privacy_list, pd); - } + size_t popup_id_size; + int *popup_id; + ret = bundle_get_byte(b, "popup_id", (void**)&popup_id, &popup_id_size); + if (ret == BUNDLE_ERROR_NONE) { + ad->popup_id = *popup_id; + LOGD("popup_id = %d", *popup_id); } else { - LOGD("launched by app_launcher"); - ad->caller_pkgid = strdup("org.tizen.chromium-efl"); + LOGE("caller pkgid [%s]: bundle_get_byte() failed. ret = %d", ad->caller_pkgid, ret); + ui_app_exit(); + } + + int privacy_num = 0; + const char** privacy_list = bundle_get_str_array(b, "privacy_list", &privacy_num); + if (privacy_list == NULL) { + LOGE("caller pkgid [%s]: key 'privacy_list' not found.", ad->caller_pkgid); + ui_app_exit(); + } + if (privacy_num < 1) { + LOGE("caller_pkgid [%s]: key 'privacy_list' len: %d < 1", ad->caller_pkgid, ad->privacy_num); + ui_app_exit(); + } + + ad->privacy_num = privacy_num; + LOGD("privacy num = %d", ad->privacy_num); + int i = 0; + for (i = 0; i < ad->privacy_num; ++i) { + LOGD("privacy_list: %s", privacy_list[i]); privacy_data_s *pd = new_privacy_data(); - pd->privacy = strdup("http://tizen.org/privacy/account"); - pd->response = NULL; - pd->user_responsed = false; - ad->privacy_list = g_list_append(ad->privacy_list, pd); - pd = new_privacy_data(); - pd->privacy = strdup("http://tizen.org/privacy/call"); - pd->response = NULL; - pd->user_responsed = false; + pd->privacy = strdup(privacy_list[i]); ad->privacy_list = g_list_append(ad->privacy_list, pd); - ad->privacy_num = 2; + } + + if (ad->privacy_num > 1) { + ad->launch_type = strdup("multi"); + } else { ad->launch_type = strdup("single"); - ad->all_responded = false; - ad->privacy_idx = 0; + } + + if (!ad->launch_type) { + LOGE("caller pkgid [%s]: strdup of 'launch_type' failed.", ad->caller_pkgid); + ui_app_exit(); } LOGD("launch_type : %s", ad->launch_type); @@ -190,17 +183,39 @@ static void app_resume(void *data) LOGD("app_resume()"); /* Take necessary actions when application becomes visible. */ } + static void app_terminate(void *data) { LOGD("app_terminate()"); + app_data_s *ad = (app_data_s*)data; - if (!ad->all_responded) { - while (ad->privacy_idx < ad->privacy_num) { - send_response("deny_once", ad); - ad->privacy_idx++; + int ret = 0; + + if (ad->privacy_idx == 0) { + LOGD("no responses"); + ret = ppm_popup_send_response(ad->popup_id, NULL, NULL, 0); + } else { + char *privacies[ad->privacy_idx]; + ppm_popup_response_e responses[ad->privacy_idx]; + + int i = 0; + for (i = 0; i < ad->privacy_idx; ++i) { + privacy_data_s *pd = (privacy_data_s*)g_list_nth_data(ad->privacy_list, i); + if (pd->user_responsed) { + privacies[i] = strdup(pd->privacy); + responses[i] = pd->response; + } else { + break; + } } + ret = ppm_popup_send_response(ad->popup_id, (const char**)privacies, responses, i); } + + if (ret != PRIVACY_PRIVILEGE_MANAGER_ERROR_NONE) + LOGE("ppm_popup_send_response() failed. ret = %d", ret); + free_app_data(ad); + LOGD("app_terminate() end"); } @@ -223,6 +238,7 @@ int main(int argc, char *argv[]) int ret = 0; app_data_s ad; memset(&ad, 0x0, sizeof(app_data_s)); + init_app_data(&ad); ui_app_lifecycle_callback_s event_callback = {0, }; app_event_handler_h handlers[2] = {NULL, }; diff --git a/ui/src/popup.c b/ui/src/popup.c index e35ffd5..b3efb54 100644 --- a/ui/src/popup.c +++ b/ui/src/popup.c @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2019-2020 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. @@ -21,49 +21,38 @@ */ #define _GNU_SOURCE -#include <efl_extension.h> -#include <glib.h> #include "common_utils.h" #include "view.h" -#include <glib.h> -#include <string.h> + #include <app_control_internal.h> -#include <stdio.h> #include <privilege_info.h> #include <pkgmgr-info.h> +#include <device/display.h> #define OK_BUTTON_PATH "/usr/apps/org.tizen.askuser-popup/res/button/tw_ic_popup_btn_check.png" #define CANCEL_BUTTON_PATH "/usr/apps/org.tizen.askuser-popup/res/button/tw_ic_popup_btn_delete.png" -#define CUSTOM_EDJE_PATH "/usr/apps/org.tizen.askuser-popup/res/edje/popup_custom.edj" - #define MSG_OK_BUTTON "IDS_IDLE_BUTTON_ALLOW_ABB7" #define MSG_CANCEL_BUTTON "IDS_IDLE_BUTTON_DENY" #define MSG_POPUP_TITLE "IDS_IDLE_HEADER_PRIVACY_REQUEST" #define MSG_POPUP_TEXT "WDS_TPLATFORM_POP_ALLOW_P1SS_ACCESS_TO_P2SS_PERMISSION" #define MSG_POPUP_CHECKBOX "IDS_CLOCK_BODY_DONT_REPEAT_ABB" +#define AO_MSG_COUNTER "IDS_PB_BODY_PAGE_PD_OF_PD" #define LABEL_PADDING "<br>" #define AO_LABEL_PADDING " ..." #define TEXT_DOMAIN "askuser-popup" -#define COUNTER_LEN 26 - -void send_response(const char *response, app_data_s *ad) //TODO: change to enum? +void save_response(ppm_popup_response_e response, app_data_s *ad) { - //TODO: send response for privacy, pkgid, response - //privacy_data_s *pd = (privacy_data_s *)g_list_nth_data(ad->privacy_list, ad->privacy_idx); - //(const char*)pd->privacy, ad->caller_pkgid, response - //pd->user_responsed = true; - //pd->response ... - //TBD: should we store all responses? it depends on whether to return at once or return for each response? - LOGD("send response: %s", response); + privacy_data_s *pd = (privacy_data_s *)g_list_nth_data(ad->privacy_list, ad->privacy_idx); + pd->response = response; + pd->user_responsed = true; } - static char* __get_privacy_display(const char* privacy) { int ret = 0; @@ -72,15 +61,9 @@ static char* __get_privacy_display(const char* privacy) if (ret == PRVMGR_ERR_NONE && privacy_display != NULL) return privacy_display; else - LOGE("privilege_info_get_privacy_display() failed. ret = %d, privacy_display = %s", ret, privacy_display); + LOGE("privilege_info_get_privacy_display() failed. ret = %d, privacy = %s", ret, privacy); - return NULL; -} - -static char* __accessible_content_name_cb(void *data, Evas_Object *obj) -{ - Evas_Object *content = (Evas_Object*)data; - return strdup(elm_object_text_get(content)); + return ""; } static char* __make_message(const char* format, const char* pkg_label, const char* privacy) @@ -90,41 +73,121 @@ static char* __make_message(const char* format, const char* pkg_label, const cha ret = asprintf(&message, dgettext(TEXT_DOMAIN, format), pkg_label, privacy); if (ret == -1) - LOGE("asprintf failed"); - - LOGD("message : %s", message); + LOGE("asprintf() of message failed"); - return message; + if (message != NULL) { + LOGD("message : %s", message); + return message; + } + return ""; } static char* __get_pkg_label(const char* pkgid) { - pkgmgrinfo_pkginfo_h handle; + pkgmgrinfo_pkginfo_h handle = NULL; char* label = NULL; + char* pkg_label = NULL; + + int ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle); + if (ret != PMINFO_R_OK) + LOGE("pkgmgrinfo_pkginfo_get_pkginfo() failed. ret = %d", ret); + + ret = pkgmgrinfo_pkginfo_get_label(handle, &label); + if (ret != PMINFO_R_OK) + LOGE("pkgmgrinfo_pkginfo_get_label() failed. ret = %d", ret); + + if (label != NULL) + pkg_label = strdup(label); - pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle); - pkgmgrinfo_pkginfo_get_label(handle, &label); - char* pkg_label = strdup(label); - pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + if (handle != NULL) + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); - return pkg_label; + if (pkg_label != NULL) + return pkg_label; + + return ""; } -static char* __get_message(const char* pkgid, const char* privacy) +static char* __get_accessible_counter(int idx, int num) +{ + char* counter = NULL; + int ret = 0; + char* format = AO_MSG_COUNTER; + + ret = asprintf(&counter, dgettext(TEXT_DOMAIN, format), idx, num); + if (ret == -1) + LOGE("asprintf() of counter failed"); + + if (counter != NULL) + return counter; + return ""; +} + +static char* __get_popup_contents(const char* pkgid, const char* privacy, + int idx, __attribute__((unused)) int num, + __attribute__((unused)) bool is_accessible) { LOGD("__get_message(%s, %s)", pkgid, privacy); - return __make_message(MSG_POPUP_TEXT, __get_pkg_label(pkgid), __get_privacy_display(privacy)); + char* message = __make_message(MSG_POPUP_TEXT, __get_pkg_label(pkgid), __get_privacy_display(privacy)); + if (idx == -1) + return message; + + char* counter_message = NULL; + int ret = 0; + + if (is_accessible) { + ret = asprintf(&counter_message, "%s%s%s%s", + message, AO_LABEL_PADDING, AO_LABEL_PADDING, __get_accessible_counter(idx, num)); + } else { + ret = asprintf(&counter_message, "%s%s%s%d / %d", + message, LABEL_PADDING, LABEL_PADDING, idx, num); + } + + free(message); + + if (ret == -1) + LOGE("asprintf() of counter_message failed"); + + if (counter_message != NULL) { + LOGD("message with counter : %s", counter_message); + return counter_message; + } + return ""; } + static void __set_popup_contents(app_data_s *ad) { privacy_data_s *pd = (privacy_data_s *)g_list_nth_data(ad->privacy_list, ad->privacy_idx); - elm_object_text_set(ad->label, __get_message(ad->caller_pkgid, (const char*)pd->privacy)); - elm_atspi_accessible_name_set(ad->label, __get_message(ad->caller_pkgid, (const char*)pd->privacy)); - if (!strcmp(ad->launch_type, "multi")) { - char counter[COUNTER_LEN]; - int ret = sprintf(counter, "%d / %d", (ad->privacy_idx) + 1, ad->privacy_num); - LOGD("counter %s", counter); - elm_object_text_set(ad->counter, counter); + + char* contents = NULL; + char* ao_contents = NULL; + if (!strcmp(ad->launch_type, "single")) { + contents = __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, -1, -1, false); + ao_contents = __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, -1, -1, true); + } else if (!strcmp(ad->launch_type, "multi")) { + contents = __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, (ad->privacy_idx) + 1, ad->privacy_num, false); + ao_contents = __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, (ad->privacy_idx) + 1, ad->privacy_num, true); + } + + elm_object_part_text_set(ad->layout, "elm.text", contents); + elm_atspi_accessible_name_set(ad->ao_contents, ao_contents); + elm_atspi_component_highlight_grab(ad->ao_contents); + + free(contents); + free(ao_contents); +} + +static char* __get_accessible_popup_contents_cb(void *data, Evas_Object *obj) +{ + app_data_s *ad = (app_data_s*)data; + privacy_data_s *pd = (privacy_data_s *)g_list_nth_data(ad->privacy_list, ad->privacy_idx); + elm_atspi_component_highlight_grab(ad->ao_contents); + if (!strcmp(ad->launch_type, "single")) { + return __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, -1, -1, true); + } else if (!strcmp(ad->launch_type, "multi")) { + return __get_popup_contents(ad->caller_pkgid, (const char*)pd->privacy, (ad->privacy_idx) + 1, ad->privacy_num, true); + } else { + return ""; } } @@ -144,7 +207,7 @@ static void __allow_response_cb(void *data, Evas_Object *obj, void *event_info) { LOGD("allow response"); app_data_s *ad = (app_data_s *)data; - send_response("allow", ad); + save_response(PRIVACY_PRIVILEGE_MANAGER_POPUP_RESPONSE_ALLOW_FOREVER, ad); __check_next_privacy(ad); if (ad->all_responded) ui_app_exit(); @@ -154,7 +217,7 @@ static void __deny_response_cb(void *data, Evas_Object *obj, void *event_info) { LOGD("deny response"); app_data_s *ad = (app_data_s *)data; - send_response("deny_once", ad); + save_response(PRIVACY_PRIVILEGE_MANAGER_POPUP_RESPONSE_DENY_ONCE, ad); __check_next_privacy(ad); if (ad->all_responded) ui_app_exit(); @@ -170,29 +233,39 @@ static void __lang_changed_cb(void *data, Evas_Object *obj, void *event_info) } -Eina_Bool __hw_key_clicked_cb(void *data, int type, void *event) +Eina_Bool __hw_key_clicked_cb(void *data, int type, void *event_info) { - Ecore_Event_Key *ev = (Ecore_Event_Key*)event; + Ecore_Event_Key *ev = (Ecore_Event_Key*)event_info; ALOGD("HW key clicked. type <%d> pressed key is <%s>", type, ev->key); if (!strcmp(ev->key, "XF86PowerOff") || !strcmp(ev->key, "XF86Back")) { - LOGD("deny response"); - app_data_s *ad = (app_data_s *)data; - while (ad->privacy_idx < ad->privacy_num) { - send_response("deny_once", ad); - ad->privacy_idx++; - } - ad->all_responded = true; ui_app_exit(); } return EINA_TRUE; } +void __unfocused_cb(void *data, Evas_Object *obj, void *event_info) +{ + LOGD("unfocused cb"); + display_state_e state; + int ret = device_display_get_state(&state); + if (ret != DEVICE_ERROR_NONE) { + LOGE("device_display_get_state() failed. ret = %d", ret); + ui_app_exit(); + } + if (state != DISPLAY_STATE_SCREEN_OFF) { + LOGD("display on and unfocused. terminate popup."); + ui_app_exit(); + } +} + void create_view(app_data_s *ad) { LOGD("popup launched"); Evas_Object *icon = NULL; + evas_object_smart_callback_add(ad->win, "unfocused", __unfocused_cb, ad); + /* Popup */ ad->popup = elm_popup_add(ad->win); elm_object_style_set(ad->popup, "circle"); @@ -215,39 +288,15 @@ void create_view(app_data_s *ad) elm_layout_theme_set(ad->layout, "layout", "popup", "content/circle/buttons2"); elm_object_content_set(ad->scroller, ad->layout); - if (!strcmp(ad->launch_type, "multi")) { /* Multi : Use custom edje for inner layout */ - LOGD("draw multi popup"); - ad->inner_layout = elm_layout_add(ad->layout); - elm_layout_file_set(ad->inner_layout, CUSTOM_EDJE_PATH, "popup_internal"); - evas_object_size_hint_weight_set(ad->inner_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->inner_layout); - - ad->label = elm_label_add(ad->inner_layout); - elm_object_part_content_set(ad->inner_layout, "elm.swallow.content", ad->label); - - ad->counter = elm_label_add(ad->inner_layout); - elm_object_style_set(ad->counter, "popup/default"); - elm_label_line_wrap_set(ad->counter, ELM_WRAP_MIXED); - elm_atspi_accessible_reading_info_type_set(ad->counter, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME); - evas_object_size_hint_weight_set(ad->counter, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_part_content_set(ad->inner_layout, "elm.privilege_counter", ad->counter); - evas_object_size_hint_align_set(ad->counter, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(ad->counter); - } else { /* Single */ - ad->label = elm_label_add(ad->layout); - elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->label); - } + ad->ao_contents = elm_access_object_register((Evas_Object*)edje_object_part_object_get(elm_layout_edje_get(ad->layout), "elm.text"), ad->layout); + elm_atspi_accessible_reading_info_type_set(ad->ao_contents, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME); + elm_atspi_accessible_can_highlight_set(ad->ao_contents, EINA_TRUE); - elm_object_style_set(ad->label, "popup/default"); - elm_label_line_wrap_set(ad->label, ELM_WRAP_MIXED); - elm_atspi_accessible_reading_info_type_set(ad->label, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME); - evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(ad->label, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(ad->label, "language,changed", __lang_changed_cb, ad); + evas_object_smart_callback_add(ad->layout, "language,changed", __lang_changed_cb, ad); ecore_event_handler_add(ECORE_EVENT_KEY_UP, __hw_key_clicked_cb, ad); elm_atspi_accessible_reading_info_type_set(ad->popup, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME); - elm_atspi_accessible_name_cb_set(ad->popup, __accessible_content_name_cb, ad->label); + elm_atspi_accessible_name_cb_set(ad->popup, __get_accessible_popup_contents_cb, ad); eext_rotary_object_event_activated_set(ad->eext_scroller, EINA_TRUE); |