diff options
242 files changed, 1535 insertions, 2269 deletions
diff --git a/res/color/btn_colored_background_material.xml b/res/color/btn_colored_background_material.xml new file mode 100644 index 00000000..a6cd0890 --- /dev/null +++ b/res/color/btn_colored_background_material.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="false" + android:alpha="?android:disabledAlpha" + android:color="?android:colorButtonNormal" /> + <item android:color="?android:colorAccent" /> +</selector> diff --git a/res/drawable-watch-280dpi/ic_cc_cancel.png b/res/drawable-watch-280dpi/ic_cc_cancel.png Binary files differdeleted file mode 100644 index 249b8697..00000000 --- a/res/drawable-watch-280dpi/ic_cc_cancel.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_cc_checkmark.png b/res/drawable-watch-280dpi/ic_cc_checkmark.png Binary files differdeleted file mode 100644 index 94db9ab0..00000000 --- a/res/drawable-watch-280dpi/ic_cc_checkmark.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_cc_deny.png b/res/drawable-watch-280dpi/ic_cc_deny.png Binary files differdeleted file mode 100644 index 1733669f..00000000 --- a/res/drawable-watch-280dpi/ic_cc_deny.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_calendar.png b/res/drawable-watch-280dpi/ic_permission_calendar.png Binary files differdeleted file mode 100644 index 602bddf0..00000000 --- a/res/drawable-watch-280dpi/ic_permission_calendar.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_calendardisable.png b/res/drawable-watch-280dpi/ic_permission_calendardisable.png Binary files differdeleted file mode 100644 index b855932e..00000000 --- a/res/drawable-watch-280dpi/ic_permission_calendardisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_call.png b/res/drawable-watch-280dpi/ic_permission_call.png Binary files differdeleted file mode 100644 index bcf4f868..00000000 --- a/res/drawable-watch-280dpi/ic_permission_call.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_calldisable.png b/res/drawable-watch-280dpi/ic_permission_calldisable.png Binary files differdeleted file mode 100644 index 4781e1fe..00000000 --- a/res/drawable-watch-280dpi/ic_permission_calldisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_camera.png b/res/drawable-watch-280dpi/ic_permission_camera.png Binary files differdeleted file mode 100644 index 3d27269f..00000000 --- a/res/drawable-watch-280dpi/ic_permission_camera.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_cameradisable.png b/res/drawable-watch-280dpi/ic_permission_cameradisable.png Binary files differdeleted file mode 100644 index 51fa2c38..00000000 --- a/res/drawable-watch-280dpi/ic_permission_cameradisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_contact.png b/res/drawable-watch-280dpi/ic_permission_contact.png Binary files differdeleted file mode 100644 index 3e26bfbb..00000000 --- a/res/drawable-watch-280dpi/ic_permission_contact.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_contactdisable.png b/res/drawable-watch-280dpi/ic_permission_contactdisable.png Binary files differdeleted file mode 100644 index 059b147c..00000000 --- a/res/drawable-watch-280dpi/ic_permission_contactdisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_location.png b/res/drawable-watch-280dpi/ic_permission_location.png Binary files differdeleted file mode 100644 index f002a9cf..00000000 --- a/res/drawable-watch-280dpi/ic_permission_location.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_locationdisable.png b/res/drawable-watch-280dpi/ic_permission_locationdisable.png Binary files differdeleted file mode 100644 index 98bbb869..00000000 --- a/res/drawable-watch-280dpi/ic_permission_locationdisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_mic.png b/res/drawable-watch-280dpi/ic_permission_mic.png Binary files differdeleted file mode 100644 index 1ed9c941..00000000 --- a/res/drawable-watch-280dpi/ic_permission_mic.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_micdisable.png b/res/drawable-watch-280dpi/ic_permission_micdisable.png Binary files differdeleted file mode 100644 index d74f59b9..00000000 --- a/res/drawable-watch-280dpi/ic_permission_micdisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_more.png b/res/drawable-watch-280dpi/ic_permission_more.png Binary files differdeleted file mode 100644 index f33e02bf..00000000 --- a/res/drawable-watch-280dpi/ic_permission_more.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_sensor.png b/res/drawable-watch-280dpi/ic_permission_sensor.png Binary files differdeleted file mode 100644 index 712c5d40..00000000 --- a/res/drawable-watch-280dpi/ic_permission_sensor.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_sensordisable.png b/res/drawable-watch-280dpi/ic_permission_sensordisable.png Binary files differdeleted file mode 100644 index 8faa436f..00000000 --- a/res/drawable-watch-280dpi/ic_permission_sensordisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_shield.png b/res/drawable-watch-280dpi/ic_permission_shield.png Binary files differdeleted file mode 100644 index 78d6742b..00000000 --- a/res/drawable-watch-280dpi/ic_permission_shield.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_shielddisable.png b/res/drawable-watch-280dpi/ic_permission_shielddisable.png Binary files differdeleted file mode 100644 index f0ef4134..00000000 --- a/res/drawable-watch-280dpi/ic_permission_shielddisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_sms.png b/res/drawable-watch-280dpi/ic_permission_sms.png Binary files differdeleted file mode 100644 index 39bb4b3e..00000000 --- a/res/drawable-watch-280dpi/ic_permission_sms.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_smsdisable.png b/res/drawable-watch-280dpi/ic_permission_smsdisable.png Binary files differdeleted file mode 100644 index e9375b1f..00000000 --- a/res/drawable-watch-280dpi/ic_permission_smsdisable.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_storage.png b/res/drawable-watch-280dpi/ic_permission_storage.png Binary files differdeleted file mode 100644 index 60ec50c7..00000000 --- a/res/drawable-watch-280dpi/ic_permission_storage.png +++ /dev/null diff --git a/res/drawable-watch-280dpi/ic_permission_storagedisable.png b/res/drawable-watch-280dpi/ic_permission_storagedisable.png Binary files differdeleted file mode 100644 index 987b8249..00000000 --- a/res/drawable-watch-280dpi/ic_permission_storagedisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_cc_cancel.png b/res/drawable-watch-hdpi/ic_cc_cancel.png Binary files differdeleted file mode 100644 index a57893e1..00000000 --- a/res/drawable-watch-hdpi/ic_cc_cancel.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_cc_checkmark.png b/res/drawable-watch-hdpi/ic_cc_checkmark.png Binary files differdeleted file mode 100644 index a18fe7ab..00000000 --- a/res/drawable-watch-hdpi/ic_cc_checkmark.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_cc_deny.png b/res/drawable-watch-hdpi/ic_cc_deny.png Binary files differdeleted file mode 100644 index bab22a3d..00000000 --- a/res/drawable-watch-hdpi/ic_cc_deny.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_calendar.png b/res/drawable-watch-hdpi/ic_permission_calendar.png Binary files differdeleted file mode 100644 index b7424699..00000000 --- a/res/drawable-watch-hdpi/ic_permission_calendar.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_calendardisable.png b/res/drawable-watch-hdpi/ic_permission_calendardisable.png Binary files differdeleted file mode 100644 index def76b03..00000000 --- a/res/drawable-watch-hdpi/ic_permission_calendardisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_call.png b/res/drawable-watch-hdpi/ic_permission_call.png Binary files differdeleted file mode 100644 index e14a6bd2..00000000 --- a/res/drawable-watch-hdpi/ic_permission_call.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_calldisable.png b/res/drawable-watch-hdpi/ic_permission_calldisable.png Binary files differdeleted file mode 100644 index e0f535ff..00000000 --- a/res/drawable-watch-hdpi/ic_permission_calldisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_camera.png b/res/drawable-watch-hdpi/ic_permission_camera.png Binary files differdeleted file mode 100644 index 7c1df6ba..00000000 --- a/res/drawable-watch-hdpi/ic_permission_camera.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_cameradisable.png b/res/drawable-watch-hdpi/ic_permission_cameradisable.png Binary files differdeleted file mode 100644 index 9637808a..00000000 --- a/res/drawable-watch-hdpi/ic_permission_cameradisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_contact.png b/res/drawable-watch-hdpi/ic_permission_contact.png Binary files differdeleted file mode 100644 index 532e3a2c..00000000 --- a/res/drawable-watch-hdpi/ic_permission_contact.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_contactdisable.png b/res/drawable-watch-hdpi/ic_permission_contactdisable.png Binary files differdeleted file mode 100644 index 32b45c53..00000000 --- a/res/drawable-watch-hdpi/ic_permission_contactdisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_location.png b/res/drawable-watch-hdpi/ic_permission_location.png Binary files differdeleted file mode 100644 index 3d6c0b9d..00000000 --- a/res/drawable-watch-hdpi/ic_permission_location.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_locationdisable.png b/res/drawable-watch-hdpi/ic_permission_locationdisable.png Binary files differdeleted file mode 100644 index c2475e21..00000000 --- a/res/drawable-watch-hdpi/ic_permission_locationdisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_mic.png b/res/drawable-watch-hdpi/ic_permission_mic.png Binary files differdeleted file mode 100644 index 8acb4c5f..00000000 --- a/res/drawable-watch-hdpi/ic_permission_mic.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_micdisable.png b/res/drawable-watch-hdpi/ic_permission_micdisable.png Binary files differdeleted file mode 100644 index a37a4e20..00000000 --- a/res/drawable-watch-hdpi/ic_permission_micdisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_more.png b/res/drawable-watch-hdpi/ic_permission_more.png Binary files differdeleted file mode 100644 index 08808bc4..00000000 --- a/res/drawable-watch-hdpi/ic_permission_more.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_sensor.png b/res/drawable-watch-hdpi/ic_permission_sensor.png Binary files differdeleted file mode 100644 index fd2939ab..00000000 --- a/res/drawable-watch-hdpi/ic_permission_sensor.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_sensordisable.png b/res/drawable-watch-hdpi/ic_permission_sensordisable.png Binary files differdeleted file mode 100644 index 487a4861..00000000 --- a/res/drawable-watch-hdpi/ic_permission_sensordisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_shield.png b/res/drawable-watch-hdpi/ic_permission_shield.png Binary files differdeleted file mode 100644 index cab08e47..00000000 --- a/res/drawable-watch-hdpi/ic_permission_shield.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_shielddisable.png b/res/drawable-watch-hdpi/ic_permission_shielddisable.png Binary files differdeleted file mode 100644 index 548ac56c..00000000 --- a/res/drawable-watch-hdpi/ic_permission_shielddisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_sms.png b/res/drawable-watch-hdpi/ic_permission_sms.png Binary files differdeleted file mode 100644 index dc3db2f9..00000000 --- a/res/drawable-watch-hdpi/ic_permission_sms.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_smsdisable.png b/res/drawable-watch-hdpi/ic_permission_smsdisable.png Binary files differdeleted file mode 100644 index 608c4d04..00000000 --- a/res/drawable-watch-hdpi/ic_permission_smsdisable.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_storage.png b/res/drawable-watch-hdpi/ic_permission_storage.png Binary files differdeleted file mode 100644 index 031d989f..00000000 --- a/res/drawable-watch-hdpi/ic_permission_storage.png +++ /dev/null diff --git a/res/drawable-watch-hdpi/ic_permission_storagedisable.png b/res/drawable-watch-hdpi/ic_permission_storagedisable.png Binary files differdeleted file mode 100644 index 08dc6625..00000000 --- a/res/drawable-watch-hdpi/ic_permission_storagedisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_cc_cancel.png b/res/drawable-watch-mdpi/ic_cc_cancel.png Binary files differdeleted file mode 100644 index 87fc65ab..00000000 --- a/res/drawable-watch-mdpi/ic_cc_cancel.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_cc_checkmark.png b/res/drawable-watch-mdpi/ic_cc_checkmark.png Binary files differdeleted file mode 100644 index 02c22b19..00000000 --- a/res/drawable-watch-mdpi/ic_cc_checkmark.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_cc_deny.png b/res/drawable-watch-mdpi/ic_cc_deny.png Binary files differdeleted file mode 100644 index f3b29f7f..00000000 --- a/res/drawable-watch-mdpi/ic_cc_deny.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_calendar.png b/res/drawable-watch-mdpi/ic_permission_calendar.png Binary files differdeleted file mode 100644 index 6ae24429..00000000 --- a/res/drawable-watch-mdpi/ic_permission_calendar.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_calendardisable.png b/res/drawable-watch-mdpi/ic_permission_calendardisable.png Binary files differdeleted file mode 100644 index 639109fa..00000000 --- a/res/drawable-watch-mdpi/ic_permission_calendardisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_call.png b/res/drawable-watch-mdpi/ic_permission_call.png Binary files differdeleted file mode 100644 index d67a03a5..00000000 --- a/res/drawable-watch-mdpi/ic_permission_call.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_calldisable.png b/res/drawable-watch-mdpi/ic_permission_calldisable.png Binary files differdeleted file mode 100644 index 39760b74..00000000 --- a/res/drawable-watch-mdpi/ic_permission_calldisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_camera.png b/res/drawable-watch-mdpi/ic_permission_camera.png Binary files differdeleted file mode 100644 index 807a66f6..00000000 --- a/res/drawable-watch-mdpi/ic_permission_camera.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_cameradisable.png b/res/drawable-watch-mdpi/ic_permission_cameradisable.png Binary files differdeleted file mode 100644 index edf4f7a7..00000000 --- a/res/drawable-watch-mdpi/ic_permission_cameradisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_contact.png b/res/drawable-watch-mdpi/ic_permission_contact.png Binary files differdeleted file mode 100644 index 2e146e20..00000000 --- a/res/drawable-watch-mdpi/ic_permission_contact.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_contactdisable.png b/res/drawable-watch-mdpi/ic_permission_contactdisable.png Binary files differdeleted file mode 100644 index e3903516..00000000 --- a/res/drawable-watch-mdpi/ic_permission_contactdisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_location.png b/res/drawable-watch-mdpi/ic_permission_location.png Binary files differdeleted file mode 100644 index 3862b24c..00000000 --- a/res/drawable-watch-mdpi/ic_permission_location.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_locationdisable.png b/res/drawable-watch-mdpi/ic_permission_locationdisable.png Binary files differdeleted file mode 100644 index 1f875bd8..00000000 --- a/res/drawable-watch-mdpi/ic_permission_locationdisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_mic.png b/res/drawable-watch-mdpi/ic_permission_mic.png Binary files differdeleted file mode 100644 index 33327f0d..00000000 --- a/res/drawable-watch-mdpi/ic_permission_mic.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_micdisable.png b/res/drawable-watch-mdpi/ic_permission_micdisable.png Binary files differdeleted file mode 100644 index 7a1b39c4..00000000 --- a/res/drawable-watch-mdpi/ic_permission_micdisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_more.png b/res/drawable-watch-mdpi/ic_permission_more.png Binary files differdeleted file mode 100644 index a563f1a9..00000000 --- a/res/drawable-watch-mdpi/ic_permission_more.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_sensor.png b/res/drawable-watch-mdpi/ic_permission_sensor.png Binary files differdeleted file mode 100644 index 59e1c01f..00000000 --- a/res/drawable-watch-mdpi/ic_permission_sensor.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_sensordisable.png b/res/drawable-watch-mdpi/ic_permission_sensordisable.png Binary files differdeleted file mode 100644 index d8d55c6d..00000000 --- a/res/drawable-watch-mdpi/ic_permission_sensordisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_shield.png b/res/drawable-watch-mdpi/ic_permission_shield.png Binary files differdeleted file mode 100644 index 7773fa48..00000000 --- a/res/drawable-watch-mdpi/ic_permission_shield.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_shielddisable.png b/res/drawable-watch-mdpi/ic_permission_shielddisable.png Binary files differdeleted file mode 100644 index 42f452bf..00000000 --- a/res/drawable-watch-mdpi/ic_permission_shielddisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_sms.png b/res/drawable-watch-mdpi/ic_permission_sms.png Binary files differdeleted file mode 100644 index 11333ddb..00000000 --- a/res/drawable-watch-mdpi/ic_permission_sms.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_smsdisable.png b/res/drawable-watch-mdpi/ic_permission_smsdisable.png Binary files differdeleted file mode 100644 index b4416f4b..00000000 --- a/res/drawable-watch-mdpi/ic_permission_smsdisable.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_storage.png b/res/drawable-watch-mdpi/ic_permission_storage.png Binary files differdeleted file mode 100644 index 07bd8f92..00000000 --- a/res/drawable-watch-mdpi/ic_permission_storage.png +++ /dev/null diff --git a/res/drawable-watch-mdpi/ic_permission_storagedisable.png b/res/drawable-watch-mdpi/ic_permission_storagedisable.png Binary files differdeleted file mode 100644 index ed8af410..00000000 --- a/res/drawable-watch-mdpi/ic_permission_storagedisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_cc_cancel.png b/res/drawable-watch-xhdpi/ic_cc_cancel.png Binary files differdeleted file mode 100644 index fec6ecb8..00000000 --- a/res/drawable-watch-xhdpi/ic_cc_cancel.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_cc_checkmark.png b/res/drawable-watch-xhdpi/ic_cc_checkmark.png Binary files differdeleted file mode 100644 index 1302723b..00000000 --- a/res/drawable-watch-xhdpi/ic_cc_checkmark.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_cc_deny.png b/res/drawable-watch-xhdpi/ic_cc_deny.png Binary files differdeleted file mode 100644 index a5f8dc1b..00000000 --- a/res/drawable-watch-xhdpi/ic_cc_deny.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_calendar.png b/res/drawable-watch-xhdpi/ic_permission_calendar.png Binary files differdeleted file mode 100644 index 806438c6..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_calendar.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png b/res/drawable-watch-xhdpi/ic_permission_calendardisable.png Binary files differdeleted file mode 100644 index 821462e4..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_calendardisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_call.png b/res/drawable-watch-xhdpi/ic_permission_call.png Binary files differdeleted file mode 100644 index 079942b5..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_call.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_calldisable.png b/res/drawable-watch-xhdpi/ic_permission_calldisable.png Binary files differdeleted file mode 100644 index 13cd805e..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_calldisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_camera.png b/res/drawable-watch-xhdpi/ic_permission_camera.png Binary files differdeleted file mode 100644 index 03b0d8d0..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_camera.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png b/res/drawable-watch-xhdpi/ic_permission_cameradisable.png Binary files differdeleted file mode 100644 index bcb2a350..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_cameradisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_contact.png b/res/drawable-watch-xhdpi/ic_permission_contact.png Binary files differdeleted file mode 100644 index 996fe39d..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_contact.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png b/res/drawable-watch-xhdpi/ic_permission_contactdisable.png Binary files differdeleted file mode 100644 index 1063f17b..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_contactdisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_location.png b/res/drawable-watch-xhdpi/ic_permission_location.png Binary files differdeleted file mode 100644 index d9dc1fc9..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_location.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png b/res/drawable-watch-xhdpi/ic_permission_locationdisable.png Binary files differdeleted file mode 100644 index c3e7ae9f..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_locationdisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_mic.png b/res/drawable-watch-xhdpi/ic_permission_mic.png Binary files differdeleted file mode 100644 index 3a951ea8..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_mic.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_micdisable.png b/res/drawable-watch-xhdpi/ic_permission_micdisable.png Binary files differdeleted file mode 100644 index a9c7c81e..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_micdisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_more.png b/res/drawable-watch-xhdpi/ic_permission_more.png Binary files differdeleted file mode 100644 index a3f7ee5b..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_more.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_sensor.png b/res/drawable-watch-xhdpi/ic_permission_sensor.png Binary files differdeleted file mode 100644 index 73564014..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_sensor.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png b/res/drawable-watch-xhdpi/ic_permission_sensordisable.png Binary files differdeleted file mode 100644 index ef135a7e..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_sensordisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_shield.png b/res/drawable-watch-xhdpi/ic_permission_shield.png Binary files differdeleted file mode 100644 index 2fc8fd07..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_shield.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png b/res/drawable-watch-xhdpi/ic_permission_shielddisable.png Binary files differdeleted file mode 100644 index 08a862e8..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_shielddisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_sms.png b/res/drawable-watch-xhdpi/ic_permission_sms.png Binary files differdeleted file mode 100644 index c74ce084..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_sms.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png b/res/drawable-watch-xhdpi/ic_permission_smsdisable.png Binary files differdeleted file mode 100644 index b7256772..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_smsdisable.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_storage.png b/res/drawable-watch-xhdpi/ic_permission_storage.png Binary files differdeleted file mode 100644 index 1f16bdb6..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_storage.png +++ /dev/null diff --git a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png b/res/drawable-watch-xhdpi/ic_permission_storagedisable.png Binary files differdeleted file mode 100644 index 41d42d57..00000000 --- a/res/drawable-watch-xhdpi/ic_permission_storagedisable.png +++ /dev/null diff --git a/res/drawable-watch/accept_deny_dialog_negative_bg.xml b/res/drawable-watch/accept_deny_dialog_negative_bg.xml new file mode 100644 index 00000000..1ccc40ab --- /dev/null +++ b/res/drawable-watch/accept_deny_dialog_negative_bg.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <ripple android:color="?android:colorControlHighlight" /> + </item> + <item> + <ripple android:color="?android:colorControlHighlight"> + <item> + <shape android:shape="oval" + android:tint="?android:colorButtonNormal"> + <solid android:color="@android:color/white" /> + <size android:width="@dimen/diag_button_size" + android:height="@dimen/diag_button_size" /> + </shape> + </item> + </ripple> + </item> +</layer-list> diff --git a/res/drawable-watch/accept_deny_dialog_positive_bg.xml b/res/drawable-watch/accept_deny_dialog_positive_bg.xml new file mode 100644 index 00000000..786a35ba --- /dev/null +++ b/res/drawable-watch/accept_deny_dialog_positive_bg.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <ripple android:color="?android:colorAccent" /> + </item> + <item> + <ripple android:color="?android:colorControlHighlight"> + <item> + <shape android:shape="oval" + android:tint="@color/btn_colored_background_material"> + <solid android:color="@android:color/white" /> + <size android:width="@dimen/diag_button_size" + android:height="@dimen/diag_button_size" /> + </shape> + </item> + </ripple> + </item> +</layer-list> diff --git a/res/drawable-watch/action_negative_bg.xml b/res/drawable-watch/action_negative_bg.xml index 7b21ba6d..994ae8e2 100644 --- a/res/drawable-watch/action_negative_bg.xml +++ b/res/drawable-watch/action_negative_bg.xml @@ -13,23 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. --> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="false"> - <shape android:shape="oval"> - <solid android:color="@color/circular_button_disabled"/> - <size android:width="40dp" android:height="40dp" /> - </shape> - </item> - <item android:state_pressed="true"> - <shape android:shape="oval"> - <solid android:color="#757575"/> - <size android:width="40dp" android:height="40dp" /> - </shape> - </item> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:colorControlHighlight"> <item> - <shape android:shape="oval"> - <solid android:color="#BDBDBD"/> + <shape android:shape="oval" android:tint="?android:colorButtonNormal"> + <solid android:color="@android:color/white" /> <size android:width="40dp" android:height="40dp" /> </shape> </item> -</selector> +</ripple> diff --git a/res/drawable-watch/action_positive_bg.xml b/res/drawable-watch/action_positive_bg.xml index f3457c1a..3e8590f2 100644 --- a/res/drawable-watch/action_positive_bg.xml +++ b/res/drawable-watch/action_positive_bg.xml @@ -13,23 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. --> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="false"> - <shape android:shape="oval"> - <solid android:color="@color/circular_button_disabled"/> - <size android:width="40dp" android:height="40dp" /> - </shape> - </item> - <item android:state_pressed="true"> - <shape android:shape="oval"> - <solid android:color="#009688"/> - <size android:width="40dp" android:height="40dp" /> - </shape> - </item> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:colorControlHighlight"> <item> - <shape android:shape="oval"> - <solid android:color="#00BFA5"/> + <shape android:shape="oval" android:tint="@color/btn_colored_background_material"> + <solid android:color="@android:color/white" /> <size android:width="40dp" android:height="40dp" /> </shape> </item> -</selector> +</ripple> diff --git a/res/drawable-watch/cancel_button.xml b/res/drawable-watch/cancel_button.xml index 641526a5..8e4d2d48 100644 --- a/res/drawable-watch/cancel_button.xml +++ b/res/drawable-watch/cancel_button.xml @@ -15,7 +15,5 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/action_negative_bg" /> - <item> - <bitmap android:src="@drawable/ic_cc_cancel" android:gravity="center" /> - </item> + <item android:drawable="@drawable/ic_cc_clear" android:gravity="center" /> </layer-list> diff --git a/res/drawable-watch/confirm_button.xml b/res/drawable-watch/confirm_button.xml index 2b53e42e..d1bfae33 100644 --- a/res/drawable-watch/confirm_button.xml +++ b/res/drawable-watch/confirm_button.xml @@ -15,7 +15,5 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/action_positive_bg" /> - <item> - <bitmap android:src="@drawable/ic_cc_checkmark" android:gravity="center" /> - </item> + <item android:drawable="@drawable/ic_cc_checkmark" android:gravity="center" /> </layer-list> diff --git a/res/drawable-watch/deny_button.xml b/res/drawable-watch/deny_button.xml index 1e7582bc..0a2e1ae1 100644 --- a/res/drawable-watch/deny_button.xml +++ b/res/drawable-watch/deny_button.xml @@ -15,7 +15,5 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/action_negative_bg" /> - <item> - <bitmap android:src="@drawable/ic_cc_deny" android:gravity="center" /> - </item> + <item android:drawable="@drawable/ic_cc_deny" android:gravity="center" /> </layer-list> diff --git a/res/drawable-watch/ic_cc_checkmark.xml b/res/drawable-watch/ic_cc_checkmark.xml new file mode 100644 index 00000000..832e090f --- /dev/null +++ b/res/drawable-watch/ic_cc_checkmark.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/res/drawable-watch/ic_cc_clear.xml b/res/drawable-watch/ic_cc_clear.xml new file mode 100644 index 00000000..06bb30b3 --- /dev/null +++ b/res/drawable-watch/ic_cc_clear.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/res/drawable-watch/ic_cc_deny.xml b/res/drawable-watch/ic_cc_deny.xml new file mode 100644 index 00000000..971dfcc8 --- /dev/null +++ b/res/drawable-watch/ic_cc_deny.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/res/layout-watch/accept_deny_dialog.xml b/res/layout-watch/accept_deny_dialog.xml new file mode 100644 index 00000000..1a0509ee --- /dev/null +++ b/res/layout-watch/accept_deny_dialog.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<ScrollView + xmlns:android="http://schemas.android.com/apk/res/android" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <LinearLayout + android:id="@android:id/content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <FrameLayout + android:adjustViewBounds="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="@dimen/diag_preferred_padding"> + <ImageView android:id="@android:id/icon" + android:adjustViewBounds="true" + android:maxHeight="24dp" + android:maxWidth="24dp" + android:layout_marginTop="@dimen/diag_icon_margin_top" + android:layout_marginBottom="8dp" + android:layout_gravity="center_horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:scaleType="centerInside" + android:visibility="gone" + android:src="@null" /> + </FrameLayout> + + <TextView android:id="@android:id/title" + android:gravity="center" + android:layout_marginBottom="8dp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="@dimen/diag_preferred_padding" + android:paddingRight="@dimen/diag_preferred_padding" + android:textAppearance="@android:style/TextAppearance.Material.Title" /> + + <TextView + android:id="@android:id/message" + android:gravity="center" + android:layout_marginBottom="8dp" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:paddingLeft="@dimen/diag_preferred_padding" + android:paddingRight="@dimen/diag_preferred_padding" + android:textAppearance="@android:style/TextAppearance.Material.Subhead" + android:visibility="gone" /> + + <FrameLayout + android:id="@+id/buttonPanel" + android:layout_weight="1" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <LinearLayout + android:id="@+id/buttonContainer" + android:orientation="horizontal" + android:gravity="center_horizontal|top" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:paddingTop="8dp" + android:paddingBottom="@dimen/diag_button_padding_bottom" + android:paddingLeft="@dimen/diag_button_padding_horizontal" + android:paddingRight="@dimen/diag_button_padding_horizontal" + style="?android:attr/buttonBarStyle"> + + <ImageButton + android:id="@android:id/button2" + android:src="@drawable/ic_cc_clear" + android:background="@drawable/accept_deny_dialog_negative_bg" + android:contentDescription="@string/generic_cancel" + android:layout_width="@dimen/diag_button_size" + android:layout_height="@dimen/diag_button_size" + android:visibility="gone" /> + + <Space + android:id="@+id/spacer" + android:layout_width="0dp" + android:layout_height="0dp" + android:visibility="gone" + android:layout_weight="1" /> + + <ImageButton + android:id="@android:id/button1" + android:src="@drawable/ic_cc_checkmark" + android:background="@drawable/accept_deny_dialog_positive_bg" + android:contentDescription="@string/generic_yes" + android:layout_width="@dimen/diag_button_size" + android:layout_height="@dimen/diag_button_size" + android:visibility="gone" /> + </LinearLayout> + </FrameLayout> + </LinearLayout> +</ScrollView> diff --git a/res/layout-watch/confirmation_dialog.xml b/res/layout-watch/confirmation_dialog.xml deleted file mode 100644 index ea25b6b4..00000000 --- a/res/layout-watch/confirmation_dialog.xml +++ /dev/null @@ -1,131 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project - - 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. ---> -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/confirmation" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <ScrollView - android:id="@+id/scrolling_container" - android:overScrollMode="never" - android:scrollbars="none" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <LinearLayout - android:id="@+id/content" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingTop="@dimen/conf_diag_content_padding_top"> - - <LinearLayout - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="@dimen/conf_diag_min_space_above_message" - android:gravity="bottom"> - <TextView - android:id="@+id/current_page_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginTop="@dimen/grant_permissions_app_breadcrumb_margin_top" - android:textAppearance="@style/GrantPermissions.BreadcrumbText" /> - - <ImageView - android:id="@+id/icon" - android:layout_width="@dimen/grant_permissions_app_icon_size" - android:layout_height="@dimen/grant_permissions_app_icon_size" - android:tint="@color/grant_permissions_app_color" - android:layout_gravity="center_horizontal" - android:layout_marginTop="@dimen/grant_permissions_app_icon_margin_top"/> - </LinearLayout> - - <TextView - android:id="@+id/message" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/grant_permissions_title_margin_top" - android:paddingLeft="@dimen/grant_permissions_message_side_padding" - android:paddingRight="@dimen/grant_permissions_message_side_padding" - android:gravity="center" - android:textAppearance="@style/GrantPermissions.TitleText"/> - </LinearLayout> - </ScrollView> - - <!-- TODO: Change this to use a ViewStub instead of show/hiding the two layouts --> - <FrameLayout android:id="@+id/button_bar_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="bottom" - android:background="#FF606060"> - <FrameLayout - android:id="@+id/horizontal_button_bar" - android:layout_width="match_parent" - android:layout_height="@dimen/conf_diag_button_container_height"> - <Button - android:id="@+id/permission_deny_button" - android:layout_width="54dp" - android:layout_height="54dp" - android:layout_gravity="top|left" - android:layout_marginLeft="@dimen/conf_diag_2button_margin_side" - android:layout_marginTop="@dimen/conf_diag_2button_margin_top" - android:background="@drawable/cancel_button"/> - - <Button - android:id="@+id/permission_allow_button" - android:layout_width="54dp" - android:layout_height="54dp" - android:layout_gravity="top|right" - android:layout_marginRight="@dimen/conf_diag_2button_margin_side" - android:layout_marginTop="@dimen/conf_diag_2button_margin_top" - android:background="@drawable/confirm_button"/> - </FrameLayout> - - <FrameLayout - android:id="@+id/vertical_button_bar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/conf_diag_3button_padding_side" - android:paddingRight="@dimen/conf_diag_3button_padding_side" - android:visibility="gone"> - <LinearLayout - android:id="@+id/buttonPanel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical"> - <Button - android:id="@+id/vertical_button1" - style="@style/Widget.WearDiag.Button"/> - - <Button - android:id="@+id/vertical_button2" - style="@style/Widget.WearDiag.Button"/> - - <Button - android:id="@+id/vertical_button3" - style="@style/Widget.WearDiag.Button"/> - - <!-- Adding padding to the bottom button causes rendering issues, so add - an empty view here instead --> - <Space android:layout_width="match_parent" - android:layout_height="@dimen/conf_diag_3button_padding_bottom"/> - </LinearLayout> - </FrameLayout> - </FrameLayout> -</FrameLayout> diff --git a/res/layout-watch/permissions_settings_item.xml b/res/layout-watch/permissions_settings_item.xml deleted file mode 100644 index b370f1ac..00000000 --- a/res/layout-watch/permissions_settings_item.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content" > - <android.support.wearable.view.CircledImageView - android:id="@+id/image" - android:alpha="0.5" - android:layout_height="52dp" - android:layout_width="52dp" - android:layout_gravity="center_vertical" - app:circle_border_color="#FFFFFFFF" - app:circle_border_width="1dp" - app:circle_color="#00000000" - app:image_tint="#FFFFFFFF"/> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/settings_text_margin_left" - android:layout_gravity="center_vertical" - android:orientation="vertical" > - - <TextView - android:id="@+id/text" - android:alpha="0.5" - android:fontFamily="sans-serif-condensed-light" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/permissions_settings_item_color" - android:textSize="14sp" - android:maxLines="2" - android:ellipsize="end"/> - <TextView - android:id="@+id/state" - android:alpha="0.5" - android:fontFamily="sans-serif-condensed-light" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/permissions_settings_item_color" - android:textSize="14sp" - android:maxLines="1" - android:ellipsize="end"/> - </LinearLayout> - -</LinearLayout> diff --git a/res/layout-watch/settings_internal.xml b/res/layout-watch/settings_internal.xml deleted file mode 100644 index e1947aaa..00000000 --- a/res/layout-watch/settings_internal.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project - - 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. ---> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - <TextView - android:id="@+id/header" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="@dimen/settings_header_base_height" - android:layout_marginLeft="16dp" - android:layout_marginTop="@dimen/settings_header_top_margin" - android:textSize="@dimen/setting_short_header_text_size" - android:maxLines="2" - android:ellipsize="end" - android:textColor="#9E9E9E" - android:fontFamily="sans-serif-condensed-light" - /> - - <TextView - android:id="@+id/details" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="@dimen/settings_header_base_height" - android:layout_marginLeft="16dp" - android:layout_marginTop="@dimen/settings_header_top_margin" - android:maxLines="2" - android:ellipsize="end" - android:textColor="@color/permissions_settings_item_color" - android:textSize="14sp" - android:visibility="gone" - /> - </LinearLayout> - - <android.support.wearable.view.WearableListView - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/wheel" - android:layout_width="match_parent" - android:layout_height="match_parent" - /> -</merge> diff --git a/res/values-af-watch/strings.xml b/res/values-af-watch/strings.xml index c32ca2b1..a62540f6 100644 --- a/res/values-af-watch/strings.xml +++ b/res/values-af-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Wys stelselprogramme"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Onveranderbaar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"GEAKTIVEER"</string> - <string name="generic_disabled" msgid="576339310027394867">"GEDEAKTIVEER"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Kanselleer"</string> </resources> diff --git a/res/values-am-watch/strings.xml b/res/values-am-watch/strings.xml index 73397e34..1b01ddd3 100644 --- a/res/values-am-watch/strings.xml +++ b/res/values-am-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"የስርዓት መተግበሪያዎችን አሳይ"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ሊለወጥ አይችልም"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ነቅቷል"</string> - <string name="generic_disabled" msgid="576339310027394867">"ተሰናክሏል"</string> + <string name="generic_yes" msgid="3394094077553763689">"አዎ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ይቅር"</string> </resources> diff --git a/res/values-ar-watch/strings.xml b/res/values-ar-watch/strings.xml index 144f7868..19930ea7 100644 --- a/res/values-ar-watch/strings.xml +++ b/res/values-ar-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"عرض تطبيقات النظام"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"لا يمكن التغيير"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ممكّن"</string> - <string name="generic_disabled" msgid="576339310027394867">"معطّل"</string> + <string name="generic_yes" msgid="3394094077553763689">"نعم"</string> + <string name="generic_cancel" msgid="6384078447202012984">"إلغاء"</string> </resources> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 8c49138d..1f32e914 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -86,7 +86,7 @@ <string name="grant_dialog_button_deny" msgid="2176510645406614340">"رفض"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"الرفض على أي حال"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> من <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> - <string name="permission_warning_template" msgid="7332275268559121742">"هل تريد السماح لـ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string> + <string name="permission_warning_template" msgid="7332275268559121742">"هل توافق على منح <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> إذن <xliff:g id="ACTION">%2$s</xliff:g>؟"</string> <string name="grant_dialog_button_allow" msgid="4616529495342337095">"سماح"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"التطبيقات"</string> <string name="app_permissions" msgid="3146758905824597178">"أذونات التطبيق"</string> diff --git a/res/values-az-rAZ-watch/strings.xml b/res/values-az-rAZ-watch/strings.xml index 5d28398e..ef6723b5 100644 --- a/res/values-az-rAZ-watch/strings.xml +++ b/res/values-az-rAZ-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Sistem tətbiqlərini göstərin"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Dəyişdirilə bilməz"</string> - <string name="generic_enabled" msgid="5221039415230005888">"AKTİV"</string> - <string name="generic_disabled" msgid="576339310027394867">"DEAKTİV"</string> + <string name="generic_yes" msgid="3394094077553763689">"Bəli"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Ləğv edin"</string> </resources> diff --git a/res/values-b+sr+Latn-watch/strings.xml b/res/values-b+sr+Latn-watch/strings.xml index 716694a4..63a44db9 100644 --- a/res/values-b+sr+Latn-watch/strings.xml +++ b/res/values-b+sr+Latn-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži sistemske aplikacije"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne može da se promeni"</string> - <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string> - <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Da"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string> </resources> diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 70c664d6..42455ced 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -86,7 +86,7 @@ <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Odbaci"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ipak odbij"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> - <string name="permission_warning_template" msgid="7332275268559121742">"Želite li da dozvolite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> obavi sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string> + <string name="permission_warning_template" msgid="7332275268559121742">"Želite li da dozvolite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string> <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Dozvoli"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplikacije"</string> <string name="app_permissions" msgid="3146758905824597178">"Dozvole za aplikacije"</string> diff --git a/res/values-be-rBY-watch/strings.xml b/res/values-be-rBY-watch/strings.xml index ca2e3341..99b2ce8a 100644 --- a/res/values-be-rBY-watch/strings.xml +++ b/res/values-be-rBY-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Паказваць сістэмныя праграмы"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельга змяніць"</string> - <string name="generic_enabled" msgid="5221039415230005888">"УКЛЮЧАНА"</string> - <string name="generic_disabled" msgid="576339310027394867">"АДКЛЮЧАНА"</string> + <string name="generic_yes" msgid="3394094077553763689">"Так"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Скасаваць"</string> </resources> diff --git a/res/values-bg-watch/strings.xml b/res/values-bg-watch/strings.xml index af81f2a8..b71606b4 100644 --- a/res/values-bg-watch/strings.xml +++ b/res/values-bg-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Показване на системните приложения"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Без промяна"</string> - <string name="generic_enabled" msgid="5221039415230005888">"АКТИВИРАНО"</string> - <string name="generic_disabled" msgid="576339310027394867">"ДЕАКТИВИРАНО"</string> + <string name="generic_yes" msgid="3394094077553763689">"Да"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Отказ"</string> </resources> diff --git a/res/values-bn-rBD-watch/strings.xml b/res/values-bn-rBD-watch/strings.xml index d642be1c..79a91f48 100644 --- a/res/values-bn-rBD-watch/strings.xml +++ b/res/values-bn-rBD-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"সিস্টেম অ্যাপ্লিকেশানগুলি দেখান"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"পরিবর্তন করা যাবে না"</string> - <string name="generic_enabled" msgid="5221039415230005888">"সক্ষম করা রয়েছে"</string> - <string name="generic_disabled" msgid="576339310027394867">"অক্ষম করা রয়েছে"</string> + <string name="generic_yes" msgid="3394094077553763689">"হ্যাঁ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"বাতিল করুন"</string> </resources> diff --git a/res/values-bs-rBA-watch/strings.xml b/res/values-bs-rBA-watch/strings.xml index d168fbcc..dcae0979 100644 --- a/res/values-bs-rBA-watch/strings.xml +++ b/res/values-bs-rBA-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži sistemske aplikacije"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ne mijenja se"</string> - <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string> - <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Da"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Otkaži"</string> </resources> diff --git a/res/values-ca-watch/strings.xml b/res/values-ca-watch/strings.xml index c4f9e3ff..d289b560 100644 --- a/res/values-ca-watch/strings.xml +++ b/res/values-ca-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostra les aplicacions del sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No es pot canviar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ACTIVAT"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESACTIVAT"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sí"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancel·la"</string> </resources> diff --git a/res/values-cs-watch/strings.xml b/res/values-cs-watch/strings.xml index ae6cfbcf..160d7aa1 100644 --- a/res/values-cs-watch/strings.xml +++ b/res/values-cs-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Zobrazit systémové aplikace"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nelze změnit"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ZAPNUTO"</string> - <string name="generic_disabled" msgid="576339310027394867">"VYPNUTO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ano"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Zrušit"</string> </resources> diff --git a/res/values-da-watch/strings.xml b/res/values-da-watch/strings.xml index 2fd6279d..616b1c2e 100644 --- a/res/values-da-watch/strings.xml +++ b/res/values-da-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Vis systemapps"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke ændres"</string> - <string name="generic_enabled" msgid="5221039415230005888">"AKTIVERET"</string> - <string name="generic_disabled" msgid="576339310027394867">"DEAKTIVERET"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Annuller"</string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 921ca808..0415803c 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -86,7 +86,7 @@ <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Afvis"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Afvis alligevel"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ud af <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> - <string name="permission_warning_template" msgid="7332275268559121742">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilladelse til <xliff:g id="ACTION">%2$s</xliff:g>?"</string> + <string name="permission_warning_template" msgid="7332275268559121742">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string> <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Tillad"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Apps"</string> <string name="app_permissions" msgid="3146758905824597178">"Apptilladelser"</string> diff --git a/res/values-de-watch/strings.xml b/res/values-de-watch/strings.xml index be893682..3b12e0b8 100644 --- a/res/values-de-watch/strings.xml +++ b/res/values-de-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"System-Apps anzeigen"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Keine Änderung möglich"</string> - <string name="generic_enabled" msgid="5221039415230005888">"Aktiviert"</string> - <string name="generic_disabled" msgid="576339310027394867">"Deaktiviert"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Abbrechen"</string> </resources> diff --git a/res/values-el-watch/strings.xml b/res/values-el-watch/strings.xml index 2aa34551..3d923dcc 100644 --- a/res/values-el-watch/strings.xml +++ b/res/values-el-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Εμφάνιση εφαρμογών συστήματος"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Δεν είναι δυνατή η αλλαγή"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ΕΝΕΡΓΟ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ΑΝΕΝΕΡΓΟ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ναι"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Ακύρωση"</string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index a82a5562..ad4c3e24 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -87,7 +87,7 @@ <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Απόρριψη"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> από <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="permission_warning_template" msgid="7332275268559121742">"Να επιτρέπεται στην εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> να <xliff:g id="ACTION">%2$s</xliff:g>;"</string> - <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Να επιτραπεί"</string> + <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Να επιτρέπεται"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Εφαρμογές"</string> <string name="app_permissions" msgid="3146758905824597178">"Δικαιώματα εφ/γών"</string> <string name="never_ask_again" msgid="1089938738199748687">"Να μην ερωτηθώ ξανά"</string> diff --git a/res/values-en-rAU-watch/strings.xml b/res/values-en-rAU-watch/strings.xml index 755d64f0..e0d0edbc 100644 --- a/res/values-en-rAU-watch/strings.xml +++ b/res/values-en-rAU-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string> - <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string> + <string name="generic_yes" msgid="3394094077553763689">"Yes"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string> </resources> diff --git a/res/values-en-rGB-watch/strings.xml b/res/values-en-rGB-watch/strings.xml index 755d64f0..e0d0edbc 100644 --- a/res/values-en-rGB-watch/strings.xml +++ b/res/values-en-rGB-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string> - <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string> + <string name="generic_yes" msgid="3394094077553763689">"Yes"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string> </resources> diff --git a/res/values-en-rIN-watch/strings.xml b/res/values-en-rIN-watch/strings.xml index 755d64f0..e0d0edbc 100644 --- a/res/values-en-rIN-watch/strings.xml +++ b/res/values-en-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Show system apps"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Can\'t be changed"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ENABLED"</string> - <string name="generic_disabled" msgid="576339310027394867">"DISABLED"</string> + <string name="generic_yes" msgid="3394094077553763689">"Yes"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancel"</string> </resources> diff --git a/res/values-es-rUS-watch/strings.xml b/res/values-es-rUS-watch/strings.xml index 120b19bd..145b7361 100644 --- a/res/values-es-rUS-watch/strings.xml +++ b/res/values-es-rUS-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicaciones del sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inalterable"</string> - <string name="generic_enabled" msgid="5221039415230005888">"HABILITADA"</string> - <string name="generic_disabled" msgid="576339310027394867">"INHABILITADA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sí"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 894f1c7a..fedbe451 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -86,7 +86,7 @@ <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Rechazar"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Denegar de todos modos"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> - <string name="permission_warning_template" msgid="7332275268559121742">"¿Permitir que la <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string> + <string name="permission_warning_template" msgid="7332275268559121742">"¿Quieres que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string> <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Permitir"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Aplicaciones"</string> <string name="app_permissions" msgid="3146758905824597178">"Permisos de aplicaciones"</string> diff --git a/res/values-es-watch/strings.xml b/res/values-es-watch/strings.xml index 198c266f..b3c4ff12 100644 --- a/res/values-es-watch/strings.xml +++ b/res/values-es-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicaciones del sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"No se puede cambiar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"HABILITADO"</string> - <string name="generic_disabled" msgid="576339310027394867">"INHABILITADO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sí"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-et-rEE-watch/strings.xml b/res/values-et-rEE-watch/strings.xml index 947809d9..328e2150 100644 --- a/res/values-et-rEE-watch/strings.xml +++ b/res/values-et-rEE-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Kuva süsteemirakendused"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei saa muuta"</string> - <string name="generic_enabled" msgid="5221039415230005888">"LUBATUD"</string> - <string name="generic_disabled" msgid="576339310027394867">"KEELATUD"</string> + <string name="generic_yes" msgid="3394094077553763689">"Jah"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Tühista"</string> </resources> diff --git a/res/values-eu-rES-watch/strings.xml b/res/values-eu-rES-watch/strings.xml index 25e2429e..89eb2968 100644 --- a/res/values-eu-rES-watch/strings.xml +++ b/res/values-eu-rES-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Erakutsi sistema-aplikazioak"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ezin da aldatu"</string> - <string name="generic_enabled" msgid="5221039415230005888">"GAITUTA"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESGAITUTA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Bai"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Utzi"</string> </resources> diff --git a/res/values-fa-watch/strings.xml b/res/values-fa-watch/strings.xml index 5dc5a3f6..8d149541 100644 --- a/res/values-fa-watch/strings.xml +++ b/res/values-fa-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"نمایش برنامههای سیستم"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"نمیتواند تغییر کند"</string> - <string name="generic_enabled" msgid="5221039415230005888">"فعال شد"</string> - <string name="generic_disabled" msgid="576339310027394867">"غیرفعال"</string> + <string name="generic_yes" msgid="3394094077553763689">"بله"</string> + <string name="generic_cancel" msgid="6384078447202012984">"لغو"</string> </resources> diff --git a/res/values-fi-watch/strings.xml b/res/values-fi-watch/strings.xml index 5305299c..292c4173 100644 --- a/res/values-fi-watch/strings.xml +++ b/res/values-fi-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Näytä järjestelmäsovellukset"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ei muutettavissa"</string> - <string name="generic_enabled" msgid="5221039415230005888">"KÄYTÖSSÄ"</string> - <string name="generic_disabled" msgid="576339310027394867">"POIS KÄYTÖSTÄ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Kyllä"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Peruuta"</string> </resources> diff --git a/res/values-fr-rCA-watch/strings.xml b/res/values-fr-rCA-watch/strings.xml index cb176c27..ad86d016 100644 --- a/res/values-fr-rCA-watch/strings.xml +++ b/res/values-fr-rCA-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Afficher les applications système"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Inchangeable"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ACTIVÉ"</string> - <string name="generic_disabled" msgid="576339310027394867">"DÉSACTIVÉ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Oui"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string> </resources> diff --git a/res/values-fr-watch/strings.xml b/res/values-fr-watch/strings.xml index c567d03b..a172e1c7 100644 --- a/res/values-fr-watch/strings.xml +++ b/res/values-fr-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Afficher les applications système"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Non modifiable"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ACTIVÉ"</string> - <string name="generic_disabled" msgid="576339310027394867">"DÉSACTIVÉ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Oui"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Annuler"</string> </resources> diff --git a/res/values-gl-rES-watch/strings.xml b/res/values-gl-rES-watch/strings.xml index 38e4e6cb..5cbb970c 100644 --- a/res/values-gl-rES-watch/strings.xml +++ b/res/values-gl-rES-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicacións do sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Cambio imposible"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ACTIVADO"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESACTIVADO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Si"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-gu-rIN-watch/strings.xml b/res/values-gu-rIN-watch/strings.xml index 10ee4306..6e83cf2e 100644 --- a/res/values-gu-rIN-watch/strings.xml +++ b/res/values-gu-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"સિસ્ટમ ઍપ્લિકેશનો બતાવો"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"બદલી શકતાં નથી"</string> - <string name="generic_enabled" msgid="5221039415230005888">"સક્ષમ કરેલ"</string> - <string name="generic_disabled" msgid="576339310027394867">"અક્ષમ કરેલ"</string> + <string name="generic_yes" msgid="3394094077553763689">"હા"</string> + <string name="generic_cancel" msgid="6384078447202012984">"રદ કરો"</string> </resources> diff --git a/res/values-hi-watch/strings.xml b/res/values-hi-watch/strings.xml index 39c93948..f7adb0ce 100644 --- a/res/values-hi-watch/strings.xml +++ b/res/values-hi-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"सिस्टम ऐप्स दिखाएं"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदला नहीं जा सकता"</string> - <string name="generic_enabled" msgid="5221039415230005888">"सक्षम"</string> - <string name="generic_disabled" msgid="576339310027394867">"अक्षम"</string> + <string name="generic_yes" msgid="3394094077553763689">"हां"</string> + <string name="generic_cancel" msgid="6384078447202012984">"रद्द करें"</string> </resources> diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 9149bc93..26293534 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -79,7 +79,7 @@ <string name="Parse_error_dlg_text" msgid="7623286983621067011">"पैकेज को पार्स करने में कोई समस्या थी."</string> <string name="newPerms" msgid="6039428254474104210">"नया"</string> <string name="allPerms" msgid="1024385515840703981">"सभी"</string> - <string name="privacyPerms" msgid="1850527049572617">"गोपनीयता"</string> + <string name="privacyPerms" msgid="1850527049572617">"निजता"</string> <string name="devicePerms" msgid="6733560207731294504">"डिवाइस पहुंच"</string> <string name="no_new_perms" msgid="6657813692169565975">"इस नई जानकारी के लिए अनुमति की आवश्यकता नहीं है."</string> <string name="grant_confirm_question" msgid="4690289297029223742">"क्या आप निम्नलिखित के लिए अनुमति देना चाहते हैं ? इसे इन पर एक्सेस प्राप्त होगी:"</string> diff --git a/res/values-hr-watch/strings.xml b/res/values-hr-watch/strings.xml index 37658e5e..cd44eee0 100644 --- a/res/values-hr-watch/strings.xml +++ b/res/values-hr-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaži aplikacije sustava"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Promjena nemoguća"</string> - <string name="generic_enabled" msgid="5221039415230005888">"OMOGUĆENO"</string> - <string name="generic_disabled" msgid="576339310027394867">"ONEMOGUĆENO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Da"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Odustani"</string> </resources> diff --git a/res/values-hu-watch/strings.xml b/res/values-hu-watch/strings.xml index 8a116dff..8ae3504e 100644 --- a/res/values-hu-watch/strings.xml +++ b/res/values-hu-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Rendszeralkalmazások megjelenítése"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nem változtatható"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ENGEDÉLYEZVE"</string> - <string name="generic_disabled" msgid="576339310027394867">"LETILTVA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Igen"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Mégse"</string> </resources> diff --git a/res/values-hy-rAM-watch/strings.xml b/res/values-hy-rAM-watch/strings.xml index 08786c11..5538858c 100644 --- a/res/values-hy-rAM-watch/strings.xml +++ b/res/values-hy-rAM-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Ցուցադրել համակարգի հավելվածները"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Հնարավոր չէ փոխել"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ՄԻԱՑՎԱԾ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ԱՆՋԱՏՎԱԾ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Այո"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Չեղարկել"</string> </resources> diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml index b7d5c2a2..8b892d64 100644 --- a/res/values-hy-rAM/strings.xml +++ b/res/values-hy-rAM/strings.xml @@ -19,7 +19,7 @@ <string name="app_name" msgid="2738748390251381682">"Փաթեթի տեղադրիչ"</string> <string name="next" msgid="3057143178373252333">"Հաջորդը"</string> <string name="install" msgid="5896438203900042068">"Տեղադրել"</string> - <string name="done" msgid="3889387558374211719">"Կատարված է"</string> + <string name="done" msgid="3889387558374211719">"Պատրաստ է"</string> <string name="security_settings_desc" msgid="2706691034244052604">"Թույլատրել այս հավելվածին`"</string> <string name="cancel" msgid="8360346460165114585">"Չեղարկել"</string> <string name="unknown" msgid="4742479012767208045">"Անհայտ"</string> @@ -50,8 +50,8 @@ <string name="settings" msgid="6743583734099755409">"Կարգավորումներ"</string> <string name="manage_applications" msgid="4033876279091996596">"Կառավարել հավելվածները"</string> <string name="dlg_app_replacement_title" msgid="1232230739563820951">"Փոխարինե՞լ հավելվածը:"</string> - <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ծրագիրը, որը դուք տեղադրում եք, կփոխարինի մեկ այլ ծրագրի:\n\nՁեր բոլոր նախկին օգտվողի տվյալները կպահվեն:"</string> - <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Սա համակարգային ծրագիր է:\n\nՁեր բոլոր նախկին օգտվողի տվյալները կպահվեն:"</string> + <string name="dlg_app_replacement_statement" msgid="2992911899989907492">"Ծրագիրը, որը դուք տեղադրում եք, կփոխարինի մեկ այլ ծրագրի:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string> + <string name="dlg_sys_app_replacement_statement" msgid="1900046590819605929">"Սա համակարգային ծրագիր է:\n\nՁեր բոլոր նախկին օգտատիրոջ տվյալները կպահվեն:"</string> <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Տարածքից դուրս"</string> <string name="out_of_space_dlg_text" msgid="4774775404294282216">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց տեղադրել: Ազատեք որոշակի տարածք և կրկին փորձեք:"</string> <string name="dlg_ok" msgid="6944357727705699232">"Լավ"</string> @@ -61,20 +61,20 @@ <string name="uninstall_update_title" msgid="4146940097553335390">"Ապատեղադրել թարմացումը"</string> <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>-ը հետևյալ հավելվածի մասն է`"</string> <string name="uninstall_application_text" msgid="6691975835951187030">"Ցանկանու՞մ եք ապատեղադրել այս ծրագիրը:"</string> - <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ցանկանու՞մ եք ապատեղադրել այս հավելվածը "<b>"բոլոր"</b>" օգտվողների համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտվողներից:"</string> - <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ցանկանում եք ապատեղադրե՞լ այս ծրագիրը <xliff:g id="USERNAME">%1$s</xliff:g> օգտվողի համար:"</string> + <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Ցանկանու՞մ եք ապատեղադրել այս հավելվածը "<b>"բոլոր"</b>" օգտատերերի համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտատերերից:"</string> + <string name="uninstall_application_text_user" msgid="8766882355635485733">"Ցանկանում եք ապատեղադրե՞լ այս ծրագիրը <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string> <string name="uninstall_update_text" msgid="1394549691152728409">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն:"</string> - <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն: Դա վերաբերում է այս սարքի բոլոր օգտվողներին, այդ թվում նաև աշխատանքային պրոֆիլներ ունեցողներին:"</string> + <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Փոխարինե՞լ այս հավելվածը գործարանային տարբերակով: Բոլոր տվյալները կհեռացվեն: Դա վերաբերում է այս սարքի բոլոր օգտատերերին, այդ թվում նաև աշխատանքային պրոֆիլներ ունեցողներին:"</string> <string name="uninstalling" msgid="5556217435895938250">"Ապատեղադրում է..."</string> <string name="uninstall_done" msgid="3792487853420281888">"Ապատեղադրումը ավարտված է:"</string> <string name="uninstall_failed" msgid="631122574306299512">"Ապատեղադրումն անհաջող է:"</string> <string name="uninstall_failed_device_policy_manager" msgid="3493789239037852035">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթն ակտիվ սարքի ադմինիստրատոր է:"</string> - <string name="uninstall_failed_device_policy_manager_of_user" msgid="4466062391552204291">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթը ակտիվ սարքի ադմինիստրատոր է <xliff:g id="USERNAME">%1$s</xliff:g> օգտվողի համար:"</string> - <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Այս հավելվածն անհրաժեշտ է որոշ օգտվողների կամ պրոֆիլների համար և մնացածի մոտ հեռացվել է"</string> + <string name="uninstall_failed_device_policy_manager_of_user" msgid="4466062391552204291">"Հնարավոր չէ ապատեղադրել, քանի որ այս փաթեթը ակտիվ սարքի ադմինիստրատոր է <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string> + <string name="uninstall_all_blocked_profile_owner" msgid="3544933038594382346">"Այս հավելվածն անհրաժեշտ է որոշ օգտատերերի կամ պրոֆիլների համար և մնացածի մոտ հեռացվել է"</string> <string name="uninstall_blocked_profile_owner" msgid="6912141045528994954">"Այս հավելվածն անհրաժեշտ է ձեր պրոֆիլի համար: Այն հնարավոր չէ հեռացնել:"</string> <string name="uninstall_blocked_device_owner" msgid="7074175526413453063">"Ծրագիրը ձեր սարքի ադմինիստրատորի կողմից նշվել է որպես պարտադիր և չի կարող հեռացվել:"</string> <string name="manage_device_administrators" msgid="891392489300312370">"Կառավարել սարքի ադմինիստրատորներին"</string> - <string name="manage_users" msgid="3125018886835668847">"Կառավարել օգտվողներին"</string> + <string name="manage_users" msgid="3125018886835668847">"Կառավարել օգտատերերին"</string> <string name="uninstall_failed_msg" msgid="8969754702803951175">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը չհաջողվեց ապատեղադրել:"</string> <string name="Parse_error_dlg_text" msgid="7623286983621067011">"Փաթեթը վերլուծելիս խնդիր առաջացավ:"</string> <string name="newPerms" msgid="6039428254474104210">"Նոր"</string> diff --git a/res/values-in-watch/strings.xml b/res/values-in-watch/strings.xml index 38ad48b9..ca2e087e 100644 --- a/res/values-in-watch/strings.xml +++ b/res/values-in-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Tampilkan aplikasi sistem"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dapat diubah"</string> - <string name="generic_enabled" msgid="5221039415230005888">"DIAKTIFKAN"</string> - <string name="generic_disabled" msgid="576339310027394867">"DINONAKTIFKAN"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ya"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string> </resources> diff --git a/res/values-is-rIS-watch/strings.xml b/res/values-is-rIS-watch/strings.xml index c8f92448..b82da5e5 100644 --- a/res/values-is-rIS-watch/strings.xml +++ b/res/values-is-rIS-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Sýna kerfisforrit"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Má ekki breyta"</string> - <string name="generic_enabled" msgid="5221039415230005888">"VIRKT"</string> - <string name="generic_disabled" msgid="576339310027394867">"ÓVIRKT"</string> + <string name="generic_yes" msgid="3394094077553763689">"Já"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Hætta við"</string> </resources> diff --git a/res/values-it-watch/strings.xml b/res/values-it-watch/strings.xml index 4a44dca9..73b2ab15 100644 --- a/res/values-it-watch/strings.xml +++ b/res/values-it-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostra app di sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Imposs modif"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ATTIVATO"</string> - <string name="generic_disabled" msgid="576339310027394867">"DISATTIVATO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sì"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Annulla"</string> </resources> diff --git a/res/values-iw-watch/strings.xml b/res/values-iw-watch/strings.xml index d27e2d7d..34dd0d3c 100644 --- a/res/values-iw-watch/strings.xml +++ b/res/values-iw-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"הצג אפליקציות מערכת"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"לא ניתן לשנות"</string> - <string name="generic_enabled" msgid="5221039415230005888">"מופעל"</string> - <string name="generic_disabled" msgid="576339310027394867">"מושבת"</string> + <string name="generic_yes" msgid="3394094077553763689">"כן"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ביטול"</string> </resources> diff --git a/res/values-ja-watch/strings.xml b/res/values-ja-watch/strings.xml index f3e83c84..735b908c 100644 --- a/res/values-ja-watch/strings.xml +++ b/res/values-ja-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"システムアプリの表示"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"変更不可"</string> - <string name="generic_enabled" msgid="5221039415230005888">"有効"</string> - <string name="generic_disabled" msgid="576339310027394867">"無効"</string> + <string name="generic_yes" msgid="3394094077553763689">"はい"</string> + <string name="generic_cancel" msgid="6384078447202012984">"キャンセル"</string> </resources> diff --git a/res/values-ka-rGE-watch/strings.xml b/res/values-ka-rGE-watch/strings.xml index 6498a4dc..15749127 100644 --- a/res/values-ka-rGE-watch/strings.xml +++ b/res/values-ka-rGE-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"სისტემის აპების ჩვენება"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ვერ შეიცვლება"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ჩართულია"</string> - <string name="generic_disabled" msgid="576339310027394867">"გამორთულია"</string> + <string name="generic_yes" msgid="3394094077553763689">"დიახ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"გაუქმება"</string> </resources> diff --git a/res/values-kk-rKZ-watch/strings.xml b/res/values-kk-rKZ-watch/strings.xml index dfff10bf..8996bcbe 100644 --- a/res/values-kk-rKZ-watch/strings.xml +++ b/res/values-kk-rKZ-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Жүйелік қолданбаларды көрсету"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгерту мүмкін емес"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ҚОСЫЛҒАН"</string> - <string name="generic_disabled" msgid="576339310027394867">"ӨШІРІЛГЕН"</string> + <string name="generic_yes" msgid="3394094077553763689">"Иә"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Бас тарту"</string> </resources> diff --git a/res/values-km-rKH-watch/strings.xml b/res/values-km-rKH-watch/strings.xml index 1beebfdb..c5f49c54 100644 --- a/res/values-km-rKH-watch/strings.xml +++ b/res/values-km-rKH-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"បង្ហាញកម្មវិធីប្រព័ន្ធ"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"មិនអាចប្តូរបានទេ"</string> - <string name="generic_enabled" msgid="5221039415230005888">"បានបើកដំណើរការ"</string> - <string name="generic_disabled" msgid="576339310027394867">"បានបិទដំណើរការ"</string> + <string name="generic_yes" msgid="3394094077553763689">"បាទ/ចាស"</string> + <string name="generic_cancel" msgid="6384078447202012984">"បោះបង់"</string> </resources> diff --git a/res/values-kn-rIN-watch/strings.xml b/res/values-kn-rIN-watch/strings.xml index 6ed8b36f..1a9a9939 100644 --- a/res/values-kn-rIN-watch/strings.xml +++ b/res/values-kn-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ತೋರಿಸು"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> + <string name="generic_yes" msgid="3394094077553763689">"ಹೌದು"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ರದ್ದುಮಾಡಿ"</string> </resources> diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml index 4a64b97c..7cd63d5d 100644 --- a/res/values-kn-rIN/strings.xml +++ b/res/values-kn-rIN/strings.xml @@ -21,8 +21,8 @@ <string name="install" msgid="5896438203900042068">"ಸ್ಥಾಪಿಸು"</string> <string name="done" msgid="3889387558374211719">"ಮುಗಿದಿದೆ"</string> <string name="security_settings_desc" msgid="2706691034244052604">"ಇದಕ್ಕಾಗಿ ಈ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಿ:"</string> - <string name="cancel" msgid="8360346460165114585">"ರದ್ದುಮಾಡು"</string> - <string name="unknown" msgid="4742479012767208045">"ಅಜ್ಞಾತ"</string> + <string name="cancel" msgid="8360346460165114585">"ರದ್ದುಮಾಡಿ"</string> + <string name="unknown" msgid="4742479012767208045">"ಅಪರಿಚಿತ"</string> <string name="installing" msgid="8613631001631998372">"ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ…"</string> <string name="install_done" msgid="3682715442154357097">"ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗಿದೆ."</string> <string name="install_confirm_question" msgid="7295206719219043890">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲು ಬಯಸುವಿರಾ? ಇದು ಇಲ್ಲಿಗೆ ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ:"</string> @@ -42,9 +42,9 @@ <string name="install_failed_msg" product="tv" msgid="3990457938384021566">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ನಿಮ್ಮ ಟಿವಿಗೆ ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ."</string> <string name="install_failed_msg" product="default" msgid="8554909560982962052">"ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string> <string name="launch" msgid="4826921505917605463">"ತೆರೆ"</string> - <string name="unknown_apps_dlg_text" product="tablet" msgid="7504186369474734767">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> - <string name="unknown_apps_dlg_text" product="tv" msgid="7195713985140602351">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟಿವಿ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> - <string name="unknown_apps_dlg_text" product="default" msgid="133213135679009316">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅಜ್ಞಾತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> + <string name="unknown_apps_dlg_text" product="tablet" msgid="7504186369474734767">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> + <string name="unknown_apps_dlg_text" product="tv" msgid="7195713985140602351">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಟಿವಿ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> + <string name="unknown_apps_dlg_text" product="default" msgid="133213135679009316">"ರಕ್ಷಣೆಯ ದೃಷ್ಟಿಯಿಂದ, ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಪಡೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವಂತೆ ಹೊಂದಿಸಲಾಗಿದೆ."</string> <string name="unknown_apps_admin_dlg_text" msgid="1189146324736698462">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಪರಿಚಿತ ಮೂಲಗಳಿಂದ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ."</string> <string name="ok" msgid="3468756155452870475">"ಸರಿ"</string> <string name="settings" msgid="6743583734099755409">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> @@ -98,7 +98,7 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಇನ್ನಷ್ಟು</item> </plurals> <string name="old_sdk_deny_warning" msgid="3872277112584842615">"ಈ ಅಪ್ಲಿಕೇಶನ್ Android ನ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿತ್ತು. ಅನುಮತಿ ನಿರಾಕರಿಸುವಿಕೆ ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಲ್ಪಟ್ಟಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರುವುದಕ್ಕೆ ಇದು ಕಾರಣವಾಗಬಹುದು."</string> - <string name="default_permission_description" msgid="4992892207044156668">"ಅಜ್ಞಾತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string> + <string name="default_permission_description" msgid="4992892207044156668">"ಅಪರಿಚಿತ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿ"</string> <string name="app_permissions_group_summary" msgid="4787239772223699263">"<xliff:g id="COUNT_1">%2$d</xliff:g> ನಲ್ಲಿ <xliff:g id="COUNT_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ"</string> <string name="menu_show_system" msgid="6773743421743728921">"ಸಿಸ್ಟಂ ತೋರಿಸು"</string> <string name="menu_hide_system" msgid="7595471742649432977">"ಸಿಸ್ಟಮ್ ಮರೆಮಾಡು"</string> @@ -120,7 +120,7 @@ <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಇದನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APP_NAME_1">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?"</string> <string name="permission_review_title_template_install" msgid="6535540493936469336">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string> <string name="permission_review_title_template_update" msgid="2548815248828051885">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಪ್ರವೇಶಿಸಲು ಯಾವುದನ್ನು ಅನುಮತಿಸಬೇಕು ಎಂಬುದನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string> - <string name="review_button_cancel" msgid="957906817733578877">"ರದ್ದುಮಾಡು"</string> + <string name="review_button_cancel" msgid="957906817733578877">"ರದ್ದುಮಾಡಿ"</string> <string name="review_button_continue" msgid="4809162078179371370">"ಮುಂದುವರಿಸು"</string> <string name="new_permissions_category" msgid="3213523410139204183">"ಹೊಸ ಅನುಮತಿಗಳು"</string> <string name="current_permissions_category" msgid="998210994450606094">"ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು"</string> diff --git a/res/values-ko-watch/strings.xml b/res/values-ko-watch/strings.xml index 0bdafac3..6cce6f94 100644 --- a/res/values-ko-watch/strings.xml +++ b/res/values-ko-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"시스템 앱 보기"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"변경할 수 없음"</string> - <string name="generic_enabled" msgid="5221039415230005888">"사용"</string> - <string name="generic_disabled" msgid="576339310027394867">"사용 안함"</string> + <string name="generic_yes" msgid="3394094077553763689">"예"</string> + <string name="generic_cancel" msgid="6384078447202012984">"취소"</string> </resources> diff --git a/res/values-ky-rKG-watch/strings.xml b/res/values-ky-rKG-watch/strings.xml index 74a3b8b3..aadb7c49 100644 --- a/res/values-ky-rKG-watch/strings.xml +++ b/res/values-ky-rKG-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Тутум колдонмолорун көрсөтүү"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өзгөртүүгө болбойт"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ИШТЕТИЛГЕН"</string> - <string name="generic_disabled" msgid="576339310027394867">"ӨЧҮРҮЛГӨН"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ооба"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Жокко чыгаруу"</string> </resources> diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml index 12bef9f0..b23ee7de 100644 --- a/res/values-ky-rKG/strings.xml +++ b/res/values-ky-rKG/strings.xml @@ -104,7 +104,7 @@ <string name="menu_hide_system" msgid="7595471742649432977">"Тутумдагы процесстерди жашыруу"</string> <string name="permission_title" msgid="6495415273398916381">"<xliff:g id="PERMISSION">%1$s</xliff:g> уруксат"</string> <string name="no_apps" msgid="1965493419005012569">"Эч бир колдонмо жок"</string> - <string name="location_settings" msgid="1774875730854491297">"Жайгашкан жерди анктоо жөндлрү"</string> + <string name="location_settings" msgid="1774875730854491297">"Геолокация параметрлери"</string> <string name="location_warning" msgid="8778701356292735971">"<xliff:g id="APP_NAME">%1$s</xliff:g> - бул түзмөктөгү жайгашкан жерди аныктоо кызматынын камсыздоочусу. Жайгашкан жерди көрүү мүмкүнчүлүгүн жайгашкан жерди аныктоо жөндөөлөрүнөн өзгөртсө болот."</string> <string name="system_warning" msgid="7103819124542305179">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн негизги функциялары талаптагыдай иштебей калышы мүмкүн."</string> <string name="permission_summary_enforced_by_policy" msgid="3418617316188986205">"Саясат тарабынан күчүнө киргизилген"</string> diff --git a/res/values-lo-rLA-watch/strings.xml b/res/values-lo-rLA-watch/strings.xml index e362c39f..4fae329c 100644 --- a/res/values-lo-rLA-watch/strings.xml +++ b/res/values-lo-rLA-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"ສະແດງແອັບລະບົບ"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ບໍ່ສາມາດປ່ຽນແປງໄດ້"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ເປີດໃຊ້ງານແລ້ວ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ປິດໃຊ້ງານແລ້ວ"</string> + <string name="generic_yes" msgid="3394094077553763689">"ແມ່ນແລ້ວ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ຍົກເລີກ"</string> </resources> diff --git a/res/values-lt-watch/strings.xml b/res/values-lt-watch/strings.xml index c10c5e8f..85eebcf4 100644 --- a/res/values-lt-watch/strings.xml +++ b/res/values-lt-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Rodyti sistemos programas"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Negalima pakeisti"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ĮGALINTAS"</string> - <string name="generic_disabled" msgid="576339310027394867">"IŠJUNGTAS"</string> + <string name="generic_yes" msgid="3394094077553763689">"Taip"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Atšaukti"</string> </resources> diff --git a/res/values-lv-watch/strings.xml b/res/values-lv-watch/strings.xml index aeb3c045..29aef48d 100644 --- a/res/values-lv-watch/strings.xml +++ b/res/values-lv-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Rādīt sistēmas lietotnes"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nevar mainīt"</string> - <string name="generic_enabled" msgid="5221039415230005888">"IESPĒJOTS"</string> - <string name="generic_disabled" msgid="576339310027394867">"ATSPĒJOTS"</string> + <string name="generic_yes" msgid="3394094077553763689">"Jā"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Atcelt"</string> </resources> diff --git a/res/values-mk-rMK-watch/strings.xml b/res/values-mk-rMK-watch/strings.xml index d23ce70d..5906f56d 100644 --- a/res/values-mk-rMK-watch/strings.xml +++ b/res/values-mk-rMK-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Прикажи ги системските апликации"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се смени"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ОВОЗМОЖЕНО"</string> - <string name="generic_disabled" msgid="576339310027394867">"ОНЕВОЗМОЖЕНО"</string> + <string name="generic_yes" msgid="3394094077553763689">"Да"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string> </resources> diff --git a/res/values-ml-rIN-watch/strings.xml b/res/values-ml-rIN-watch/strings.xml index b5056315..13e38761 100644 --- a/res/values-ml-rIN-watch/strings.xml +++ b/res/values-ml-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"സിസ്റ്റം ആപ്സ് കാണിക്കുക"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"മാറ്റാനാവില്ല"</string> - <string name="generic_enabled" msgid="5221039415230005888">"പ്രവർത്തനക്ഷമമാക്കി"</string> - <string name="generic_disabled" msgid="576339310027394867">"പ്രവർത്തനരഹിതമാക്കി"</string> + <string name="generic_yes" msgid="3394094077553763689">"അതെ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"റദ്ദാക്കുക"</string> </resources> diff --git a/res/values-mn-rMN-watch/strings.xml b/res/values-mn-rMN-watch/strings.xml index 38c8c9a2..946cd297 100644 --- a/res/values-mn-rMN-watch/strings.xml +++ b/res/values-mn-rMN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Системийн апп-ыг харуулах"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Өөрчлөх боломжгүй"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ИДЭВХЖҮҮЛСЭН"</string> - <string name="generic_disabled" msgid="576339310027394867">"ИДЭВХГҮЙ БОЛГОСОН"</string> + <string name="generic_yes" msgid="3394094077553763689">"Тийм"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Цуцлах"</string> </resources> diff --git a/res/values-mr-rIN-watch/strings.xml b/res/values-mr-rIN-watch/strings.xml index 55b6dd33..09ed3bf0 100644 --- a/res/values-mr-rIN-watch/strings.xml +++ b/res/values-mr-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"सिस्टीम अॅप्स दर्शवा"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"बदलू शकत नाही"</string> - <string name="generic_enabled" msgid="5221039415230005888">"सक्षम केले"</string> - <string name="generic_disabled" msgid="576339310027394867">"अक्षम केले"</string> + <string name="generic_yes" msgid="3394094077553763689">"होय"</string> + <string name="generic_cancel" msgid="6384078447202012984">"रद्द करा"</string> </resources> diff --git a/res/values-ms-rMY-watch/strings.xml b/res/values-ms-rMY-watch/strings.xml index b69b711d..dad185fa 100644 --- a/res/values-ms-rMY-watch/strings.xml +++ b/res/values-ms-rMY-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Tunjukkan apl sistem"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Tidak dpt diubah"</string> - <string name="generic_enabled" msgid="5221039415230005888">"DIDAYAKAN"</string> - <string name="generic_disabled" msgid="576339310027394867">"DILUMPUHKAN"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ya"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Batal"</string> </resources> diff --git a/res/values-my-rMM-watch/strings.xml b/res/values-my-rMM-watch/strings.xml index 1babba21..21283c03 100644 --- a/res/values-my-rMM-watch/strings.xml +++ b/res/values-my-rMM-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"စနစ်အပ်ဖ်များ ပြသရန်"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ပြောင်းလဲ မရနိုင်ပါ"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ဖွင့်ထား"</string> - <string name="generic_disabled" msgid="576339310027394867">"ပိတ်ထား"</string> + <string name="generic_yes" msgid="3394094077553763689">"Yes"</string> + <string name="generic_cancel" msgid="6384078447202012984">"မလုပ်တော့"</string> </resources> diff --git a/res/values-nb-watch/strings.xml b/res/values-nb-watch/strings.xml index d2c99f3f..332a8fe3 100644 --- a/res/values-nb-watch/strings.xml +++ b/res/values-nb-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Vis systemapper"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan ikke endres"</string> - <string name="generic_enabled" msgid="5221039415230005888">"SLÅTT PÅ"</string> - <string name="generic_disabled" msgid="576339310027394867">"SLÅTT AV"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string> </resources> diff --git a/res/values-ne-rNP-watch/strings.xml b/res/values-ne-rNP-watch/strings.xml index 89e48dd4..ffcc2f7f 100644 --- a/res/values-ne-rNP-watch/strings.xml +++ b/res/values-ne-rNP-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"प्रणाली अनुप्रयोगहरू देखाउनुहोस्"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"परिवर्तन गर्न सकिँदैन"</string> - <string name="generic_enabled" msgid="5221039415230005888">"सक्षम गरियो"</string> - <string name="generic_disabled" msgid="576339310027394867">"असक्षम गरियो"</string> + <string name="generic_yes" msgid="3394094077553763689">"हो"</string> + <string name="generic_cancel" msgid="6384078447202012984">"रद्द गर्नुहोस्"</string> </resources> diff --git a/res/values-nl-watch/strings.xml b/res/values-nl-watch/strings.xml index 820875e3..2ed09952 100644 --- a/res/values-nl-watch/strings.xml +++ b/res/values-nl-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Systeem-apps weergeven"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Niet aanpasbaar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"INGESCHAKELD"</string> - <string name="generic_disabled" msgid="576339310027394867">"UITGESCHAKELD"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Annuleren"</string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 069f97ec..c58c4e7b 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -25,12 +25,12 @@ <string name="unknown" msgid="4742479012767208045">"Onbekend"</string> <string name="installing" msgid="8613631001631998372">"Installeren..."</string> <string name="install_done" msgid="3682715442154357097">"App geïnstalleerd."</string> - <string name="install_confirm_question" msgid="7295206719219043890">"Wilt u deze app installeren? Deze krijgt toegang tot:"</string> - <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wilt u deze app installeren? Hiervoor is geen speciale toegang vereist."</string> - <string name="install_confirm_question_update" msgid="4624159567361487964">"Wilt u een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string> - <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wilt u een update van deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string> - <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wilt u een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string> - <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wilt u een update voor deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string> + <string name="install_confirm_question" msgid="7295206719219043890">"Wil je deze app installeren? Deze krijgt toegang tot:"</string> + <string name="install_confirm_question_no_perms" msgid="5918305641302873520">"Wil je deze app installeren? Hiervoor is geen speciale toegang vereist."</string> + <string name="install_confirm_question_update" msgid="4624159567361487964">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string> + <string name="install_confirm_question_update_system" msgid="1302330093676416336">"Wil je een update van deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. De bijgewerkte app krijgt toegang tot:"</string> + <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"Wil je een update voor deze bestaande app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string> + <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"Wil je een update voor deze ingebouwde app installeren? Je huidige gegevens gaan niet verloren. Hiervoor is geen speciale toegang vereist."</string> <string name="install_failed" msgid="6579998651498970899">"App niet geïnstalleerd."</string> <string name="install_failed_blocked" msgid="1606870930588770025">"De installatie van het pakket is geblokkeerd."</string> <string name="install_failed_conflict" msgid="5349055145440204106">"Het pakket conflicteert met een bestaand pakket met dezelfde naam."</string> @@ -60,9 +60,9 @@ <string name="uninstall_application_title" msgid="1860074100811653963">"App verwijderen"</string> <string name="uninstall_update_title" msgid="4146940097553335390">"Update verwijderen"</string> <string name="uninstall_activity_text" msgid="6680688689803932550">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> maakt deel uit van de volgende app:"</string> - <string name="uninstall_application_text" msgid="6691975835951187030">"Wilt u deze app verwijderen?"</string> - <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wilt u deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string> - <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wilt u deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string> + <string name="uninstall_application_text" msgid="6691975835951187030">"Wil je deze app verwijderen?"</string> + <string name="uninstall_application_text_all_users" msgid="5574704453233525222">"Wil je deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string> + <string name="uninstall_application_text_user" msgid="8766882355635485733">"Wil je deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string> <string name="uninstall_update_text" msgid="1394549691152728409">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd."</string> <string name="uninstall_update_text_multiuser" msgid="2083665452990861991">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd. Dit geldt voor alle gebruikers van het apparaat, dus ook voor gebruikers met een werkprofiel."</string> <string name="uninstalling" msgid="5556217435895938250">"Verwijderen..."</string> @@ -82,7 +82,7 @@ <string name="privacyPerms" msgid="1850527049572617">"Privacy"</string> <string name="devicePerms" msgid="6733560207731294504">"Apparaattoegang"</string> <string name="no_new_perms" msgid="6657813692169565975">"Voor deze update zijn geen nieuwe machtigingen vereist."</string> - <string name="grant_confirm_question" msgid="4690289297029223742">"Wilt u de volgende machtigingen verlenen? Hiermee kan toegang worden verkregen tot:"</string> + <string name="grant_confirm_question" msgid="4690289297029223742">"Wil je de volgende machtigingen verlenen? Hiermee kan toegang worden verkregen tot:"</string> <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Weigeren"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Toch weigeren"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> van <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> diff --git a/res/values-round/dimens.xml b/res/values-notround-watch/dimens.xml index bed41ce0..55d62488 100644 --- a/res/values-round/dimens.xml +++ b/res/values-notround-watch/dimens.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project +<!-- Copyright (C) 2016 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,14 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> - <resources> - <!-- Dimensions for the Grant permissions Confirmation Dialog --> - <dimen name="conf_diag_button_container_height">96dp</dimen> - <dimen name="conf_diag_2button_margin_side">32dp</dimen> - <dimen name="conf_diag_2button_margin_top">10dp</dimen> - <!-- On round screens, the message can't be too close to the top or the corners will be - clipped. --> - <dimen name="conf_diag_min_space_above_message">26dp</dimen> - + <!-- Dimens for dialog layouts --> + <dimen name="diag_button_size">44dp</dimen> + <dimen name="diag_preferred_padding">8dp</dimen> + <dimen name="diag_button_padding_horizontal">16dp</dimen> + <dimen name="diag_button_padding_bottom">8dp</dimen> + <dimen name="diag_icon_margin_top">8dp</dimen> </resources> diff --git a/res/values-pa-rIN-watch/strings.xml b/res/values-pa-rIN-watch/strings.xml index d6cfe6c8..e0930212 100644 --- a/res/values-pa-rIN-watch/strings.xml +++ b/res/values-pa-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"ਸਿਸਟਮ ਐਪਸ ਦਿਖਾਓ"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ਸਮਰਥਿਤ ਕੀਤਾ ਗਿਆ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ਅਸਮਰਥਿਤ ਕੀਤਾ ਗਿਆ"</string> + <string name="generic_yes" msgid="3394094077553763689">"ਹਾਂ"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ਰੱਦ ਕਰੋ"</string> </resources> diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml index 7799286f..b7132ad3 100644 --- a/res/values-pa-rIN/strings.xml +++ b/res/values-pa-rIN/strings.xml @@ -115,7 +115,7 @@ <string name="screen_overlay_title" msgid="3021729846864038529">"ਸਕਰੀਨ ਓਵਰਲੇਅ ਲੱਭ ਗਿਆ"</string> <string name="screen_overlay_message" msgid="2141944461571677331">"ਇਸ ਇਜ਼ਾਜਤ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ; ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਸੈਟਿੰਗਜ਼ ਅਤੇ ਐਪਸ ਤੋਂ ਸਕ੍ਰੀਨ ਓਵਰਲੇਅ ਬੰਦ ਕਰਨਾ ਪਵੇਗਾ"</string> <string name="screen_overlay_button" msgid="4344544843349937743">"ਸੈਟਿੰਗਜ਼ ਖੋਲ੍ਹੋ"</string> - <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android ਵੀਅਰ"</string> + <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string> <string name="wear_not_allowed_dlg_text" msgid="1322352525843583064">"ਵੀਅਰ \'ਤੇ ਸਥਾਪਤ/ਅਣਸਥਾਪਤ ਕਾਰਵਾਈਆਂ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string> <string name="permission_review_warning_title_template_update" msgid="2569412700408535872">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਚੁੱਕਿਆ ਹੈ। ਕੀ <xliff:g id="APP_NAME_1">%1$s</xliff:g> ਨੂੰ ਅੱਗੇ ਦਿੱਤਿਆਂ ਗਿਆ \'ਤੇ ਪਹੁੰਚ ਦੀ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਹੈ?"</string> <string name="permission_review_title_template_install" msgid="6535540493936469336">"ਇਹ ਚੁਣੋ ਕਿ <xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਕਿਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਹੈ"</string> diff --git a/res/values-pl-watch/strings.xml b/res/values-pl-watch/strings.xml index 2bf7d356..95c36875 100644 --- a/res/values-pl-watch/strings.xml +++ b/res/values-pl-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Pokaż aplikacje systemowe"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nie można zmienić"</string> - <string name="generic_enabled" msgid="5221039415230005888">"WŁ."</string> - <string name="generic_disabled" msgid="576339310027394867">"WYŁĄCZONE"</string> + <string name="generic_yes" msgid="3394094077553763689">"Tak"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Anuluj"</string> </resources> diff --git a/res/values-pt-rBR-watch/strings.xml b/res/values-pt-rBR-watch/strings.xml index cb228f9d..8742c2db 100644 --- a/res/values-pt-rBR-watch/strings.xml +++ b/res/values-pt-rBR-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar apps do sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ATIVADA"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESATIVADA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sim"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-pt-rPT-watch/strings.xml b/res/values-pt-rPT-watch/strings.xml index e8d1bda4..e3c9e9f3 100644 --- a/res/values-pt-rPT-watch/strings.xml +++ b/res/values-pt-rPT-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar aplicações do sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Não pode ser alterado"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ATIVADO"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESATIVADO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sim"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-pt-watch/strings.xml b/res/values-pt-watch/strings.xml index cb228f9d..8742c2db 100644 --- a/res/values-pt-watch/strings.xml +++ b/res/values-pt-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Mostrar apps do sistema"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Impossível alterar"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ATIVADA"</string> - <string name="generic_disabled" msgid="576339310027394867">"DESATIVADA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Sim"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Cancelar"</string> </resources> diff --git a/res/values-ro-watch/strings.xml b/res/values-ro-watch/strings.xml index 5ff2575b..ea699f32 100644 --- a/res/values-ro-watch/strings.xml +++ b/res/values-ro-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Afișează aplicațiile de sistem"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nu se poate modifica"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ACTIVATĂ"</string> - <string name="generic_disabled" msgid="576339310027394867">"DEZACTIVATĂ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Da"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Anulați"</string> </resources> diff --git a/res/values-round-watch/dimens.xml b/res/values-round-watch/dimens.xml new file mode 100644 index 00000000..fa364644 --- /dev/null +++ b/res/values-round-watch/dimens.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <!-- Dimens for dialog layouts --> + <dimen name="diag_button_size">48dp</dimen> + <dimen name="diag_preferred_padding">@dimen/screen_percentage_15</dimen> + <dimen name="diag_button_padding_horizontal">@dimen/screen_percentage_15</dimen> + <dimen name="diag_button_padding_bottom">@dimen/screen_percentage_12</dimen> + <dimen name="diag_icon_margin_top">@dimen/screen_percentage_10</dimen> +</resources> diff --git a/res/values-ru-watch/strings.xml b/res/values-ru-watch/strings.xml index 309dc244..f58db32d 100644 --- a/res/values-ru-watch/strings.xml +++ b/res/values-ru-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Показать системные приложения"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Нельзя изменить"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ВКЛЮЧЕНО"</string> - <string name="generic_disabled" msgid="576339310027394867">"ОТКЛЮЧЕНО"</string> + <string name="generic_yes" msgid="3394094077553763689">"Да"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Отмена"</string> </resources> diff --git a/res/values-si-rLK-watch/strings.xml b/res/values-si-rLK-watch/strings.xml index b2559567..c5d9ae41 100644 --- a/res/values-si-rLK-watch/strings.xml +++ b/res/values-si-rLK-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"පද්ධති යෙදුම් පෙන්වන්න"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"වෙනස් කළ නොහැකිය"</string> - <string name="generic_enabled" msgid="5221039415230005888">"සබලයි"</string> - <string name="generic_disabled" msgid="576339310027394867">"අබලයි"</string> + <string name="generic_yes" msgid="3394094077553763689">"ඔව්"</string> + <string name="generic_cancel" msgid="6384078447202012984">"අවලංගු කර."</string> </resources> diff --git a/res/values-sk-watch/strings.xml b/res/values-sk-watch/strings.xml index 9b17f9ba..dc3ce4fa 100644 --- a/res/values-sk-watch/strings.xml +++ b/res/values-sk-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Zobraziť systémové aplikácie"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nedá sa zmeniť"</string> - <string name="generic_enabled" msgid="5221039415230005888">"POVOLENÉ"</string> - <string name="generic_disabled" msgid="576339310027394867">"ZAKÁZANÉ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Áno"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Zrušiť"</string> </resources> diff --git a/res/values-sl-watch/strings.xml b/res/values-sl-watch/strings.xml index cd71f48c..906a5519 100644 --- a/res/values-sl-watch/strings.xml +++ b/res/values-sl-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Prikaz sistemskih aplikacij"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ni mogoče sprem."</string> - <string name="generic_enabled" msgid="5221039415230005888">"OMOGOČENO"</string> - <string name="generic_disabled" msgid="576339310027394867">"ONEMOGOČENO"</string> + <string name="generic_yes" msgid="3394094077553763689">"Da"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Prekliči"</string> </resources> diff --git a/res/values-sq-rAL-watch/strings.xml b/res/values-sq-rAL-watch/strings.xml index 213ce5a4..772bb7aa 100644 --- a/res/values-sq-rAL-watch/strings.xml +++ b/res/values-sq-rAL-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Shfaq aplikacionet e sistemit"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Nuk mund të ndryshohet"</string> - <string name="generic_enabled" msgid="5221039415230005888">"AKTIVIZUAR"</string> - <string name="generic_disabled" msgid="576339310027394867">"ÇAKTIVIZUAR"</string> + <string name="generic_yes" msgid="3394094077553763689">"Po"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Anulo"</string> </resources> diff --git a/res/values-sr-watch/strings.xml b/res/values-sr-watch/strings.xml index e51b35a4..7e15b013 100644 --- a/res/values-sr-watch/strings.xml +++ b/res/values-sr-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Прикажи системске апликације"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не може да се промени"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ОМОГУЋЕНО"</string> - <string name="generic_disabled" msgid="576339310027394867">"ОНЕМОГУЋЕНО"</string> + <string name="generic_yes" msgid="3394094077553763689">"Да"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Откажи"</string> </resources> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 895b4172..5c7c5fab 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -86,7 +86,7 @@ <string name="grant_dialog_button_deny" msgid="2176510645406614340">"Одбаци"</string> <string name="grant_dialog_button_deny_anyway" msgid="847960499284125250">"Ипак одбиј"</string> <string name="current_permission_template" msgid="6378304249516652817">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. од <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> - <string name="permission_warning_template" msgid="7332275268559121742">"Желите ли да дозволите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> обави следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string> + <string name="permission_warning_template" msgid="7332275268559121742">"Желите ли да дозволите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> <xliff:g id="ACTION">%2$s</xliff:g>?"</string> <string name="grant_dialog_button_allow" msgid="4616529495342337095">"Дозволи"</string> <string name="app_permissions_breadcrumb" msgid="3390836200791539264">"Апликације"</string> <string name="app_permissions" msgid="3146758905824597178">"Дозволе за апликације"</string> diff --git a/res/values-sv-watch/strings.xml b/res/values-sv-watch/strings.xml index 66465f4d..f20ec21b 100644 --- a/res/values-sv-watch/strings.xml +++ b/res/values-sv-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Visa systemappar"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Kan inte ändras"</string> - <string name="generic_enabled" msgid="5221039415230005888">"AKTIVERAD"</string> - <string name="generic_disabled" msgid="576339310027394867">"INAKTIVERAD"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ja"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Avbryt"</string> </resources> diff --git a/res/values-sw-watch/strings.xml b/res/values-sw-watch/strings.xml index b4adaca4..accac4ed 100644 --- a/res/values-sw-watch/strings.xml +++ b/res/values-sw-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Onyesha programu za mfumo"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Haiwezi kubadilishwa"</string> - <string name="generic_enabled" msgid="5221039415230005888">"IMEWASHWA"</string> - <string name="generic_disabled" msgid="576339310027394867">"IMEZIMWA"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ndiyo"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Ghairi"</string> </resources> diff --git a/res/layout-watch/settings.xml b/res/values-sw180dp-notround-watch/dimens.xml index 46249d50..84072a28 100644 --- a/res/layout-watch/settings.xml +++ b/res/values-sw180dp-notround-watch/dimens.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project +<!-- Copyright (C) 2016 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,9 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. --> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/container" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <include layout="@layout/settings_internal" /> -</FrameLayout> +<resources> + <!-- Dimens for dialog layouts --> + <dimen name="diag_button_size">48dp</dimen> +</resources> diff --git a/res/values-sw210dp-round-watch/dimens.xml b/res/values-sw210dp-round-watch/dimens.xml new file mode 100644 index 00000000..d896138b --- /dev/null +++ b/res/values-sw210dp-round-watch/dimens.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <!-- Dimens for dialog layouts --> + <dimen name="diag_button_size">54dp</dimen> +</resources> diff --git a/res/values-ta-rIN-watch/strings.xml b/res/values-ta-rIN-watch/strings.xml index 54c61e7c..23dab29d 100644 --- a/res/values-ta-rIN-watch/strings.xml +++ b/res/values-ta-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"முறைமைப் பயன்பாடுகளைக் காட்டு"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"மாற்ற முடியாது"</string> - <string name="generic_enabled" msgid="5221039415230005888">"இயக்கப்பட்டது"</string> - <string name="generic_disabled" msgid="576339310027394867">"முடக்கப்பட்டது"</string> + <string name="generic_yes" msgid="3394094077553763689">"ஆம்"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ரத்துசெய்"</string> </resources> diff --git a/res/values-te-rIN-watch/strings.xml b/res/values-te-rIN-watch/strings.xml index e13ba44e..d97e9707 100644 --- a/res/values-te-rIN-watch/strings.xml +++ b/res/values-te-rIN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"సిస్టమ్ అనువర్తనాలను చూపు"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"మార్చడం సాధ్యపడదు"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ప్రారంభించబడింది"</string> - <string name="generic_disabled" msgid="576339310027394867">"నిలిపివేయబడింది"</string> + <string name="generic_yes" msgid="3394094077553763689">"అవును"</string> + <string name="generic_cancel" msgid="6384078447202012984">"రద్దు చేయి"</string> </resources> diff --git a/res/values-th-watch/strings.xml b/res/values-th-watch/strings.xml index ba86f12c..05af1e84 100644 --- a/res/values-th-watch/strings.xml +++ b/res/values-th-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"แสดงแอประบบ"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ไม่สามารถเปลี่ยน"</string> - <string name="generic_enabled" msgid="5221039415230005888">"เปิดใช้อยู่"</string> - <string name="generic_disabled" msgid="576339310027394867">"ปิดใช้อยู่"</string> + <string name="generic_yes" msgid="3394094077553763689">"ใช่"</string> + <string name="generic_cancel" msgid="6384078447202012984">"ยกเลิก"</string> </resources> diff --git a/res/values-tl-watch/strings.xml b/res/values-tl-watch/strings.xml index 8885a84f..85974514 100644 --- a/res/values-tl-watch/strings.xml +++ b/res/values-tl-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Ipakita ang mga app ng system"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Hindi mababago"</string> - <string name="generic_enabled" msgid="5221039415230005888">"NAKA-ENABLE"</string> - <string name="generic_disabled" msgid="576339310027394867">"NAKA-DISABLE"</string> + <string name="generic_yes" msgid="3394094077553763689">"Oo"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Kanselahin"</string> </resources> diff --git a/res/values-tr-watch/strings.xml b/res/values-tr-watch/strings.xml index c7eddced..fbc5b930 100644 --- a/res/values-tr-watch/strings.xml +++ b/res/values-tr-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Sistem uygulamalarını göster"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Değiştirilemez"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ETKİN"</string> - <string name="generic_disabled" msgid="576339310027394867">"DEVRE DIŞI"</string> + <string name="generic_yes" msgid="3394094077553763689">"Evet"</string> + <string name="generic_cancel" msgid="6384078447202012984">"İptal"</string> </resources> diff --git a/res/values-uk-watch/strings.xml b/res/values-uk-watch/strings.xml index aac71cbe..e539d836 100644 --- a/res/values-uk-watch/strings.xml +++ b/res/values-uk-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> з <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Показати системні додатки"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Не можна змінити"</string> - <string name="generic_enabled" msgid="5221039415230005888">"УВІМКНЕНО"</string> - <string name="generic_disabled" msgid="576339310027394867">"ВИМКНЕНО"</string> + <string name="generic_yes" msgid="3394094077553763689">"Так"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Скасувати"</string> </resources> diff --git a/res/values-ur-rPK-watch/strings.xml b/res/values-ur-rPK-watch/strings.xml index f3746d50..197ac849 100644 --- a/res/values-ur-rPK-watch/strings.xml +++ b/res/values-ur-rPK-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"سسٹم ایپس دکھائیں"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"ناقابل تبدیل"</string> - <string name="generic_enabled" msgid="5221039415230005888">"فعال"</string> - <string name="generic_disabled" msgid="576339310027394867">"غیر فعال"</string> + <string name="generic_yes" msgid="3394094077553763689">"ہاں"</string> + <string name="generic_cancel" msgid="6384078447202012984">"منسوخ کریں"</string> </resources> diff --git a/res/values-uz-rUZ-watch/strings.xml b/res/values-uz-rUZ-watch/strings.xml index dca320a9..83f8da7f 100644 --- a/res/values-uz-rUZ-watch/strings.xml +++ b/res/values-uz-rUZ-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Tizim ilovalarini ko‘rsatish"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"O‘zgartirilmaydi"</string> - <string name="generic_enabled" msgid="5221039415230005888">"YONIQ"</string> - <string name="generic_disabled" msgid="576339310027394867">"O‘CHIQ"</string> + <string name="generic_yes" msgid="3394094077553763689">"Ha"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Bekor qilish"</string> </resources> diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml index 081a3d35..75a08eea 100644 --- a/res/values-uz-rUZ/strings.xml +++ b/res/values-uz-rUZ/strings.xml @@ -112,7 +112,7 @@ <string name="all_permissions" msgid="5156669007784613042">"Barcha ruxsatnomalar"</string> <string name="other_permissions" msgid="2016192512386091933">"Ilovaning boshqa imkoniyatlari"</string> <string name="permission_request_title" msgid="1204446718549121199">"Ruxsatnoma so‘rovi"</string> - <string name="screen_overlay_title" msgid="3021729846864038529">"Ekran ustidan ochiladigan ilova aniqlandi"</string> + <string name="screen_overlay_title" msgid="3021729846864038529">"Boshqa oynalar ustidan ochiladigan ilova aniqlandi"</string> <string name="screen_overlay_message" msgid="2141944461571677331">"Bu ruxsatnoma parametrini o‘zgartirish uchun avval Sozlamalar > Ilovalar bo‘limidan ekran ustidan ochilish funksiyasini o‘chirib qo‘ying"</string> <string name="screen_overlay_button" msgid="4344544843349937743">"Sozlamalarni ochish"</string> <string name="wear_not_allowed_dlg_title" msgid="8104666773577525713">"Android Wear"</string> diff --git a/res/values-vi-watch/strings.xml b/res/values-vi-watch/strings.xml index c342949e..d63ef286 100644 --- a/res/values-vi-watch/strings.xml +++ b/res/values-vi-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Hiển thị ứng dụng hệ thống"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Ko thể thay đổi"</string> - <string name="generic_enabled" msgid="5221039415230005888">"ĐÃ BẬT"</string> - <string name="generic_disabled" msgid="576339310027394867">"ĐÃ TẮT"</string> + <string name="generic_yes" msgid="3394094077553763689">"Có"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Hủy"</string> </resources> diff --git a/res/values-w192dp-watch/dimens_percent.xml b/res/values-w192dp-watch/dimens_percent.xml new file mode 100644 index 00000000..b5beca32 --- /dev/null +++ b/res/values-w192dp-watch/dimens_percent.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <dimen name="screen_percentage_05">9.6dp</dimen> + <dimen name="screen_percentage_10">19.2dp</dimen> + <dimen name="screen_percentage_12">23.04dp</dimen> + <dimen name="screen_percentage_15">28.8dp</dimen> +</resources> diff --git a/res/values-w205dp-watch/dimens_percent.xml b/res/values-w205dp-watch/dimens_percent.xml new file mode 100644 index 00000000..302d23ec --- /dev/null +++ b/res/values-w205dp-watch/dimens_percent.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <dimen name="screen_percentage_05">10.25dp</dimen> + <dimen name="screen_percentage_10">20.5dp</dimen> + <dimen name="screen_percentage_12">24.6dp</dimen> + <dimen name="screen_percentage_15">30.75dp</dimen> +</resources> diff --git a/res/values-w225dp-watch/dimens_percent.xml b/res/values-w225dp-watch/dimens_percent.xml new file mode 100644 index 00000000..937c5d00 --- /dev/null +++ b/res/values-w225dp-watch/dimens_percent.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <dimen name="screen_percentage_05">11.25dp</dimen> + <dimen name="screen_percentage_10">22.5dp</dimen> + <dimen name="screen_percentage_12">27dp</dimen> + <dimen name="screen_percentage_15">33.75dp</dimen> +</resources> diff --git a/res/values-w228dp-watch/dimens_percent.xml b/res/values-w228dp-watch/dimens_percent.xml new file mode 100644 index 00000000..b2ad3343 --- /dev/null +++ b/res/values-w228dp-watch/dimens_percent.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <dimen name="screen_percentage_05">11.4dp</dimen> + <dimen name="screen_percentage_10">22.8dp</dimen> + <dimen name="screen_percentage_12">27.36dp</dimen> + <dimen name="screen_percentage_15">34.2dp</dimen> +</resources> diff --git a/res/values-w240dp-watch/dimens_percent.xml b/res/values-w240dp-watch/dimens_percent.xml new file mode 100644 index 00000000..ebc8c752 --- /dev/null +++ b/res/values-w240dp-watch/dimens_percent.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<resources> + <dimen name="screen_percentage_05">12dp</dimen> + <dimen name="screen_percentage_10">24dp</dimen> + <dimen name="screen_percentage_12">28.8dp</dimen> + <dimen name="screen_percentage_15">36dp</dimen> +</resources> diff --git a/res/values-watch/colors.xml b/res/values-watch/colors.xml index b81d6e3b..81d0459c 100644 --- a/res/values-watch/colors.xml +++ b/res/values-watch/colors.xml @@ -15,22 +15,6 @@ --> <resources> - <color name="grant_permissions_app_color">@color/grant_permissions_white_text_alpha_100</color> - <color name="grant_permissions_progress_color">@color/grant_permissions_white_text_alpha_100</color> - <color name="grant_permissions_title_color">@color/grant_permissions_white_text_alpha_70</color> - - <color name="grant_permissions_white_text_alpha_100">@color/off_white</color> - <color name="grant_permissions_white_text_alpha_70">#b2eeeeee</color> - - <color name="permissions_settings_item_color">#FFFFFFFF</color> - - <color name="off_white">#ffeeeeee</color> - - <color name="primary_text_light">#424242</color> - <!-- Copied from wearable support --> <color name="circular_button_disabled">#757575</color> - - <!-- Copied from wearable Clockwork Settings --> - <color name="cw_dark_gray">#424242</color> </resources> diff --git a/res/values-watch/dimens.xml b/res/values-watch/dimens.xml deleted file mode 100644 index 96f32148..00000000 --- a/res/values-watch/dimens.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project - - 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. ---> - -<resources> - <dimen name="grant_permissions_app_icon_size">20dp</dimen> - <dimen name="grant_permissions_app_icon_margin_top">6dp</dimen> - - <dimen name="grant_permissions_app_breadcrumb_margin_top">6dp</dimen> - <dimen name="grant_permissions_title_margin_top">6dp</dimen> - <dimen name="grant_permissions_message_side_padding">32dp</dimen> - - <dimen name="action_dialog_z">16dp</dimen> - - <!-- Dimensions for the Grant permissions Confirmation Dialog --> - <dimen name="conf_diag_floating_height">16dp</dimen> - <dimen name="conf_diag_button_container_top_margin">6dp</dimen> - <dimen name="conf_diag_button_container_height">72dp</dimen> - <dimen name="conf_diag_2button_margin_side">16dp</dimen> - <dimen name="conf_diag_2button_margin_top">9dp</dimen> - <dimen name="conf_diag_3button_padding_side">32dp</dimen> - <dimen name="conf_diag_3button_padding_bottom">22dp</dimen> - <dimen name="conf_diag_content_padding_top">6dp</dimen> - <!-- On square screens, the message can be at the top of the screen. --> - <dimen name="conf_diag_min_space_above_message">0dp</dimen> - - - <!-- START: Ported values --> - <item name="default_settings_circle_radius_percent" format="fraction" type="dimen">40%</item> - <item name="selected_settings_circle_radius_percent" format="fraction" type="dimen">50%</item> - <dimen name="round_content_padding_left">40dp</dimen> - <dimen name="round_content_padding_right">24dp</dimen> - <dimen name="content_padding_left">12dp</dimen> - <dimen name="settings_wearable_list_view_vertical_padding_round">14dp</dimen> - <dimen name="setting_header_extra_line_height">16dp</dimen> - <dimen name="setting_long_header_text_size">20dp</dimen> - <dimen name="settings_header_base_height">50dp</dimen> - <dimen name="settings_header_top_margin">14dp</dimen> - <dimen name="settings_header_top_margin_circular">18dp</dimen> - <dimen name="settings_header_top_margin_multiline">6dp</dimen> - <dimen name="settings_header_top_margin_circular_multiline">16dp</dimen> - <dimen name="setting_short_header_text_size">24dp</dimen> - <dimen name="settings_text_margin_left">10dp</dimen> - <!-- END: Ported values --> -</resources> diff --git a/res/values-watch/strings.xml b/res/values-watch/strings.xml index 82fe4ae9..f940eae6 100644 --- a/res/values-watch/strings.xml +++ b/res/values-watch/strings.xml @@ -30,8 +30,9 @@ <!-- Summary of a permission switch when it's enforced by policy [CHAR LIMIT=17] --> <string name="permission_summary_enforced_by_policy">Can\'t be changed</string> - <!-- Generic text to indicate that a setting is enabled. Should be in all caps. [CHAR LIMIT=40] --> - <string name="generic_enabled">ENABLED</string> - <!-- Generic text to indicate that a setting is disabled. Should be in all caps. [CHAR LIMIT=40] --> - <string name="generic_disabled">DISABLED</string> + <!-- Generic text to indicate a yes. [CHAR LIMIT=10] --> + <string name="generic_yes">Yes</string> + + <!-- Generic text to indicate Cancel. [CHAR LIMIT=10] --> + <string name="generic_cancel">Cancel</string> </resources> diff --git a/res/values-watch/styles.xml b/res/values-watch/styles.xml index 01ab90eb..18fce93e 100644 --- a/res/values-watch/styles.xml +++ b/res/values-watch/styles.xml @@ -17,33 +17,6 @@ <resources> <style name="Theme.DialogWhenLarge" parent="@android:style/Theme.DeviceDefault.NoActionBar"/> - <!-- START: Ported values --> - <style name="TextAppearance.Wearable.Small" parent="android:TextAppearance.Medium"> - <item name="android:textSize">16sp</item> - <item name="android:textColor">@color/primary_text_light</item> - </style> - - <style name="TextView.Small" parent="@android:style/Widget.Holo.Light"> - <item name="android:fontFamily">sans-serif-condensed</item> - <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item> - </style> - - <style name="TextView.Small.Light"> - <item name="android:fontFamily">sans-serif-condensed-light</item> - <item name="android:textAppearance">@style/TextAppearance.Wearable.Small</item> - </style> - - <style name="TextAppearance.Settings.Label" parent="android:TextAppearance.Medium"> - <item name="android:textSize">14sp</item> - <item name="android:textColor">#FFFFFFFF</item> - </style> - - <style name="TextAppearance.Settings.Label.Large"> - <item name="android:textSize">16sp</item> - </style> - - <style name="TextView.Settings.Label" parent="TextView.Small.Light"> - <item name="android:textAppearance">@style/TextAppearance.Settings.Label</item> - </style> - <!-- END: Ported values --> + <style name="BreadcrumbText" parent="@android:style/TextAppearance.Material.Body2"/> + <style name="TitleText" parent="@android:style/TextAppearance.Material.Subhead"/> </resources> diff --git a/res/values-watch/themes.xml b/res/values-watch/themes.xml index dea42907..a8186dd9 100644 --- a/res/values-watch/themes.xml +++ b/res/values-watch/themes.xml @@ -16,49 +16,9 @@ --> <resources> - <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar"> - <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Permissions</item> - <item name="android:windowBackground">@color/cw_dark_gray</item> - <item name="android:colorBackground">@color/cw_dark_gray</item> - </style> - - <style name="GrantPermissions" parent="Settings"> - <item name="android:windowIsFloating">true</item> - <item name="android:windowElevation">@dimen/action_dialog_z</item> - <item name="android:windowSwipeToDismiss">false</item> - </style> - - <style name="GrantPermissions.BreadcrumbText"> - <item name="android:fontFamily">sans-serif-condensed</item> - <item name="android:textSize">16sp</item> - <item name="android:textColor">@color/grant_permissions_progress_color</item> - </style> + <style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar" /> - <style name="GrantPermissions.TitleText"> - <item name="android:fontFamily">sans-serif-condensed-light</item> - <item name="android:textSize">18sp</item> - <item name="android:textColor">@color/grant_permissions_title_color</item> - <item name="android:lineSpacingMultiplier">1.221</item> - </style> - - <!-- Copied from WearableSupport lib --> - <style name="TextAppearance.WearDiag" parent="android:TextAppearance.Medium"> - <item name="android:textColor">#FFFFFF</item> - <item name="android:textSize">16sp</item> - </style> - <style name="TextAppearance.WearDiag.Button"> - <item name="android:textSize">16sp</item> - </style> - <style name="Widget.WearDiag.Button" parent="@android:style/Widget.DeviceDefault.Button"> - <item name="android:fontFamily">sans-serif-condensed-light</item> - <item name="android:gravity">center_vertical|left</item> - <item name="android:textAppearance">@style/TextAppearance.WearDiag.Button</item> - <item name="android:background">@android:color/transparent</item> - <item name="android:minLines">1</item> - <item name="android:maxLines">3</item> - <item name="android:ellipsize">marquee</item> - <item name="android:layout_height">60dp</item> - <item name="android:layout_width">wrap_content</item> - <item name="android:drawablePadding">12dp</item> + <style name="GrantPermissions" parent="@android:style/Theme.DeviceDefault.NoActionBar"> + <item name="android:windowBackground">@android:color/transparent</item> </style> </resources> diff --git a/res/values-zh-rCN-watch/strings.xml b/res/values-zh-rCN-watch/strings.xml index d6e64c34..25256194 100644 --- a/res/values-zh-rCN-watch/strings.xml +++ b/res/values-zh-rCN-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"显示系统应用"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"无法更改"</string> - <string name="generic_enabled" msgid="5221039415230005888">"已启用"</string> - <string name="generic_disabled" msgid="576339310027394867">"已停用"</string> + <string name="generic_yes" msgid="3394094077553763689">"是"</string> + <string name="generic_cancel" msgid="6384078447202012984">"取消"</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 82b8569d..f6aa8d35 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -32,8 +32,8 @@ <string name="install_confirm_question_update_no_perms" msgid="4885928136844618944">"是否要为这一现有应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string> <string name="install_confirm_question_update_system_no_perms" msgid="7676593512694724374">"是否要为这一内置应用安装更新?您现有的数据不会丢失,且安装过程无需任何特殊权限。"</string> <string name="install_failed" msgid="6579998651498970899">"应用未安装。"</string> - <string name="install_failed_blocked" msgid="1606870930588770025">"系统禁止安装该文件包。"</string> - <string name="install_failed_conflict" msgid="5349055145440204106">"该文件包与具有同一名称的现有文件包存在冲突。"</string> + <string name="install_failed_blocked" msgid="1606870930588770025">"系统禁止安装该软件包。"</string> + <string name="install_failed_conflict" msgid="5349055145440204106">"该软件包与具有同一名称的现有软件包存在冲突。"</string> <string name="install_failed_incompatible" product="tablet" msgid="119054044615117271">"此应用与您的平板电脑不兼容。"</string> <string name="install_failed_incompatible" product="tv" msgid="3553367270510072729">"此应用与您的电视不兼容。"</string> <string name="install_failed_incompatible" product="default" msgid="6677057915876853610">"此应用与您的手机不兼容。"</string> diff --git a/res/values-zh-rHK-watch/strings.xml b/res/values-zh-rHK-watch/strings.xml index 9c21b2ab..112cccdd 100644 --- a/res/values-zh-rHK-watch/strings.xml +++ b/res/values-zh-rHK-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"顯示系統應用程式"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"不可變更"</string> - <string name="generic_enabled" msgid="5221039415230005888">"已啟用"</string> - <string name="generic_disabled" msgid="576339310027394867">"已停用"</string> + <string name="generic_yes" msgid="3394094077553763689">"是"</string> + <string name="generic_cancel" msgid="6384078447202012984">"取消"</string> </resources> diff --git a/res/values-zh-rTW-watch/strings.xml b/res/values-zh-rTW-watch/strings.xml index 4c9245d1..edaf7ead 100644 --- a/res/values-zh-rTW-watch/strings.xml +++ b/res/values-zh-rTW-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"顯示系統應用程式"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"無法變更"</string> - <string name="generic_enabled" msgid="5221039415230005888">"已啟用"</string> - <string name="generic_disabled" msgid="576339310027394867">"已停用"</string> + <string name="generic_yes" msgid="3394094077553763689">"是"</string> + <string name="generic_cancel" msgid="6384078447202012984">"取消"</string> </resources> diff --git a/res/values-zu-watch/strings.xml b/res/values-zu-watch/strings.xml index 82f45df9..38fe1c8e 100644 --- a/res/values-zu-watch/strings.xml +++ b/res/values-zu-watch/strings.xml @@ -20,6 +20,6 @@ <string name="current_permission_template" msgid="6691830243038105737">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string> <string name="preference_show_system_apps" msgid="7042886929865431207">"Bonisa izinhlelo zokusebenza zesistimu"</string> <string name="permission_summary_enforced_by_policy" msgid="9002523259681588936">"Akukwazi ukushintshwa"</string> - <string name="generic_enabled" msgid="5221039415230005888">"KUNIKWE AMANDLA"</string> - <string name="generic_disabled" msgid="576339310027394867">"KUKHUTSHAZIWE"</string> + <string name="generic_yes" msgid="3394094077553763689">"Yebo"</string> + <string name="generic_cancel" msgid="6384078447202012984">"Khansela"</string> </resources> diff --git a/res/xml-watch/watch_permissions.xml b/res/xml-watch/watch_permissions.xml new file mode 100644 index 00000000..8ec8d196 --- /dev/null +++ b/res/xml-watch/watch_permissions.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 The Android Open Source Project + + 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. +--> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + android:title="@string/app_permissions" + android:orderingFromXml="true"> + <Preference + android:key="no_permissions" + android:title="@string/no_permissions" /> +</PreferenceScreen> diff --git a/src/android/support/wearable/view/AcceptDenyDialog.java b/src/android/support/wearable/view/AcceptDenyDialog.java new file mode 100644 index 00000000..8961ee71 --- /dev/null +++ b/src/android/support/wearable/view/AcceptDenyDialog.java @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * 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 + */ +package android.support.wearable.view; + +import android.annotation.TargetApi; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.support.annotation.StyleRes; +import android.view.View; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.Space; +import android.widget.TextView; + +import com.android.packageinstaller.R; + +/** + * A dialog to display a title, a message, and/or an icon with a positive and a negative button. + * + * <p>The buttons are hidden away unless there is a listener attached to the button. Since there's + * no click listener attached by default, the buttons are hidden be default. + */ +@TargetApi(Build.VERSION_CODES.LOLLIPOP) +public class AcceptDenyDialog extends Dialog { + /** Icon at the top of the dialog. */ + protected ImageView mIcon; + /** Title at the top of the dialog. */ + protected TextView mTitle; + /** Message content of the dialog. */ + protected TextView mMessage; + /** Panel containing the buttons. */ + protected View mButtonPanel; + /** Positive button in the button panel. */ + protected ImageButton mPositiveButton; + /** Negative button in the button panel. */ + protected ImageButton mNegativeButton; + /** + * Click listener for the positive button. Positive button should hide if this is <code>null + * </code>. + */ + protected DialogInterface.OnClickListener mPositiveButtonListener; + /** + * Click listener for the negative button. Negative button should hide if this is <code>null + * </code>. + */ + protected DialogInterface.OnClickListener mNegativeButtonListener; + /** Spacer between the positive and negative button. Hidden if one button is hidden. */ + protected View mSpacer; + + private final View.OnClickListener mButtonHandler = (v) -> { + if (v == mPositiveButton && mPositiveButtonListener != null) { + mPositiveButtonListener.onClick(this, DialogInterface.BUTTON_POSITIVE); + dismiss(); + } else if (v == mNegativeButton && mNegativeButtonListener != null) { + mNegativeButtonListener.onClick(this, DialogInterface.BUTTON_NEGATIVE); + dismiss(); + } + }; + + public AcceptDenyDialog(Context context) { + this(context, 0 /* use default context theme */); + } + + public AcceptDenyDialog(Context context, @StyleRes int themeResId) { + super(context, themeResId); + + setContentView(R.layout.accept_deny_dialog); + + mTitle = (TextView) findViewById(android.R.id.title); + mMessage = (TextView) findViewById(android.R.id.message); + mIcon = (ImageView) findViewById(android.R.id.icon); + mPositiveButton = (ImageButton) findViewById(android.R.id.button1); + mPositiveButton.setOnClickListener(mButtonHandler); + mNegativeButton = (ImageButton) findViewById(android.R.id.button2); + mNegativeButton.setOnClickListener(mButtonHandler); + mSpacer = (Space) findViewById(R.id.spacer); + mButtonPanel = findViewById(R.id.buttonPanel); + } + + public ImageButton getButton(int whichButton) { + switch (whichButton) { + case DialogInterface.BUTTON_POSITIVE: + return mPositiveButton; + case DialogInterface.BUTTON_NEGATIVE: + return mNegativeButton; + default: + return null; + } + } + + public void setIcon(Drawable icon) { + mIcon.setVisibility(icon == null ? View.GONE : View.VISIBLE); + mIcon.setImageDrawable(icon); + } + + /** + * @param resId the resourceId of the drawable to use as the icon or 0 if you don't want an icon. + */ + public void setIcon(int resId) { + mIcon.setVisibility(resId == 0 ? View.GONE : View.VISIBLE); + mIcon.setImageResource(resId); + } + + /** @param message the content message text of the dialog. */ + public void setMessage(CharSequence message) { + mMessage.setText(message); + mMessage.setVisibility(message == null ? View.GONE : View.VISIBLE); + } + + /** @param title the title text of the dialog. */ + @Override + public void setTitle(CharSequence title) { + mTitle.setText(title); + } + + /** + * Sets a click listener for a button. + * + * <p>Will hide button bar if all buttons are hidden (i.e. their click listeners are <code>null + * </code>). + * + * @param whichButton {@link DialogInterface.BUTTON_POSITIVE} or {@link + * DialogInterface.BUTTON_NEGATIVE} + * @param listener the listener to set for the button. Hide button if <code>null</code>. + */ + public void setButton(int whichButton, DialogInterface.OnClickListener listener) { + switch (whichButton) { + case DialogInterface.BUTTON_POSITIVE: + mPositiveButtonListener = listener; + break; + case DialogInterface.BUTTON_NEGATIVE: + mNegativeButtonListener = listener; + break; + default: + return; + } + + mSpacer.setVisibility(mPositiveButtonListener == null || mNegativeButtonListener == null + ? View.GONE : View.INVISIBLE); + mPositiveButton.setVisibility( + mPositiveButtonListener == null ? View.GONE : View.VISIBLE); + mNegativeButton.setVisibility( + mNegativeButtonListener == null ? View.GONE : View.VISIBLE); + mButtonPanel.setVisibility( + mPositiveButtonListener == null && mNegativeButtonListener == null + ? View.GONE : View.VISIBLE); + } + + /** + * Convenience method for <code>setButton(DialogInterface.BUTTON_POSITIVE, listener)</code>. + * + * @param listener the listener for the positive button. + */ + public void setPositiveButton(DialogInterface.OnClickListener listener) { + setButton(DialogInterface.BUTTON_POSITIVE, listener); + } + + /** + * Convenience method for <code>setButton(DialogInterface.BUTTON_NEGATIVE, listener)</code>. + * + * @param listener the listener for the positive button. + */ + public void setNegativeButton(DialogInterface.OnClickListener listener) { + setButton(DialogInterface.BUTTON_NEGATIVE, listener); + } +} diff --git a/src/android/support/wearable/view/WearableDialogHelper.java b/src/android/support/wearable/view/WearableDialogHelper.java new file mode 100644 index 00000000..0bdc1cc9 --- /dev/null +++ b/src/android/support/wearable/view/WearableDialogHelper.java @@ -0,0 +1,217 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * 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 + */ +package android.support.wearable.view; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; +import android.util.Log; +import android.widget.Button; + +/** + * Helper to add icons to AlertDialog buttons.AlertDialog buttons. + */ +public class WearableDialogHelper { + private static final String TAG = "WearableDialogHelper"; + + private int mPositiveIconId; + private Drawable mPositiveIcon; + + private int mNeutralIconId; + private Drawable mNeutralIcon; + + private int mNegativeIconId; + private Drawable mNegativeIcon; + + @VisibleForTesting /* package */ Resources mResources; + @VisibleForTesting /* package */ Resources.Theme mTheme; + + /** + * Convenience constructor, equivalent to {@code new WearableDialogHelper(context.getResources(), + * context.getTheme())}. + */ + public WearableDialogHelper(@NonNull Context context) { + this(context.getResources(), context.getTheme()); + } + + /** + * @param resources the Resources used to obtain Drawables from resource IDs. + * @param theme the Theme used to properly obtain Drawables from resource IDs. + */ + public WearableDialogHelper(@NonNull Resources resources, @NonNull Resources.Theme theme) { + mResources = resources; + mTheme = theme; + } + + @Nullable + public Drawable getPositiveIcon() { + return resolveDrawable(mPositiveIcon, mPositiveIconId); + } + + @Nullable + public Drawable getNegativeIcon() { + return resolveDrawable(mNegativeIcon, mNegativeIconId); + } + + @Nullable + public Drawable getNeutralIcon() { + return resolveDrawable(mNeutralIcon, mNeutralIconId); + } + + @NonNull + public WearableDialogHelper setPositiveIcon(@DrawableRes int resId) { + mPositiveIconId = resId; + mPositiveIcon = null; + return this; + } + + @NonNull + public WearableDialogHelper setPositiveIcon(@Nullable Drawable icon) { + mPositiveIcon = icon; + mPositiveIconId = 0; + return this; + } + + @NonNull + public WearableDialogHelper setNegativeIcon(@DrawableRes int resId) { + mNegativeIconId = resId; + mNegativeIcon = null; + return this; + } + + @NonNull + public WearableDialogHelper setNegativeIcon(@Nullable Drawable icon) { + mNegativeIcon = icon; + mNegativeIconId = 0; + return this; + } + + @NonNull + public WearableDialogHelper setNeutralIcon(@DrawableRes int resId) { + mNeutralIconId = resId; + mNeutralIcon = null; + return this; + } + + @NonNull + public WearableDialogHelper setNeutralIcon(@Nullable Drawable icon) { + mNeutralIcon = icon; + mNeutralIconId = 0; + return this; + } + + /** + * Applies the button icons setup in the helper to the buttons in the dialog. + * + * <p>Note that this should be called after {@code AlertDialog.create()}, NOT {@code + * AlertDialog.Builder.create()}. Calling {@code AlertDialog.Builder.show()} would also accomplish + * the same thing. + * + * @param dialog the AlertDialog to style with the helper. + */ + public void apply(@NonNull AlertDialog dialog) { + applyButton(dialog.getButton(DialogInterface.BUTTON_POSITIVE), getPositiveIcon()); + applyButton(dialog.getButton(DialogInterface.BUTTON_NEGATIVE), getNegativeIcon()); + applyButton(dialog.getButton(DialogInterface.BUTTON_NEUTRAL), getNeutralIcon()); + } + + /** Applies the specified drawable to the button. */ + @VisibleForTesting + /* package */ void applyButton(@Nullable Button button, @Nullable Drawable drawable) { + if (button != null) { + button.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null); + button.setAllCaps(false); + } else if (drawable != null) { + Log.w(TAG, "non-null drawable used with missing button, did you call AlertDialog.create()?"); + } + } + + /** Obtain a drawable between a drawable and a resource ID. */ + @VisibleForTesting + /* package */ Drawable resolveDrawable(@Nullable Drawable drawable, @DrawableRes int resId) { + return drawable == null && resId != 0 ? mResources.getDrawable(resId, mTheme) : drawable; + } + + /** Convenience builder to generate an AlertDialog with icons in buttons. */ + public static class DialogBuilder extends AlertDialog.Builder { + private final WearableDialogHelper mHelper; + + public DialogBuilder(Context context) { + super(context); + mHelper = new WearableDialogHelper(context.getResources(), context.getTheme()); + } + + public DialogBuilder(Context context, int themeResId) { + super(context, themeResId); + mHelper = new WearableDialogHelper(context.getResources(), context.getTheme()); + } + + public WearableDialogHelper getHelper() { + return mHelper; + } + + public DialogBuilder setPositiveIcon(@DrawableRes int iconId) { + mHelper.setPositiveIcon(iconId); + return this; + } + + public DialogBuilder setPositiveIcon(@Nullable Drawable icon) { + mHelper.setPositiveIcon(icon); + return this; + } + + public DialogBuilder setNegativeIcon(@DrawableRes int iconId) { + mHelper.setNegativeIcon(iconId); + return this; + } + + public DialogBuilder setNegativeIcon(@Nullable Drawable icon) { + mHelper.setNegativeIcon(icon); + return this; + } + + public DialogBuilder setNeutralIcon(@DrawableRes int iconId) { + mHelper.setNeutralIcon(iconId); + return this; + } + + public DialogBuilder setNeutralIcon(@Nullable Drawable icon) { + mHelper.setNeutralIcon(icon); + return this; + } + + @Override + public AlertDialog create() { + final AlertDialog dialog = super.create(); + dialog.create(); + mHelper.apply(dialog); + return dialog; + } + + @Override + public AlertDialog show() { + final AlertDialog dialog = this.create(); + dialog.show(); + return dialog; + } + } +} diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java index 55a1f814..de685825 100644 --- a/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -477,6 +477,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen final boolean requestFromUnknownSource = isInstallRequestFromUnknownSource(getIntent()); if (!requestFromUnknownSource) { initiateInstall(); + return; } // If the admin prohibits it, or we're running in a managed profile, just show error diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index a6601165..5a1a9d64 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -353,7 +353,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> // no longer has it fixed in a denied state. if (permission.isUserFixed() || permission.isUserSet()) { permission.setUserFixed(false); - permission.setUserSet(true); + permission.setUserSet(false); mPackageManager.updatePermissionFlags(permission.getName(), mPackageInfo.packageName, PackageManager.FLAG_PERMISSION_USER_FIXED @@ -538,11 +538,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { Permission permission = mPermissions.valueAt(i); - if (!permission.isUserFixed()) { - return false; + if (permission.isUserFixed()) { + return true; } } - return true; + return false; } public boolean isPolicyFixed() { @@ -560,11 +560,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { Permission permission = mPermissions.valueAt(i); - if (!permission.isUserSet()) { - return false; + if (permission.isUserSet()) { + return true; } } - return true; + return false; } public boolean isSystemFixed() { diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java index e455ef13..099e5b07 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissions.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java @@ -48,11 +48,11 @@ public final class AppPermissions { private PackageInfo mPackageInfo; - public AppPermissions(Context context, PackageInfo packageInfo, String[] permissions, + public AppPermissions(Context context, PackageInfo packageInfo, String[] filterPermissions, boolean sortGroups, Runnable onErrorCallback) { mContext = context; mPackageInfo = packageInfo; - mFilterPermissions = permissions; + mFilterPermissions = filterPermissions; mAppLabel = BidiFormatter.getInstance().unicodeWrap( packageInfo.applicationInfo.loadSafeLabel( context.getPackageManager()).toString()); @@ -83,7 +83,9 @@ public final class AppPermissions { } public boolean isReviewRequired() { - if (!Build.PERMISSIONS_REVIEW_REQUIRED) { + if (!mContext.getResources().getBoolean( + com.android.internal.R.bool.config_permissionReviewRequired) + && !Build.PERMISSIONS_REVIEW_REQUIRED) { return false; } final int groupCount = mGroups.size(); @@ -120,34 +122,13 @@ public final class AppPermissions { if (!filterPermission.equals(requestedPerm)) { continue; } - - if (hasGroupForPermission(requestedPerm)) { - break; - } - - AppPermissionGroup group = AppPermissionGroup.create(mContext, - mPackageInfo, requestedPerm); - if (group == null) { - break; - } - - mGroups.add(group); + addPermissionGroupIfNeeded(requestedPerm); break; } } } else { for (String requestedPerm : mPackageInfo.requestedPermissions) { - if (hasGroupForPermission(requestedPerm)) { - continue; - } - - AppPermissionGroup group = AppPermissionGroup.create(mContext, - mPackageInfo, requestedPerm); - if (group == null) { - continue; - } - - mGroups.add(group); + addPermissionGroupIfNeeded(requestedPerm); } } @@ -161,6 +142,20 @@ public final class AppPermissions { } } + private void addPermissionGroupIfNeeded(String permission) { + if (hasGroupForPermission(permission)) { + return; + } + + AppPermissionGroup group = AppPermissionGroup.create(mContext, + mPackageInfo, permission); + if (group == null) { + return; + } + + mGroups.add(group); + } + private boolean hasGroupForPermission(String permission) { for (AppPermissionGroup group : mGroups) { if (group.hasPermission(permission)) { diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java index 21042f00..82cfccb0 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java @@ -1,30 +1,51 @@ package com.android.packageinstaller.permission.ui; +import android.app.AlertDialog; +import android.app.Dialog; import android.content.Context; -import android.graphics.PixelFormat; +import android.content.DialogInterface; +import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; +import android.graphics.PixelFormat; +import android.graphics.PorterDuff; import android.os.Bundle; +import android.support.wearable.view.AcceptDenyDialog; +import android.support.wearable.view.WearableDialogHelper; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.style.ImageSpan; +import android.text.style.TextAppearanceSpan; +import android.text.TextUtils; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; +import android.widget.Space; import com.android.packageinstaller.R; -import com.android.packageinstaller.permission.ui.wear.ConfirmationViewHandler; /** * Watch-specific view handler for the grant permissions activity. */ -final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler - implements GrantPermissionsViewHandler { +final class GrantPermissionsWatchViewHandler implements GrantPermissionsViewHandler, + DialogInterface.OnClickListener { private static final String TAG = "GrantPermsWatchViewH"; - private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME"; + private static final String WATCH_HANDLER_BUNDLE = "watch_handler_bundle"; + private static final String DIALOG_BUNDLE = "dialog_bundle"; + private static final String GROUP_NAME = "group_name"; + private static final String SHOW_DO_NOT_ASK = "show_do_not_ask"; + private static final String ICON = "icon"; + private static final String MESSAGE = "message"; + private static final String CURRENT_PAGE_TEXT = "current_page_text"; private final Context mContext; - + private ResultListener mResultListener; - + + private Dialog mDialog; + private String mGroupName; private boolean mShowDoNotAsk; @@ -33,7 +54,6 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler private Icon mIcon; GrantPermissionsWatchViewHandler(Context context) { - super(context); mContext = context; } @@ -45,13 +65,7 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler @Override public View createView() { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "createView()"); - } - - mShowDoNotAsk = false; - - return super.createView(); + return new Space(mContext); } @Override @@ -79,96 +93,117 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler mShowDoNotAsk = showDoNotAsk; mMessage = message; mIcon = icon; - mCurrentPageText = (groupCount > 1 ? - mContext.getString(R.string.current_permission_template, groupIndex + 1, groupCount) - : null); + mCurrentPageText = groupCount > 1 + ? mContext.getString(R.string.current_permission_template, + groupIndex + 1, groupCount) + : null; + showDialog(null); + } + + private void showDialog(Bundle savedInstanceState) { + TypedArray a = mContext.obtainStyledAttributes( + new int[] { android.R.attr.textColorPrimary }); + int color = a.getColor(0, mContext.getColor(android.R.color.white)); + a.recycle(); + Drawable drawable = mIcon == null ? null : mIcon.setTint(color).loadDrawable(mContext); + + SpannableStringBuilder ssb = new SpannableStringBuilder(); + if (!TextUtils.isEmpty(mCurrentPageText)) { + ssb.append(mCurrentPageText, new TextAppearanceSpan(mContext, R.style.BreadcrumbText), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + ssb.append('\n'); + } + if (!TextUtils.isEmpty(mMessage)) { + ssb.append(mMessage, new TextAppearanceSpan(mContext, R.style.TitleText), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } - invalidate(); + if (mDialog != null) { + mDialog.dismiss(); + mDialog = null; + } + + if (mShowDoNotAsk) { + AlertDialog alertDialog = new WearableDialogHelper.DialogBuilder(mContext) + .setPositiveIcon(R.drawable.confirm_button) + .setNeutralIcon(R.drawable.cancel_button) + .setNegativeIcon(R.drawable.deny_button) + .setTitle(ssb) + .setIcon(drawable) + .setPositiveButton(R.string.grant_dialog_button_allow, this) + .setNeutralButton(R.string.grant_dialog_button_deny, this) + .setNegativeButton(R.string.grant_dialog_button_deny_dont_ask_again, this) + .show(); + alertDialog.getButton(DialogInterface.BUTTON_POSITIVE) + .setId(R.id.permission_allow_button); + alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL) + .setId(R.id.permission_deny_button); + alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE) + .setId(R.id.permission_deny_dont_ask_again_button); + + mDialog = alertDialog; + } else { + AcceptDenyDialog acceptDenyDialog = new AcceptDenyDialog(mContext); + acceptDenyDialog.setTitle(ssb); + acceptDenyDialog.setIcon(drawable); + acceptDenyDialog.setPositiveButton(this); + acceptDenyDialog.setNegativeButton(this); + acceptDenyDialog.show(); + acceptDenyDialog.getButton(DialogInterface.BUTTON_POSITIVE) + .setId(R.id.permission_allow_button); + acceptDenyDialog.getButton(DialogInterface.BUTTON_NEGATIVE) + .setId(R.id.permission_deny_button); + + mDialog = acceptDenyDialog; + } + mDialog.setCancelable(false); + + if (savedInstanceState != null) { + mDialog.onRestoreInstanceState(savedInstanceState); + } } @Override public void saveInstanceState(Bundle outState) { - outState.putString(ARG_GROUP_NAME, mGroupName); + Bundle b = new Bundle(); + b.putByte(SHOW_DO_NOT_ASK, (byte) (mShowDoNotAsk ? 1 : 0)); + b.putString(GROUP_NAME, mGroupName); + b.putBundle(DIALOG_BUNDLE, mDialog.onSaveInstanceState()); + + outState.putBundle(WATCH_HANDLER_BUNDLE, b); } @Override public void loadInstanceState(Bundle savedInstanceState) { - mGroupName = savedInstanceState.getString(ARG_GROUP_NAME); + Bundle b = savedInstanceState.getBundle(WATCH_HANDLER_BUNDLE); + mShowDoNotAsk = b.getByte(SHOW_DO_NOT_ASK) == 1; + mGroupName = b.getString(GROUP_NAME); + showDialog(b.getBundle(DIALOG_BUNDLE)); } @Override public void onBackPressed() { - if (mResultListener != null) { - mResultListener.onPermissionGrantResult(mGroupName, false, false); - } - } - - @Override // ConfirmationViewHandler - public void onButton1() { - onClick(true /* granted */, false /* doNotAskAgain */); - } - - @Override // ConfirmationViewHandler - public void onButton2() { - onClick(false /* granted */, false /* doNotAskAgain */); + notifyListener(false, false); } - @Override // ConfirmationViewHandler - public void onButton3() { - onClick(false /* granted */, true /* doNotAskAgain */); - } - - @Override // ConfirmationViewHandler - public CharSequence getCurrentPageText() { - return mCurrentPageText; - } - - @Override // ConfirmationViewHandler - public Icon getPermissionIcon() { - return mIcon; - } - - @Override // ConfirmationViewHandler - public CharSequence getMessage() { - return mMessage; - } - - @Override // ConfirmationViewHandler - public int getButtonBarMode() { - return mShowDoNotAsk ? MODE_VERTICAL_BUTTONS : MODE_HORIZONTAL_BUTTONS; - } - - @Override // ConfirmationViewHandler - public CharSequence getVerticalButton1Text() { - return mContext.getString(R.string.grant_dialog_button_allow); - } - - @Override // ConfirmationViewHandler - public CharSequence getVerticalButton2Text() { - return mContext.getString(R.string.grant_dialog_button_deny); - } - - @Override // ConfirmationViewHandler - public CharSequence getVerticalButton3Text() { - return mContext.getString(R.string.grant_dialog_button_deny_dont_ask_again); - } - - @Override // ConfirmationViewHandler - public Drawable getVerticalButton1Icon(){ - return mContext.getDrawable(R.drawable.confirm_button); - } - - @Override // ConfirmationViewHandler - public Drawable getVerticalButton2Icon(){ - return mContext.getDrawable(R.drawable.cancel_button); - } - - @Override // ConfirmationViewHandler - public Drawable getVerticalButton3Icon(){ - return mContext.getDrawable(R.drawable.deny_button); + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: + notifyListener(true, false); + break; + case DialogInterface.BUTTON_NEUTRAL: + notifyListener(false, false); + break; + case DialogInterface.BUTTON_NEGATIVE: + notifyListener(false, + /* In AlertDialog, the negative button is also a don't ask again button. */ + dialog instanceof AlertDialog); + break; + } } - private void onClick(boolean granted, boolean doNotAskAgain) { + private void notifyListener(boolean granted, boolean doNotAskAgain) { if (mResultListener != null) { mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain); } diff --git a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java index 0f8cb5b1..d3f3e407 100644 --- a/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/AllAppPermissionsFragment.java @@ -288,8 +288,10 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { return Utils.applyTint(context, icon, android.R.attr.colorControlNormal); } - private static boolean isMutableGranularPermission(String name) { - if (!Build.PERMISSIONS_REVIEW_REQUIRED) { + private boolean isMutableGranularPermission(String name) { + if (!getResources().getBoolean( + com.android.internal.R.bool.config_permissionReviewRequired) + && !Build.PERMISSIONS_REVIEW_REQUIRED) { return false; } switch (name) { diff --git a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java index be7d159c..26467de9 100644 --- a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java @@ -33,7 +33,6 @@ import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.support.v14.preference.SwitchPreference; -import android.support.v17.leanback.widget.VerticalGridView; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; @@ -48,7 +47,9 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; + import com.android.packageinstaller.R; + import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissions; import com.android.packageinstaller.permission.ui.ReviewPermissionsActivity; @@ -182,17 +183,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader R.string.app_permissions_decor_title)); } - @Override - protected void updateHeader() { - - super.updateHeader(); - Preference headerLineTwo = getPreferenceScreen().findPreference(HEADER_PREFERENCE_KEY); - if (headerLineTwo != null) { - headerLineTwo.setTitle(mLabel); - headerLineTwo.setIcon(mIcon); - } - } - private void loadPreferences() { Context context = getPreferenceManager().getContext(); if (context == null) { @@ -201,25 +191,11 @@ public final class AppPermissionsFragment extends SettingsWithHeader PreferenceScreen screen = getPreferenceScreen(); screen.removeAll(); - - // Setting the second-line header that contains the app banner icon and its name. - // The styling used is the same as a leanback preference with a customized background color. - Preference headerLineTwo = new Preference(context) { - @Override - public void onBindViewHolder(PreferenceViewHolder holder) { - super.onBindViewHolder(holder); - holder.itemView.setBackgroundColor( - getResources().getColor(R.color.lb_header_banner_color)); - } - }; - headerLineTwo.setKey(HEADER_PREFERENCE_KEY); - headerLineTwo.setSelectable(false); - headerLineTwo.setTitle(mLabel); - headerLineTwo.setIcon(mIcon); - screen.addPreference(headerLineTwo); + screen.addPreference(createHeaderLineTwoPreference(context)); if (mExtraScreen != null) { mExtraScreen.removeAll(); + mExtraScreen = null; } final Preference extraPerms = new Preference(context); @@ -253,6 +229,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader } else { if (mExtraScreen == null) { mExtraScreen = getPreferenceManager().createPreferenceScreen(context); + mExtraScreen.addPreference(createHeaderLineTwoPreference(context)); } mExtraScreen.addPreference(preference); } @@ -281,6 +258,30 @@ public final class AppPermissionsFragment extends SettingsWithHeader setLoading(false /* loading */, true /* animate */); } + /** + * Creates a heading below decor_title and above the rest of the preferences. This heading + * displays the app name and banner icon. It's used in both system and additional permissions + * fragments for each app. The styling used is the same as a leanback preference with a + * customized background color + * @param context The context the preferences created on + * @return The preference header to be inserted as the first preference in the list. + */ + private Preference createHeaderLineTwoPreference(Context context) { + Preference headerLineTwo = new Preference(context) { + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + holder.itemView.setBackgroundColor( + getResources().getColor(R.color.lb_header_banner_color)); + } + }; + headerLineTwo.setKey(HEADER_PREFERENCE_KEY); + headerLineTwo.setSelectable(false); + headerLineTwo.setTitle(mLabel); + headerLineTwo.setIcon(mIcon); + return headerLineTwo; + } + @Override public boolean onPreferenceChange(final Preference preference, Object newValue) { String groupName = preference.getKey(); @@ -390,8 +391,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onCreate(Bundle savedInstanceState) { mOuterFragment = (AppPermissionsFragment) getTargetFragment(); super.onCreate(savedInstanceState); - setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, mOuterFragment.mInfoIntent, - null); setHasOptionsMenu(true); } @@ -407,6 +406,22 @@ public final class AppPermissionsFragment extends SettingsWithHeader bindUi(this, getPackageInfo(getActivity(), packageName)); } + private static void bindUi(SettingsWithHeader fragment, PackageInfo packageInfo) { + Activity activity = fragment.getActivity(); + PackageManager pm = activity.getPackageManager(); + ApplicationInfo appInfo = packageInfo.applicationInfo; + Intent infoIntent = null; + if (!activity.getIntent().getBooleanExtra(EXTRA_HIDE_INFO_BUTTON, false)) { + infoIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) + .setData(Uri.fromParts("package", packageInfo.packageName, null)); + } + + Drawable icon = appInfo.loadIcon(pm); + CharSequence label = appInfo.loadLabel(pm); + fragment.setHeader(icon, label, infoIntent, fragment.getString( + R.string.additional_permissions_decor_title)); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java index ec320701..e6ad66da 100644 --- a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java @@ -421,6 +421,18 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements bindUi(this, permissionApps); } + @Override + public void onResume() { + super.onResume(); + mOuterFragment.mPermissionApps.refresh(true); + } + + @Override + public void onDestroy() { + super.onDestroy(); + mOuterFragment.setOnPermissionsLoadedListener(null); + } + private static void bindUi(SettingsWithHeader fragment, PermissionApps permissionApps) { final CharSequence label = permissionApps.getLabel(); @@ -428,11 +440,9 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements fragment.getString(R.string.system_apps_decor_title, label)); } - @Override public void onPermissionsLoaded(PermissionApps permissionApps) { setPreferenceScreen(); - mOuterFragment.setOnPermissionsLoadedListener(null); } private void setPreferenceScreen() { diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java index db1c94d8..4ef27426 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -22,8 +22,14 @@ import android.app.Fragment; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.PermissionInfo; import android.os.Bundle; -import android.support.wearable.view.WearableListView; +import android.os.UserHandle; +import android.preference.Preference; +import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; +import android.support.wearable.view.WearableDialogHelper; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -33,25 +39,21 @@ import android.widget.Toast; import com.android.packageinstaller.R; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissions; -import com.android.packageinstaller.permission.ui.wear.settings.PermissionsSettingsAdapter; -import com.android.packageinstaller.permission.ui.wear.settings.SettingsAdapter; +import com.android.packageinstaller.permission.model.Permission; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; +import com.android.packageinstaller.permission.utils.ArrayUtils; import com.android.packageinstaller.permission.utils.Utils; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import java.util.ArrayList; import java.util.List; -public final class AppPermissionsFragmentWear extends TitledSettingsFragment { +public final class AppPermissionsFragmentWear extends PreferenceFragment { + private static final String LOG_TAG = "AppPermFragWear"; - private static final String LOG_TAG = "ManagePermsFragment"; - - private static final int WARNING_CONFIRMATION_REQUEST = 252; - private List<AppPermissionGroup> mToggledGroups; - private AppPermissions mAppPermissions; - private PermissionsSettingsAdapter mAdapter; - - private boolean mHasConfirmedRevoke; + private static final String KEY_NO_PERMISSIONS = "no_permissions"; public static AppPermissionsFragmentWear newInstance(String packageName) { return setPackageName(new AppPermissionsFragmentWear(), packageName); @@ -64,17 +66,53 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { return fragment; } + private PackageManager mPackageManager; + private List<AppPermissionGroup> mToggledGroups; + private AppPermissions mAppPermissions; + + private boolean mHasConfirmedRevoke; + + /** + * Provides click behavior for disabled preferences. + * We can't use {@link PreferenceFragment#onPreferenceTreeClick}, as the base + * {@link SwitchPreference} doesn't delegate to that method if the preference is disabled. + */ + private static class PermissionSwitchPreference extends SwitchPreference { + + private final Activity mActivity; + + public PermissionSwitchPreference(Activity activity) { + super(activity); + this.mActivity = activity; + } + + @Override + public void performClick(PreferenceScreen preferenceScreen) { + super.performClick(preferenceScreen); + if (!isEnabled()) { + // If setting the permission is disabled, it must have been locked + // by the device or profile owner. So get that info and pass it to + // the support details dialog. + EnforcedAdmin deviceOrProfileOwner = RestrictedLockUtils.getProfileOrDeviceOwner( + mActivity, UserHandle.myUserId()); + RestrictedLockUtils.sendShowAdminSupportDetailsIntent( + mActivity, deviceOrProfileOwner); + } + } + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME); Activity activity = getActivity(); - PackageManager pm = activity.getPackageManager(); + mPackageManager = activity.getPackageManager(); + PackageInfo packageInfo; try { - packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS); + packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS); } catch (PackageManager.NameNotFoundException e) { Log.i(LOG_TAG, "No package:" + activity.getCallingPackage(), e); packageInfo = null; @@ -86,172 +124,180 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { return; } - mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() { - @Override - public void run() { - getActivity().finish(); - } - }); - - mAdapter = new PermissionsSettingsAdapter(getContext()); + mAppPermissions = new AppPermissions( + activity, packageInfo, null, true, () -> getActivity().finish()); + addPreferencesFromResource(R.xml.watch_permissions); initializePermissionGroupList(); } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - return inflater.inflate(R.layout.settings, container, false); - } - - @Override public void onResume() { super.onResume(); mAppPermissions.refresh(); // Also refresh the UI - final int count = mAdapter.getItemCount(); - for (int i = 0; i < count; ++i) { - updatePermissionGroupSetting(i); + for (final AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { + if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) { + for (PermissionInfo perm : getPermissionInfosFromGroup(group)) { + setPreferenceCheckedIfPresent(perm.name, + group.areRuntimePermissionsGranted(new String[]{ perm.name })); + } + } else { + setPreferenceCheckedIfPresent(group.getName(), group.areRuntimePermissionsGranted()); + } } } @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - if (mAppPermissions != null) { - initializeLayout(mAdapter); - mHeader.setText(R.string.app_permissions); - mDetails.setText(R.string.no_permissions); - if (mAdapter.getItemCount() == 0) { - mDetails.setVisibility(View.VISIBLE); - mWheel.setVisibility(View.GONE); - } else { - mDetails.setVisibility(View.GONE); - mWheel.setVisibility(View.VISIBLE); - } - } + public void onPause() { + super.onPause(); + logAndClearToggledGroups(); } private void initializePermissionGroupList() { final String packageName = mAppPermissions.getPackageInfo().packageName; List<AppPermissionGroup> groups = mAppPermissions.getPermissionGroups(); - List<SettingsAdapter.Setting<AppPermissionGroup>> nonSystemGroups = new ArrayList<>(); + List<SwitchPreference> nonSystemPreferences = new ArrayList<>(); - final int count = groups.size(); - for (int i = 0; i < count; ++i) { - final AppPermissionGroup group = groups.get(i); + if (!groups.isEmpty()) { + getPreferenceScreen().removePreference(findPreference(KEY_NO_PERMISSIONS)); + } + + for (final AppPermissionGroup group : groups) { if (!Utils.shouldShowPermission(group, packageName)) { continue; } boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); - SettingsAdapter.Setting<AppPermissionGroup> setting = - new SettingsAdapter.Setting<AppPermissionGroup>( - group.getLabel(), - getPermissionGroupIcon(group), - i); - setting.data = group; - - // The UI shows System settings first, then non-system settings - if (isPlatform) { - mAdapter.addSetting(setting); + if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) { + // If permission is controlled individually, we show all requested permission + // inside this group. + for (PermissionInfo perm : getPermissionInfosFromGroup(group)) { + final SwitchPreference pref = createSwitchPreferenceForPermission(group, perm); + showOrAddToNonSystemPreferences(pref, nonSystemPreferences, isPlatform); + } } else { - nonSystemGroups.add(setting); + final SwitchPreference pref = createSwitchPreferenceForGroup(group); + showOrAddToNonSystemPreferences(pref, nonSystemPreferences, isPlatform); } } // Now add the non-system settings to the end of the list - final int nonSystemCount = nonSystemGroups.size(); - for (int i = 0; i < nonSystemCount; ++i) { - final SettingsAdapter.Setting<AppPermissionGroup> setting = nonSystemGroups.get(i); - mAdapter.addSetting(setting); + for (SwitchPreference nonSystemPreference : nonSystemPreferences) { + getPreferenceScreen().addPreference(nonSystemPreference); } } - @Override - public void onPause() { - super.onPause(); - logAndClearToggledGroups(); + private void showOrAddToNonSystemPreferences(SwitchPreference pref, + List<SwitchPreference> nonSystemPreferences, // Mutate + boolean isPlatform) { + // The UI shows System settings first, then non-system settings + if (isPlatform) { + getPreferenceScreen().addPreference(pref); + } else { + nonSystemPreferences.add(pref); + } } - @Override - public void onClick(WearableListView.ViewHolder view) { - final int index = view.getPosition(); - SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index); - final AppPermissionGroup group = setting.data; + private SwitchPreference createSwitchPreferenceForPermission(AppPermissionGroup group, + PermissionInfo perm) { + final SwitchPreference pref = new PermissionSwitchPreference(getActivity()); + pref.setKey(perm.name); + pref.setTitle(perm.loadLabel(mPackageManager)); + pref.setChecked(group.areRuntimePermissionsGranted(new String[]{ perm.name })); + pref.setOnPreferenceChangeListener((p, newVal) -> { + if((Boolean) newVal) { + group.grantRuntimePermissions(false, new String[]{ perm.name }); + } else { + group.revokeRuntimePermissions(true, new String[]{ perm.name }); + } - if (group == null) { - Log.e(LOG_TAG, "Error: AppPermissionGroup is null"); - return; - } + if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName()) + && group.hasRuntimePermission()) { + // As long as one permission is changed in individually controlled group + // permissions, we will set user_fixed for non-granted permissions in that group. + // This avoids the system to automatically grant runtime permissions based on the + // fact that one of dangerous permission in that group is already granted. + String[] revokedPermissionsToFix = null; + final int permissionCount = group.getPermissions().size(); + + for (int i = 0; i < permissionCount; i++) { + Permission current = group.getPermissions().get(i); + if (!current.isGranted() && !current.isUserFixed()) { + revokedPermissionsToFix = ArrayUtils.appendString( + revokedPermissionsToFix, current.getName()); + } + } - // The way WearableListView is designed, there is no way to avoid this click handler - // Since the policy is fixed, ignore the click as the user is not able to change the state - // of this permission group - if (group.isPolicyFixed()) { - return; - } + if (revokedPermissionsToFix != null) { + group.revokeRuntimePermissions(true, revokedPermissionsToFix); + } + } + return true; + }); + return pref; + } - addToggledGroup(group); + private SwitchPreference createSwitchPreferenceForGroup(AppPermissionGroup group) { + final SwitchPreference pref = new PermissionSwitchPreference(getActivity()); - if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) { - LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel()); - return; - } + pref.setKey(group.getName()); + pref.setTitle(group.getLabel()); + pref.setChecked(group.areRuntimePermissionsGranted()); - if (!group.areRuntimePermissionsGranted()) { - group.grantRuntimePermissions(false); + if (group.isPolicyFixed()) { + pref.setEnabled(false); } else { - final boolean grantedByDefault = group.hasGrantedByDefaultPermission(); - if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { - Intent intent = new Intent(getActivity(), WarningConfirmationActivity.class); - intent.putExtra(WarningConfirmationActivity.EXTRA_WARNING_MESSAGE, - getString(grantedByDefault ? - R.string.system_warning : R.string.old_sdk_deny_warning)); - intent.putExtra(WarningConfirmationActivity.EXTRA_INDEX, index); - startActivityForResult(intent, WARNING_CONFIRMATION_REQUEST); - } else { - group.revokeRuntimePermissions(false); - } - } - - updatePermissionGroupSetting(index); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == WARNING_CONFIRMATION_REQUEST) { - if (resultCode == Activity.RESULT_OK) { - int index = data.getIntExtra(WarningConfirmationActivity.EXTRA_INDEX, -1); - if (index == -1) { - Log.e(LOG_TAG, "Warning confirmation request came back with no index."); - return; + pref.setOnPreferenceChangeListener((p, newVal) -> { + if (LocationUtils.isLocationGroupAndProvider( + group.getName(), group.getApp().packageName)) { + LocationUtils.showLocationDialog( + getContext(), mAppPermissions.getAppLabel()); + return false; } - SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index); - final AppPermissionGroup group = setting.data; - group.revokeRuntimePermissions(false); - if (!group.hasGrantedByDefaultPermission()) { - mHasConfirmedRevoke = true; + if ((Boolean) newVal) { + setPermission(group, pref, true); + } else { + final boolean grantedByDefault = group.hasGrantedByDefaultPermission(); + if (grantedByDefault + || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { + new WearableDialogHelper.DialogBuilder(getContext()) + .setNegativeIcon(R.drawable.confirm_button) + .setPositiveIcon(R.drawable.cancel_button) + .setNegativeButton(R.string.grant_dialog_button_deny_anyway, + (dialog, which) -> { + setPermission(group, pref, false); + if (!group.hasGrantedByDefaultPermission()) { + mHasConfirmedRevoke = true; + } + }) + .setPositiveButton(R.string.cancel, (dialog, which) -> {}) + .setMessage(grantedByDefault ? + R.string.system_warning : R.string.old_sdk_deny_warning) + .show(); + return false; + } else { + setPermission(group, pref, false); + } } - updatePermissionGroupSetting(index); - } - } else { - super.onActivityResult(requestCode, resultCode, data); + return true; + }); } + return pref; } - private void updatePermissionGroupSetting(int index) { - SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index); - AppPermissionGroup group = setting.data; - mAdapter.updateSetting( - index, - group.getLabel(), - getPermissionGroupIcon(group), - group); + private void setPermission(AppPermissionGroup group, SwitchPreference pref, boolean grant) { + if (grant) { + group.grantRuntimePermissions(false); + } else { + group.revokeRuntimePermissions(false); + } + addToggledGroup(group); + pref.setChecked(grant); } private void addToggledGroup(AppPermissionGroup group) { @@ -274,53 +320,22 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { } } - private int getPermissionGroupIcon(AppPermissionGroup group) { - String groupName = group.getName(); - boolean isEnabled = group.areRuntimePermissionsGranted(); - int resId; - - switch (groupName) { - case Manifest.permission_group.CALENDAR: - resId = isEnabled ? R.drawable.ic_permission_calendar - : R.drawable.ic_permission_calendardisable; - break; - case Manifest.permission_group.CAMERA: - resId = isEnabled ? R.drawable.ic_permission_camera - : R.drawable.ic_permission_cameradisable; - break; - case Manifest.permission_group.CONTACTS: - resId = isEnabled ? R.drawable.ic_permission_contact - : R.drawable.ic_permission_contactdisable; - break; - case Manifest.permission_group.LOCATION: - resId = isEnabled ? R.drawable.ic_permission_location - : R.drawable.ic_permission_locationdisable; - break; - case Manifest.permission_group.MICROPHONE: - resId = isEnabled ? R.drawable.ic_permission_mic - : R.drawable.ic_permission_micdisable; - break; - case Manifest.permission_group.PHONE: - resId = isEnabled ? R.drawable.ic_permission_call - : R.drawable.ic_permission_calldisable; - break; - case Manifest.permission_group.SENSORS: - resId = isEnabled ? R.drawable.ic_permission_sensor - : R.drawable.ic_permission_sensordisable; - break; - case Manifest.permission_group.SMS: - resId = isEnabled ? R.drawable.ic_permission_sms - : R.drawable.ic_permission_smsdisable; - break; - case Manifest.permission_group.STORAGE: - resId = isEnabled ? R.drawable.ic_permission_storage - : R.drawable.ic_permission_storagedisable; - break; - default: - resId = isEnabled ? R.drawable.ic_permission_shield - : R.drawable.ic_permission_shielddisable; + private List<PermissionInfo> getPermissionInfosFromGroup(AppPermissionGroup group) { + ArrayList<PermissionInfo> permInfos = new ArrayList<>(group.getPermissions().size()); + for(Permission perm : group.getPermissions()) { + try { + permInfos.add(mPackageManager.getPermissionInfo(perm.getName(), 0)); + } catch (PackageManager.NameNotFoundException e) { + Log.w(LOG_TAG, "No permission:" + perm.getName()); + } } + return permInfos; + } - return resId; + private void setPreferenceCheckedIfPresent(String preferenceKey, boolean checked) { + Preference pref = findPreference(preferenceKey); + if (pref instanceof SwitchPreference) { + ((SwitchPreference) pref).setChecked(checked); + } } } diff --git a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java deleted file mode 100644 index 1c55e1bd..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java +++ /dev/null @@ -1,381 +0,0 @@ -package com.android.packageinstaller.permission.ui.wear; - -import android.animation.ObjectAnimator; -import android.animation.PropertyValuesHolder; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.Icon; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.view.animation.AnimationUtils; -import android.view.animation.Interpolator; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.ScrollView; -import android.widget.TextView; - -import com.android.packageinstaller.R; - -public abstract class ConfirmationViewHandler implements - Handler.Callback, - View.OnClickListener, - ViewTreeObserver.OnScrollChangedListener, - ViewTreeObserver.OnGlobalLayoutListener { - private static final String TAG = "ConfirmationViewHandler"; - - public static final int MODE_HORIZONTAL_BUTTONS = 0; - public static final int MODE_VERTICAL_BUTTONS = 1; - - private static final int MSG_SHOW_BUTTON_BAR = 1001; - private static final int MSG_HIDE_BUTTON_BAR = 1002; - private static final long HIDE_ANIM_DURATION = 500; - - private View mRoot; - private TextView mCurrentPageText; - private ImageView mIcon; - private TextView mMessage; - private ScrollView mScrollingContainer; - private ViewGroup mContent; - private ViewGroup mHorizontalButtonBar; - private ViewGroup mVerticalButtonBar; - private Button mVerticalButton1; - private Button mVerticalButton2; - private Button mVerticalButton3; - private View mButtonBarContainer; - - private Context mContext; - - private Handler mHideHandler; - private Interpolator mInterpolator; - private float mButtonBarFloatingHeight; - private ObjectAnimator mButtonBarAnimator; - private float mCurrentTranslation; - private boolean mHiddenBefore; - - // TODO: Move these into a builder - /** In the 2 button layout, this is allow button */ - public abstract void onButton1(); - /** In the 2 button layout, this is deny button */ - public abstract void onButton2(); - public abstract void onButton3(); - public abstract CharSequence getVerticalButton1Text(); - public abstract CharSequence getVerticalButton2Text(); - public abstract CharSequence getVerticalButton3Text(); - public abstract Drawable getVerticalButton1Icon(); - public abstract Drawable getVerticalButton2Icon(); - public abstract Drawable getVerticalButton3Icon(); - public abstract CharSequence getCurrentPageText(); - public abstract Icon getPermissionIcon(); - public abstract CharSequence getMessage(); - - public ConfirmationViewHandler(Context context) { - mContext = context; - } - - public View createView() { - mRoot = LayoutInflater.from(mContext).inflate(R.layout.confirmation_dialog, null); - - mMessage = (TextView) mRoot.findViewById(R.id.message); - mCurrentPageText = (TextView) mRoot.findViewById(R.id.current_page_text); - mIcon = (ImageView) mRoot.findViewById(R.id.icon); - mButtonBarContainer = mRoot.findViewById(R.id.button_bar_container); - mContent = (ViewGroup) mRoot.findViewById(R.id.content); - mScrollingContainer = (ScrollView) mRoot.findViewById(R.id.scrolling_container); - mHorizontalButtonBar = (ViewGroup) mRoot.findViewById(R.id.horizontal_button_bar); - mVerticalButtonBar = (ViewGroup) mRoot.findViewById(R.id.vertical_button_bar); - - Button horizontalAllow = (Button) mRoot.findViewById(R.id.permission_allow_button); - Button horizontalDeny = (Button) mRoot.findViewById(R.id.permission_deny_button); - horizontalAllow.setOnClickListener(this); - horizontalDeny.setOnClickListener(this); - - mVerticalButton1 = (Button) mRoot.findViewById(R.id.vertical_button1); - mVerticalButton2 = (Button) mRoot.findViewById(R.id.vertical_button2); - mVerticalButton3 = (Button) mRoot.findViewById(R.id.vertical_button3); - mVerticalButton1.setOnClickListener(this); - mVerticalButton2.setOnClickListener(this); - mVerticalButton3.setOnClickListener(this); - - mInterpolator = AnimationUtils.loadInterpolator(mContext, - android.R.interpolator.fast_out_slow_in); - mButtonBarFloatingHeight = mContext.getResources().getDimension( - R.dimen.conf_diag_floating_height); - mHideHandler = new Handler(Looper.getMainLooper(), this); - - mScrollingContainer.getViewTreeObserver().addOnScrollChangedListener(this); - mRoot.getViewTreeObserver().addOnGlobalLayoutListener(this); - - return mRoot; - } - - /** - * Child class should override this for other modes. Call invalidate() to update the UI to the - * new button mode. - * @return The current mode the layout should use for the buttons - */ - public int getButtonBarMode() { - return MODE_HORIZONTAL_BUTTONS; - } - - public void invalidate() { - CharSequence currentPageText = getCurrentPageText(); - if (!TextUtils.isEmpty(currentPageText)) { - mCurrentPageText.setText(currentPageText); - mCurrentPageText.setVisibility(View.VISIBLE); - } else { - mCurrentPageText.setVisibility(View.GONE); - } - - Icon icon = getPermissionIcon(); - if (icon != null) { - mIcon.setImageIcon(icon); - mIcon.setVisibility(View.VISIBLE); - } else { - mIcon.setVisibility(View.GONE); - } - mMessage.setText(getMessage()); - - switch (getButtonBarMode()) { - case MODE_HORIZONTAL_BUTTONS: - mHorizontalButtonBar.setVisibility(View.VISIBLE); - mVerticalButtonBar.setVisibility(View.GONE); - break; - case MODE_VERTICAL_BUTTONS: - mHorizontalButtonBar.setVisibility(View.GONE); - mVerticalButtonBar.setVisibility(View.VISIBLE); - - mVerticalButton1.setText(getVerticalButton1Text()); - mVerticalButton2.setText(getVerticalButton2Text()); - - mVerticalButton1.setCompoundDrawablesWithIntrinsicBounds( - getVerticalButton1Icon(), null, null, null); - mVerticalButton2.setCompoundDrawablesWithIntrinsicBounds( - getVerticalButton2Icon(), null, null, null); - - CharSequence verticalButton3Text = getVerticalButton3Text(); - if (TextUtils.isEmpty(verticalButton3Text)) { - mVerticalButton3.setVisibility(View.GONE); - } else { - mVerticalButton3.setText(getVerticalButton3Text()); - mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds( - getVerticalButton3Icon(), null, null, null); - } - break; - } - - mScrollingContainer.scrollTo(0, 0); - - mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR); - mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR); - } - - @Override - public void onGlobalLayout() { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "onGlobalLayout"); - Log.d(TAG, " contentHeight: " + mContent.getHeight()); - } - - if (mButtonBarAnimator != null) { - mButtonBarAnimator.cancel(); - } - - // In order to fake the buttons peeking at the bottom, need to do set the - // padding properly. - if (mContent.getPaddingBottom() != mButtonBarContainer.getHeight()) { - mContent.setPadding(mContent.getPaddingLeft(), mContent.getPaddingTop(), - mContent.getPaddingRight(), mButtonBarContainer.getHeight()); - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, " set mContent.PaddingBottom: " + mButtonBarContainer.getHeight()); - } - } - - mButtonBarContainer.setTranslationY(mButtonBarContainer.getHeight()); - - // Give everything a chance to render - mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR); - mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR); - mHideHandler.sendEmptyMessageDelayed(MSG_SHOW_BUTTON_BAR, 50); - } - - @Override - public void onClick(View v) { - int id = v.getId(); - switch (id) { - case R.id.permission_allow_button: - case R.id.vertical_button1: - onButton1(); - break; - case R.id.permission_deny_button: - case R.id.vertical_button2: - onButton2(); - break; - case R.id.vertical_button3: - onButton3(); - break; - } - } - - @Override - public boolean handleMessage (Message msg) { - switch (msg.what) { - case MSG_SHOW_BUTTON_BAR: - showButtonBar(); - return true; - case MSG_HIDE_BUTTON_BAR: - hideButtonBar(); - return true; - } - return false; - } - - @Override - public void onScrollChanged () { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "onScrollChanged"); - } - mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR); - hideButtonBar(); - } - - private void showButtonBar() { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "showButtonBar"); - } - - // Setup Button animation. - // pop the button bar back to full height, stop all animation - if (mButtonBarAnimator != null) { - mButtonBarAnimator.cancel(); - } - - // stop any calls to hide the button bar in the future - mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR); - mHiddenBefore = false; - - // Evaluate the max height the button bar can go - final int screenHeight = mRoot.getHeight(); - final int halfScreenHeight = screenHeight / 2; - final int buttonBarHeight = mButtonBarContainer.getHeight(); - final int contentHeight = mContent.getHeight() - buttonBarHeight; - final int buttonBarMaxHeight = - Math.min(buttonBarHeight, halfScreenHeight); - - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, " screenHeight: " + screenHeight); - Log.d(TAG, " contentHeight: " + contentHeight); - Log.d(TAG, " buttonBarHeight: " + buttonBarHeight); - Log.d(TAG, " buttonBarMaxHeight: " + buttonBarMaxHeight); - } - - mButtonBarContainer.setTranslationZ(mButtonBarFloatingHeight); - - // Only hide the button bar if it is occluding the content or the button bar is bigger than - // half the screen - if (contentHeight > (screenHeight - buttonBarHeight) - || buttonBarHeight > halfScreenHeight) { - mHideHandler.sendEmptyMessageDelayed(MSG_HIDE_BUTTON_BAR, 3000); - } - - generateButtonBarAnimator(buttonBarHeight, - buttonBarHeight - buttonBarMaxHeight, 0, mButtonBarFloatingHeight, 1000); - } - - private void hideButtonBar() { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "hideButtonBar"); - } - - // The desired margin space between the button bar and the bottom of the dialog text - final int topMargin = mContext.getResources().getDimensionPixelSize( - R.dimen.conf_diag_button_container_top_margin); - final int contentHeight = mContent.getHeight() + topMargin; - final int screenHeight = mRoot.getHeight(); - final int buttonBarHeight = mButtonBarContainer.getHeight(); - - final int offset = screenHeight + buttonBarHeight - - contentHeight + Math.max(mScrollingContainer.getScrollY(), 0); - final int translationY = (offset > 0 ? - mButtonBarContainer.getHeight() - offset : mButtonBarContainer.getHeight()); - - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, " topMargin: " + topMargin); - Log.d(TAG, " contentHeight: " + contentHeight); - Log.d(TAG, " screenHeight: " + screenHeight); - Log.d(TAG, " offset: " + offset); - Log.d(TAG, " buttonBarHeight: " + buttonBarHeight); - Log.d(TAG, " mContent.getPaddingBottom(): " + mContent.getPaddingBottom()); - Log.d(TAG, " mScrollingContainer.getScrollY(): " + mScrollingContainer.getScrollY()); - Log.d(TAG, " translationY: " + translationY); - } - - if (!mHiddenBefore || mButtonBarAnimator == null) { - // Remove previous call to MSG_SHOW_BUTTON_BAR if the user scrolled or something before - // the animation got a chance to play - mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR); - - if(mButtonBarAnimator != null) { - mButtonBarAnimator.cancel(); // stop current animation if there is one playing - } - - // hasn't hidden the bar yet, just hide now to the right height - generateButtonBarAnimator( - mButtonBarContainer.getTranslationY(), translationY, - mButtonBarFloatingHeight, 0, HIDE_ANIM_DURATION); - } else if (mButtonBarAnimator.isRunning()) { - // we are animating the button bar closing, change to animate to the right place - if (Math.abs(mCurrentTranslation - translationY) > 1e-2f) { - mButtonBarAnimator.cancel(); // stop current animation - - if (Math.abs(mButtonBarContainer.getTranslationY() - translationY) > 1e-2f) { - long duration = Math.max((long) ( - (float) HIDE_ANIM_DURATION - * (translationY - mButtonBarContainer.getTranslationY()) - / mButtonBarContainer.getHeight()), 0); - - generateButtonBarAnimator( - mButtonBarContainer.getTranslationY(), translationY, - mButtonBarFloatingHeight, 0, duration); - } else { - mButtonBarContainer.setTranslationY(translationY); - mButtonBarContainer.setTranslationZ(0); - } - } - } else { - // not currently animating, have already hidden, snap to the right offset - mButtonBarContainer.setTranslationY(translationY); - mButtonBarContainer.setTranslationZ(0); - } - - mHiddenBefore = true; - } - - private void generateButtonBarAnimator( - float startY, float endY, float startZ, float endZ, long duration) { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "generateButtonBarAnimator"); - Log.d(TAG, " startY: " + startY); - Log.d(TAG, " endY: " + endY); - Log.d(TAG, " startZ: " + startZ); - Log.d(TAG, " endZ: " + endZ); - Log.d(TAG, " duration: " + duration); - } - - mButtonBarAnimator = - ObjectAnimator.ofPropertyValuesHolder( - mButtonBarContainer, - PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, startY, endY), - PropertyValuesHolder.ofFloat(View.TRANSLATION_Z, startZ, endZ)); - mCurrentTranslation = endY; - mButtonBarAnimator.setDuration(duration); - mButtonBarAnimator.setInterpolator(mInterpolator); - mButtonBarAnimator.start(); - } -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java b/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java deleted file mode 100644 index b673a498..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear; - -import android.app.Fragment; -import android.content.Context; -import android.os.Bundle; -import android.support.v7.widget.RecyclerView; -import android.support.wearable.view.WearableListView; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowInsets; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.android.packageinstaller.permission.ui.wear.settings.ViewUtils; -import com.android.packageinstaller.R; - -/** - * Base settings Fragment that shows a title at the top of the page. - */ -public abstract class TitledSettingsFragment extends Fragment implements - View.OnLayoutChangeListener, WearableListView.ClickListener { - - private static final int ITEM_CHANGE_DURATION_MS = 120; - - private static final String TAG = "TitledSettingsFragment"; - private int mInitialHeaderHeight; - - protected TextView mHeader; - protected TextView mDetails; - protected WearableListView mWheel; - - private int mCharLimitShortTitle; - private int mCharLimitLine; - private int mChinOffset; - - private TextWatcher mHeaderTextWatcher = new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) {} - - @Override - public void afterTextChanged(Editable editable) { - adjustHeaderSize(); - } - }; - - private void adjustHeaderTranslation() { - int translation = 0; - if (mWheel.getChildCount() > 0) { - translation = mWheel.getCentralViewTop() - mWheel.getChildAt(0).getTop(); - } - - float newTranslation = Math.min(Math.max(-mInitialHeaderHeight, -translation), 0); - - int position = mWheel.getChildAdapterPosition(mWheel.getChildAt(0)); - if (position == 0 || newTranslation < 0) { - mHeader.setTranslationY(newTranslation); - } - } - - @Override - public void onTopEmptyRegionClick() { - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mCharLimitShortTitle = getResources().getInteger(R.integer.short_title_length); - mCharLimitLine = getResources().getInteger(R.integer.char_limit_per_line); - } - - @Override - public void onLayoutChange(View view, int left, int top, int right, int bottom, int oldLeft, - int oldTop, int oldRight, int oldBottom) { - if (view == mHeader) { - mInitialHeaderHeight = bottom - top; - if (ViewUtils.getIsCircular(getContext())) { - // We are adding more margin on circular screens, so we need to account for it and use - // it for hiding the header. - mInitialHeaderHeight += - ((ViewGroup.MarginLayoutParams) view.getLayoutParams()).topMargin; - } - } else if (view == mWheel) { - adjustHeaderTranslation(); - } - } - - protected void initializeLayout(RecyclerView.Adapter adapter) { - View v = getView(); - mWheel = (WearableListView) v.findViewById(R.id.wheel); - - mHeader = (TextView) v.findViewById(R.id.header); - mHeader.addOnLayoutChangeListener(this); - mHeader.addTextChangedListener(mHeaderTextWatcher); - - mDetails = (TextView) v.findViewById(R.id.details); - mDetails.addOnLayoutChangeListener(this); - - mWheel.setAdapter(adapter); - mWheel.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - } - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - adjustHeaderTranslation(); - } - }); - mWheel.setClickListener(this); - mWheel.addOnLayoutChangeListener(this); - - // Decrease item change animation duration to approximately half of the default duration. - RecyclerView.ItemAnimator itemAnimator = mWheel.getItemAnimator(); - itemAnimator.setChangeDuration(ITEM_CHANGE_DURATION_MS); - - adjustHeaderSize(); - - positionOnCircular(getContext(), mHeader, mDetails, mWheel); - } - - public void positionOnCircular(Context context, View header, View details, - final ViewGroup wheel) { - if (ViewUtils.getIsCircular(context)) { - LinearLayout.LayoutParams params = - (LinearLayout.LayoutParams) header.getLayoutParams(); - params.topMargin = (int) context.getResources().getDimension( - R.dimen.settings_header_top_margin_circular); - // Note that the margins are made symmetrical here. Since they're symmetrical we choose - // the smaller value to maximize usable width. - final int margin = (int) Math.min(context.getResources().getDimension( - R.dimen.round_content_padding_left), context.getResources().getDimension( - R.dimen.round_content_padding_right)); - params.leftMargin = margin; - params.rightMargin = margin; - params.gravity = Gravity.CENTER_HORIZONTAL; - header.setLayoutParams(params); - details.setLayoutParams(params); - - if (header instanceof TextView) { - ((TextView) header).setGravity(Gravity.CENTER); - } - if (details instanceof TextView) { - ((TextView) details).setGravity(Gravity.CENTER); - } - - final int leftPadding = (int) context.getResources().getDimension( - R.dimen.round_content_padding_left); - final int rightPadding = (int) context.getResources().getDimension( - R.dimen.round_content_padding_right); - final int topPadding = (int) context.getResources().getDimension( - R.dimen.settings_wearable_list_view_vertical_padding_round); - final int bottomPadding = (int) context.getResources().getDimension( - R.dimen.settings_wearable_list_view_vertical_padding_round); - wheel.setPadding(leftPadding, topPadding, rightPadding, mChinOffset + bottomPadding); - wheel.setClipToPadding(false); - - wheel.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { - @Override - public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { - mChinOffset = insets.getSystemWindowInsetBottom(); - wheel.setPadding(leftPadding, topPadding, rightPadding, - mChinOffset + bottomPadding); - // This listener is invoked after each time we navigate to SettingsActivity and - // it keeps adding padding. We need to disable it after the first update. - v.setOnApplyWindowInsetsListener(null); - return insets.consumeSystemWindowInsets(); - } - }); - } else { - int leftPadding = (int) context.getResources().getDimension( - R.dimen.content_padding_left); - wheel.setPadding(leftPadding, wheel.getPaddingTop(), wheel.getPaddingRight(), - wheel.getPaddingBottom()); - } - } - - private void adjustHeaderSize() { - int length = mHeader.length(); - - if (length <= mCharLimitShortTitle) { - mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize( - R.dimen.setting_short_header_text_size)); - } else { - mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize( - R.dimen.setting_long_header_text_size)); - } - - boolean singleLine = length <= mCharLimitLine; - - float height = getResources().getDimension(R.dimen.settings_header_base_height); - if (!singleLine) { - height += getResources().getDimension(R.dimen.setting_header_extra_line_height); - } - mHeader.setMinHeight((int) height); - - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mHeader.getLayoutParams(); - final Context context = getContext(); - if (!singleLine) { - // Make the top margin a little bit smaller so there is more space for the title. - if (ViewUtils.getIsCircular(context)) { - params.topMargin = getResources().getDimensionPixelSize( - R.dimen.settings_header_top_margin_circular_multiline); - } else { - params.topMargin = getResources().getDimensionPixelSize( - R.dimen.settings_header_top_margin_multiline); - } - } else { - if (ViewUtils.getIsCircular(context)) { - params.topMargin = getResources().getDimensionPixelSize( - R.dimen.settings_header_top_margin_circular); - } else { - params.topMargin = getResources().getDimensionPixelSize( - R.dimen.settings_header_top_margin); - } - } - mHeader.setLayoutParams(params); - } -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java b/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java deleted file mode 100644 index 0800c14c..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java +++ /dev/null @@ -1,118 +0,0 @@ -/* -* Copyright (C) 2015 The Android Open Source Project -* -* 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. -*/ - -package com.android.packageinstaller.permission.ui.wear; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.Icon; -import android.os.Bundle; - -import com.android.packageinstaller.R; - -public final class WarningConfirmationActivity extends Activity { - public final static String EXTRA_WARNING_MESSAGE = "EXTRA_WARNING_MESSAGE"; - // Saved index that will be returned in the onActivityResult() callback - public final static String EXTRA_INDEX = "EXTRA_INDEX"; - - private ConfirmationViewHandler mViewHandler; - private String mMessage; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mMessage = getIntent().getStringExtra(EXTRA_WARNING_MESSAGE); - - mViewHandler = new ConfirmationViewHandler(this) { - @Override // ConfirmationViewHandler - public int getButtonBarMode() { - return MODE_VERTICAL_BUTTONS; - } - - @Override - public void onButton1() { - setResultAndFinish(Activity.RESULT_CANCELED); - } - - @Override - public void onButton2() { - setResultAndFinish(Activity.RESULT_OK); - } - - @Override - public void onButton3() { - // no-op - } - - @Override - public CharSequence getVerticalButton1Text() { - return getString(R.string.cancel); - } - - @Override - public CharSequence getVerticalButton2Text() { - return getString(R.string.grant_dialog_button_deny_anyway); - } - - @Override - public CharSequence getVerticalButton3Text() { - return null; - } - - @Override - public Drawable getVerticalButton1Icon() { - return getDrawable(R.drawable.cancel_button); - } - - @Override - public Drawable getVerticalButton2Icon() { - return getDrawable(R.drawable.confirm_button); - } - - @Override - public Drawable getVerticalButton3Icon() { - return null; - } - - @Override - public CharSequence getCurrentPageText() { - return null; - } - - @Override - public Icon getPermissionIcon() { - return null; - } - - @Override - public CharSequence getMessage() { - return mMessage; - } - }; - - setContentView(mViewHandler.createView()); - mViewHandler.invalidate(); - } - - private void setResultAndFinish(int result) { - Intent intent = new Intent(); - intent.putExtra(EXTRA_INDEX, getIntent().getIntExtra(EXTRA_INDEX, -1)); - setResult(result, intent); - finish(); - } -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java deleted file mode 100644 index 02c203b3..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedOnCenterProximityListener.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear.settings; - -import android.support.wearable.view.WearableListView; - -public interface ExtendedOnCenterProximityListener - extends WearableListView.OnCenterProximityListener { - float getProximityMinValue(); - - float getProximityMaxValue(); - - float getCurrentProximityValue(); - - void setScalingAnimatorValue(float value); -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java deleted file mode 100644 index 6b725419..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/ExtendedViewHolder.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear.settings; - -import android.animation.ObjectAnimator; -import android.support.wearable.view.WearableListView; -import android.view.View; - - -public class ExtendedViewHolder extends WearableListView.ViewHolder { - public static final long DEFAULT_ANIMATION_DURATION = 150; - - private ObjectAnimator mScalingUpAnimator; - - private ObjectAnimator mScalingDownAnimator; - - private float mMinValue; - - private float mMaxValue; - - public ExtendedViewHolder(View itemView) { - super(itemView); - if (itemView instanceof ExtendedOnCenterProximityListener) { - ExtendedOnCenterProximityListener item = - (ExtendedOnCenterProximityListener) itemView; - mMinValue = item.getProximityMinValue(); - item.setScalingAnimatorValue(mMinValue); - mMaxValue = item.getProximityMaxValue(); - mScalingUpAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue", mMinValue, - mMaxValue); - mScalingUpAnimator.setDuration(DEFAULT_ANIMATION_DURATION); - mScalingDownAnimator = ObjectAnimator.ofFloat(item, "scalingAnimatorValue", - mMaxValue, mMinValue); - mScalingDownAnimator.setDuration(DEFAULT_ANIMATION_DURATION); - } - } - - public void onCenterProximity(boolean isCentralItem, boolean animate) { - if (!(itemView instanceof ExtendedOnCenterProximityListener)) { - return; - } - ExtendedOnCenterProximityListener item = (ExtendedOnCenterProximityListener) itemView; - if (isCentralItem) { - if (animate) { - mScalingDownAnimator.cancel(); - if (!mScalingUpAnimator.isRunning()) { - mScalingUpAnimator.setFloatValues(item.getCurrentProximityValue(), - mMaxValue); - mScalingUpAnimator.start(); - } - } else { - mScalingUpAnimator.cancel(); - item.setScalingAnimatorValue(item.getProximityMaxValue()); - } - } else { - mScalingUpAnimator.cancel(); - if (animate) { - if (!mScalingDownAnimator.isRunning()) { - mScalingDownAnimator.setFloatValues(item.getCurrentProximityValue(), - mMinValue); - mScalingDownAnimator.start(); - } - } else { - mScalingDownAnimator.cancel(); - item.setScalingAnimatorValue(item.getProximityMinValue()); - } - } - super.onCenterProximity(isCentralItem, animate); - } -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java deleted file mode 100644 index 0e0adcbb..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear.settings; - -import android.content.Context; -import android.content.res.Resources; -import android.support.wearable.view.WearableListView; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.android.packageinstaller.R; -import com.android.packageinstaller.permission.model.AppPermissionGroup; - -public final class PermissionsSettingsAdapter extends SettingsAdapter<AppPermissionGroup> { - private Resources mRes; - - public PermissionsSettingsAdapter(Context context) { - super(context, R.layout.permissions_settings_item); - mRes = context.getResources(); - } - - @Override - public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new PermissionsViewHolder(new PermissionsSettingsItem(parent.getContext())); - } - - @Override - public void onBindViewHolder(WearableListView.ViewHolder holder, int position) { - super.onBindViewHolder(holder, position); - PermissionsViewHolder viewHolder = (PermissionsViewHolder) holder; - AppPermissionGroup group = get(position).data; - - if (group.isPolicyFixed()) { - viewHolder.imageView.setEnabled(false); - viewHolder.textView.setEnabled(false); - viewHolder.state.setEnabled(false); - viewHolder.state.setText( - mRes.getString(R.string.permission_summary_enforced_by_policy)); - } else { - viewHolder.imageView.setEnabled(true); - viewHolder.textView.setEnabled(true); - viewHolder.state.setEnabled(true); - - if (group.areRuntimePermissionsGranted()) { - viewHolder.state.setText(R.string.generic_enabled); - } else { - viewHolder.state.setText(R.string.generic_disabled); - } - } - } - - private static final class PermissionsViewHolder extends SettingsAdapter.SettingsItemHolder { - public final TextView state; - - public PermissionsViewHolder(View view) { - super(view); - state = (TextView) view.findViewById(R.id.state); - } - } - - private class PermissionsSettingsItem extends SettingsItem { - private final TextView mState; - private final float mCenteredAlpha = 1.0f; - private final float mNonCenteredAlpha = 0.5f; - - public PermissionsSettingsItem (Context context) { - super(context); - mState = (TextView) findViewById(R.id.state); - } - - @Override - public void onCenterPosition(boolean animate) { - mImage.setAlpha(mImage.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha); - mText.setAlpha(mText.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha); - mState.setAlpha(mState.isEnabled() ? mCenteredAlpha : mNonCenteredAlpha); - } - - @Override - public void onNonCenterPosition(boolean animate) { - mImage.setAlpha(mNonCenteredAlpha); - mText.setAlpha(mNonCenteredAlpha); - mState.setAlpha(mNonCenteredAlpha); - } - } -} - diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java deleted file mode 100644 index baf1a2b4..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/SettingsAdapter.java +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear.settings; - -import android.content.Context; -import android.support.wearable.view.CircledImageView; -import android.support.wearable.view.WearableListView; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.TextView; - -import com.android.packageinstaller.R; - -import java.util.ArrayList; - -/** - * Common adapter for settings views. Maintains a list of 'Settings', consisting of a name, - * icon and optional activity-specific data. - */ -public class SettingsAdapter<T> extends WearableListView.Adapter { - private static final String TAG = "SettingsAdapter"; - private final Context mContext; - - public static final class Setting<S> { - public static final int ID_INVALID = -1; - - public final int id; - public int nameResourceId; - public CharSequence name; - public int iconResource; - public boolean inProgress; - public S data; - - public Setting(CharSequence name, int iconResource, S data) { - this(name, iconResource, data, ID_INVALID); - } - - public Setting(CharSequence name, int iconResource, S data, int id) { - this.name = name; - this.iconResource = iconResource; - this.data = data; - this.inProgress = false; - this.id = id; - } - - public Setting(int nameResource, int iconResource, S data, int id) { - this.nameResourceId = nameResource; - this.iconResource = iconResource; - this.data = data; - this.inProgress = false; - this.id = id; - } - - public Setting(int nameResource, int iconResource, int id) { - this.nameResourceId = nameResource; - this.iconResource = iconResource; - this.data = null; - this.inProgress = false; - this.id = id; - } - - public Setting(CharSequence name, int iconResource, int id) { - this(name, iconResource, null, id); - } - - } - - private final int mItemLayoutId; - private final float mDefaultCircleRadiusPercent; - private final float mSelectedCircleRadiusPercent; - - protected ArrayList<Setting<T>> mSettings = new ArrayList<Setting<T>>(); - - public SettingsAdapter(Context context, int itemLayoutId) { - mContext = context; - mItemLayoutId = itemLayoutId; - mDefaultCircleRadiusPercent = context.getResources().getFraction( - R.dimen.default_settings_circle_radius_percent, 1, 1); - mSelectedCircleRadiusPercent = context.getResources().getFraction( - R.dimen.selected_settings_circle_radius_percent, 1, 1); - } - - @Override - public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new SettingsItemHolder(new SettingsItem(parent.getContext())); - } - - @Override - public void onBindViewHolder(WearableListView.ViewHolder holder, int position) { - Setting<T> setting = mSettings.get(position); - if (setting.iconResource == -1) { - ((SettingsItemHolder) holder).imageView.setVisibility(View.GONE); - } else { - ((SettingsItemHolder) holder).imageView.setVisibility(View.VISIBLE); - ((SettingsItemHolder) holder).imageView.setImageResource( - mSettings.get(position).iconResource); - } - Log.d(TAG, "onBindViewHolder " + setting.name + " " + setting.id + " " + setting - .nameResourceId); - if (setting.name == null && setting.nameResourceId != 0) { - setting.name = mContext.getString(setting.nameResourceId); - } - ((SettingsItemHolder) holder).textView.setText(setting.name); - } - - @Override - public int getItemCount() { - return mSettings.size(); - } - - public void addSetting(CharSequence name, int iconResource) { - addSetting(name, iconResource, null); - } - - public void addSetting(CharSequence name, int iconResource, T intent) { - addSetting(mSettings.size(), name, iconResource, intent); - } - - public void addSetting(int index, CharSequence name, int iconResource, T intent) { - addSetting(Setting.ID_INVALID, index, name, iconResource, intent); - } - - public void addSetting(int id, int index, CharSequence name, int iconResource, T intent) { - mSettings.add(index, new Setting<T>(name, iconResource, intent, id)); - notifyItemInserted(index); - } - - public void addSettingDontNotify(Setting<T> setting) { - mSettings.add(setting); - } - - public void addSetting(Setting<T> setting) { - mSettings.add(setting); - notifyItemInserted(mSettings.size() - 1); - } - - public void addSetting(int index, Setting<T> setting) { - mSettings.add(index, setting); - notifyItemInserted(index); - } - - /** - * Returns the index of the setting in the adapter based on the ID supplied when it was - * originally added. - * @param id the setting's id - * @return index in the adapter of the setting. -1 if not found. - */ - public int findSetting(int id) { - for (int i = mSettings.size() - 1; i >= 0; --i) { - Setting setting = mSettings.get(i); - - if (setting.id == id) { - return i; - } - } - - return -1; - } - - /** - * Removes a setting at the given index. - * @param index the index of the setting to be removed - */ - public void removeSetting(int index) { - mSettings.remove(index); - notifyDataSetChanged(); - } - - public void clearSettings() { - mSettings.clear(); - notifyDataSetChanged(); - } - - /** - * Updates a setting in place. - * @param index the index of the setting - * @param name the updated setting name - * @param iconResource the update setting icon - * @param intent the updated intent for the setting - */ - public void updateSetting(int index, CharSequence name, int iconResource, T intent) { - Setting<T> setting = mSettings.get(index); - setting.iconResource = iconResource; - setting.name = name; - setting.data = intent; - notifyItemChanged(index); - } - - public Setting<T> get(int position) { - return mSettings.get(position); - } - - protected static class SettingsItemHolder extends ExtendedViewHolder { - public final CircledImageView imageView; - public final TextView textView; - - public SettingsItemHolder(View itemView) { - super(itemView); - - imageView = ((CircledImageView) itemView.findViewById(R.id.image)); - textView = ((TextView) itemView.findViewById(R.id.text)); - } - } - - protected class SettingsItem extends FrameLayout implements ExtendedOnCenterProximityListener { - - protected final CircledImageView mImage; - protected final TextView mText; - - public SettingsItem(Context context) { - super(context); - View view = View.inflate(context, mItemLayoutId, null); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - FrameLayout.LayoutParams.MATCH_PARENT, - FrameLayout.LayoutParams.MATCH_PARENT); - params.gravity = Gravity.CENTER_VERTICAL; - addView(view, params); - mImage = (CircledImageView) findViewById(R.id.image); - mText = (TextView) findViewById(R.id.text); - } - - @Override - public float getProximityMinValue() { - return mDefaultCircleRadiusPercent; - } - - @Override - public float getProximityMaxValue() { - return mSelectedCircleRadiusPercent; - } - - @Override - public float getCurrentProximityValue() { - return mImage.getCircleRadiusPressedPercent(); - } - - @Override - public void setScalingAnimatorValue(float value) { - mImage.setCircleRadiusPercent(value); - mImage.setCircleRadiusPressedPercent(value); - } - - @Override - public void onCenterPosition(boolean animate) { - mImage.setAlpha(1f); - mText.setAlpha(1f); - } - - @Override - public void onNonCenterPosition(boolean animate) { - mImage.setAlpha(0.5f); - mText.setAlpha(0.5f); - } - - TextView getTextView() { - return mText; - } - } -} diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java b/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java deleted file mode 100644 index cf1c0fd0..00000000 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/ViewUtils.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -package com.android.packageinstaller.permission.ui.wear.settings; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; - -/** - * Utility to determine screen shape - */ -public class ViewUtils { - - public static boolean getIsCircular(Context context) { - return context.getResources().getConfiguration().isScreenRound(); - } - - /** - * Set the given {@code view} and all descendants to the given {@code enabled} state. - * - * @param view the parent view of a subtree of components whose enabled state must be set - * @param enabled the new enabled state of the subtree of components - */ - public static void setEnabled(View view, boolean enabled) { - view.setEnabled(enabled); - - if (view instanceof ViewGroup) { - final ViewGroup viewGroup = (ViewGroup) view; - for (int i = 0; i < viewGroup.getChildCount(); i++) { - setEnabled(viewGroup.getChildAt(i), enabled); - } - } - } -} diff --git a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java index 4b7a3947..2af641bc 100644 --- a/src/com/android/packageinstaller/permission/utils/ArrayUtils.java +++ b/src/com/android/packageinstaller/permission/utils/ArrayUtils.java @@ -16,6 +16,8 @@ package com.android.packageinstaller.permission.utils; +import android.text.TextUtils; + import java.util.Objects; public final class ArrayUtils { @@ -42,4 +44,20 @@ public final class ArrayUtils { } return -1; } + + public static String[] appendString(String[] cur, String val) { + if (cur == null) { + return new String[] { val }; + } + final int N = cur.length; + for (int i = 0; i < N; i++) { + if (TextUtils.equals(cur[i], val)) { + return cur; + } + } + String[] ret = new String[N + 1]; + System.arraycopy(cur, 0, ret, 0, N); + ret[N] = val; + return ret; + } } diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java index 22663e13..c2da5824 100644 --- a/src/com/android/packageinstaller/permission/utils/Utils.java +++ b/src/com/android/packageinstaller/permission/utils/Utils.java @@ -145,4 +145,14 @@ public final class Utils { return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0 && !launcherPkgs.contains(info.packageName); } + + public static boolean areGroupPermissionsIndividuallyControlled(Context context, String group) { + if (!context.getResources().getBoolean( + com.android.internal.R.bool.config_permissionReviewRequired)) { + return false; + } + return Manifest.permission_group.SMS.equals(group) + || Manifest.permission_group.PHONE.equals(group) + || Manifest.permission_group.CONTACTS.equals(group); + } } diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java index 2d4744c2..6f4e2bcf 100644 --- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java +++ b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java @@ -298,16 +298,6 @@ public class WearPackageInstallerService extends Service { } } - // Check permissions on both the new wearable package and also on the already installed - // wearable package. - // If the app is targeting API level 23, we will also start a service in ClockworkHome - // which will ultimately prompt the user to accept/reject permissions. - if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion, - permUri, wearablePerms, tempFile)) { - Log.w(TAG, "Wearable does not have enough permissions."); - return; - } - // Check that the wearable has all the features. boolean hasAllFeatures = true; if (pkg.reqFeatures != null) { @@ -325,6 +315,16 @@ public class WearPackageInstallerService extends Service { return; } + // Check permissions on both the new wearable package and also on the already installed + // wearable package. + // If the app is targeting API level 23, we will also start a service in ClockworkHome + // which will ultimately prompt the user to accept/reject permissions. + if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion, + permUri, wearablePerms, tempFile)) { + Log.w(TAG, "Wearable does not have enough permissions."); + return; + } + // Finally install the package. ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(assetUri, "r"); PackageInstallerFactory.getPackageInstaller(this).install(packageName, fd, @@ -355,11 +355,27 @@ public class WearPackageInstallerService extends Service { final String packageName = WearPackageArgs.getPackageName(argsBundle); final PackageManager pm = getPackageManager(); - PowerManager.WakeLock lock = getLock(this.getApplicationContext()); - pm.deletePackage(packageName, new PackageDeleteObserver(lock, startId), - PackageManager.DELETE_ALL_USERS); - startPermsServiceForUninstall(packageName); - Log.i(TAG, "Sent delete request for " + packageName); + try { + // Result ignored. + pm.getPackageInfo(packageName, 0); + + // Found package, send uninstall request. + PowerManager.WakeLock lock = getLock(this.getApplicationContext()); + + try { + pm.deletePackage(packageName, new PackageDeleteObserver(lock, startId), + PackageManager.DELETE_ALL_USERS); + } catch (IllegalArgumentException e) { + // Couldn't find the package, no need to call uninstall. + Log.w(TAG, "Could not find package, not deleting " + packageName, e); + } + + startPermsServiceForUninstall(packageName); + Log.i(TAG, "Sent delete request for " + packageName); + } catch (PackageManager.NameNotFoundException e) { + // Couldn't find the package, no need to call uninstall. + Log.w(TAG, "Could not find package, not deleting " + packageName, e); + } } private boolean checkPermissions(PackageParser.Package pkg, int companionSdkVersion, |