summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/BackupRestoreConfirmation/res/values-as-rIN/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ast-rES/strings.xml58
-rw-r--r--packages/BackupRestoreConfirmation/res/values-be/strings.xml58
-rw-r--r--packages/BackupRestoreConfirmation/res/values-br-rFR/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-bs-rBA/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-csb-rPL/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-cy/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-en-rPT/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-eo/strings.xml39
-rw-r--r--packages/BackupRestoreConfirmation/res/values-es-rCO/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-es-rMX/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-frp-rIT/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-fy-rNL/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ga-rIE/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-gd-rGB/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ku/strings.xml58
-rw-r--r--packages/BackupRestoreConfirmation/res/values-lb/strings.xml58
-rw-r--r--packages/BackupRestoreConfirmation/res/values-nl/strings.xml8
-rw-r--r--packages/BackupRestoreConfirmation/res/values-oc-rFR/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-or-rIN/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ug/strings.xml57
-rw-r--r--packages/CaptivePortalLogin/AndroidManifest.xml4
-rw-r--r--packages/CaptivePortalLogin/res/values-ast-rES/strings.xml11
-rw-r--r--packages/CaptivePortalLogin/res/values-be/strings.xml8
-rw-r--r--packages/CaptivePortalLogin/res/values-ku/strings.xml6
-rw-r--r--packages/CaptivePortalLogin/res/values-lb/strings.xml7
-rw-r--r--packages/CaptivePortalLogin/res/values-ug/strings.xml8
-rw-r--r--packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java41
-rw-r--r--packages/DefaultContainerService/res/values-as-rIN/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-ast-rES/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-be/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-br-rFR/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-bs-rBA/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-csb-rPL/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-cy/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-en-rPT/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-eo/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-es-rCO/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-es-rMX/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-fr/strings.xml2
-rw-r--r--packages/DefaultContainerService/res/values-frp-rIT/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-fy-rNL/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-ga-rIE/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-gd-rGB/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-kk-rKZ/strings.xml2
-rw-r--r--packages/DefaultContainerService/res/values-ku/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-lb/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-oc-rFR/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-or-rIN/strings.xml23
-rw-r--r--packages/DefaultContainerService/res/values-ug/strings.xml24
-rw-r--r--packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java1
-rw-r--r--packages/DocumentsUI/res/layout/activity.xml4
-rw-r--r--packages/DocumentsUI/res/layout/item_doc_grid.xml6
-rw-r--r--packages/DocumentsUI/res/values-as-rIN/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-ast-rES/strings.xml122
-rw-r--r--packages/DocumentsUI/res/values-be/strings.xml104
-rw-r--r--packages/DocumentsUI/res/values-br-rFR/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-bs-rBA/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-csb-rPL/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-cy/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-en-rPT/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-eo/strings.xml82
-rw-r--r--packages/DocumentsUI/res/values-es-rCO/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-es-rMX/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-frp-rIT/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-fy-rNL/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-ga-rIE/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-gd-rGB/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-ku/strings.xml98
-rw-r--r--packages/DocumentsUI/res/values-lb/strings.xml104
-rw-r--r--packages/DocumentsUI/res/values-oc-rFR/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-or-rIN/strings.xml67
-rw-r--r--packages/DocumentsUI/res/values-ug/strings.xml98
-rw-r--r--packages/DocumentsUI/res/values/cm_colors.xml23
-rw-r--r--packages/DocumentsUI/res/values/cm_dimens.xml21
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java2
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java6
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java3
-rw-r--r--packages/ExternalStorageProvider/res/values-as-rIN/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-ast-rES/strings.xml24
-rw-r--r--packages/ExternalStorageProvider/res/values-be/strings.xml24
-rw-r--r--packages/ExternalStorageProvider/res/values-br-rFR/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-bs-rBA/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-csb-rPL/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-cy/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-en-rPT/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-eo/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-es-rCO/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-es-rMX/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-frp-rIT/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-fy-rNL/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-ga-rIE/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-gd-rGB/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-ku/strings.xml24
-rw-r--r--packages/ExternalStorageProvider/res/values-lb/strings.xml24
-rw-r--r--packages/ExternalStorageProvider/res/values-oc-rFR/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-or-rIN/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-ug/strings.xml24
-rw-r--r--packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java8
-rw-r--r--packages/FusedLocation/res/values-as-rIN/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ast-rES/strings.xml6
-rw-r--r--packages/FusedLocation/res/values-be/strings.xml6
-rw-r--r--packages/FusedLocation/res/values-br-rFR/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-bs-rBA/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-csb-rPL/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-cy/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-en-rPT/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-eo/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-es-rCO/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-es-rMX/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-frp-rIT/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-fy-rNL/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ga-rIE/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-gd-rGB/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-kk-rKZ/strings.xml2
-rw-r--r--packages/FusedLocation/res/values-ku/strings.xml6
-rw-r--r--packages/FusedLocation/res/values-lb/strings.xml6
-rw-r--r--packages/FusedLocation/res/values-oc-rFR/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-or-rIN/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ug/strings.xml6
-rw-r--r--packages/InputDevices/res/values-as-rIN/strings.xml43
-rw-r--r--packages/InputDevices/res/values-ast-rES/strings.xml82
-rw-r--r--packages/InputDevices/res/values-be/strings.xml82
-rw-r--r--packages/InputDevices/res/values-br-rFR/strings.xml43
-rw-r--r--packages/InputDevices/res/values-bs-rBA/strings.xml43
-rw-r--r--packages/InputDevices/res/values-csb-rPL/strings.xml43
-rw-r--r--packages/InputDevices/res/values-cy/strings.xml43
-rw-r--r--packages/InputDevices/res/values-en-rPT/strings.xml43
-rw-r--r--packages/InputDevices/res/values-eo/strings.xml71
-rw-r--r--packages/InputDevices/res/values-es-rCO/strings.xml43
-rw-r--r--packages/InputDevices/res/values-es-rMX/strings.xml43
-rw-r--r--packages/InputDevices/res/values-frp-rIT/strings.xml43
-rw-r--r--packages/InputDevices/res/values-fy-rNL/strings.xml43
-rw-r--r--packages/InputDevices/res/values-ga-rIE/strings.xml43
-rw-r--r--packages/InputDevices/res/values-gd-rGB/strings.xml43
-rw-r--r--packages/InputDevices/res/values-ku/strings.xml76
-rw-r--r--packages/InputDevices/res/values-lb/strings.xml82
-rw-r--r--packages/InputDevices/res/values-oc-rFR/strings.xml43
-rw-r--r--packages/InputDevices/res/values-or-rIN/strings.xml43
-rw-r--r--packages/InputDevices/res/values-ug/strings.xml76
-rw-r--r--packages/Keyguard/Android.mk2
-rw-r--r--packages/Keyguard/res/layout/keyguard_pin_view.xml2
-rw-r--r--packages/Keyguard/res/layout/keyguard_sim_pin_view.xml2
-rw-r--r--packages/Keyguard/res/layout/keyguard_sim_puk_view.xml2
-rw-r--r--packages/Keyguard/res/layout/keyguard_status_view.xml14
-rw-r--r--packages/Keyguard/res/values-af/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-am/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-ar/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-as-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-as-rIN/strings.xml142
-rw-r--r--packages/Keyguard/res/values-ast-rES/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-ast-rES/strings.xml248
-rw-r--r--packages/Keyguard/res/values-az-rAZ/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-be/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-be/strings.xml143
-rw-r--r--packages/Keyguard/res/values-bg/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-bn-rBD/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-br-rFR/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-br-rFR/strings.xml142
-rw-r--r--packages/Keyguard/res/values-bs-rBA/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-bs-rBA/strings.xml142
-rw-r--r--packages/Keyguard/res/values-ca/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-cs/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-csb-rPL/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-csb-rPL/strings.xml142
-rw-r--r--packages/Keyguard/res/values-cy/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-cy/strings.xml142
-rw-r--r--packages/Keyguard/res/values-da/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-de/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-el/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-en-rAU/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-en-rGB/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-en-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-en-rPT/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-en-rPT/strings.xml142
-rw-r--r--packages/Keyguard/res/values-eo/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-eo/strings.xml145
-rw-r--r--packages/Keyguard/res/values-es-rCO/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-es-rCO/strings.xml142
-rw-r--r--packages/Keyguard/res/values-es-rMX/cm_strings.xml25
-rw-r--r--packages/Keyguard/res/values-es-rMX/strings.xml142
-rw-r--r--packages/Keyguard/res/values-es-rUS/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-es/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-et-rEE/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-eu-rES/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-fa/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-fi/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-fil-rPH/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-fr-rCA/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-fr/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-frp-rIT/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-frp-rIT/strings.xml142
-rw-r--r--packages/Keyguard/res/values-fy-rNL/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-fy-rNL/strings.xml142
-rw-r--r--packages/Keyguard/res/values-ga-rIE/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-ga-rIE/strings.xml142
-rw-r--r--packages/Keyguard/res/values-gd-rGB/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-gd-rGB/strings.xml142
-rw-r--r--packages/Keyguard/res/values-gl-rES/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-gu-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-hi/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-hr/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-hu/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-hy-rAM/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-in/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-is-rIS/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-it/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-iw/cm_strings.xml32
-rw-r--r--packages/Keyguard/res/values-ja/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-ka-rGE/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-kk-rKZ/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-km-rKH/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-kn-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-ko/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-ku/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-ku/strings.xml232
-rw-r--r--packages/Keyguard/res/values-ky-rKG/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-lb/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-lb/strings.xml235
-rw-r--r--packages/Keyguard/res/values-lo-rLA/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-lt/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-lv/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-mk-rMK/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-ml-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-mn-rMN/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-mr-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-ms-rMY/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-my-rMM/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-nb/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-ne-rNP/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-nl/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-oc-rFR/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-oc-rFR/strings.xml142
-rw-r--r--packages/Keyguard/res/values-or-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-or-rIN/strings.xml142
-rw-r--r--packages/Keyguard/res/values-pa-rIN/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-pl/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-pt-rBR/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-pt-rPT/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-rm/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-ro/cm_strings.xml25
-rw-r--r--packages/Keyguard/res/values-ru/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-si-rLK/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-sk/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-sl/cm_strings.xml32
-rw-r--r--packages/Keyguard/res/values-sq-rAL/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-sr/cm_strings.xml31
-rw-r--r--packages/Keyguard/res/values-sv/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-sw/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-ta-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-te-rIN/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-th/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-tr/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-ug/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-ug/strings.xml202
-rw-r--r--packages/Keyguard/res/values-uk/cm_strings.xml30
-rw-r--r--packages/Keyguard/res/values-ur-rPK/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-uz-rUZ/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values-vi/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-zh-rCN/cm_strings.xml29
-rw-r--r--packages/Keyguard/res/values-zh-rHK/cm_strings.xml24
-rw-r--r--packages/Keyguard/res/values-zh-rTW/cm_strings.xml26
-rw-r--r--packages/Keyguard/res/values-zu/cm_strings.xml23
-rw-r--r--packages/Keyguard/res/values/bools.xml1
-rw-r--r--packages/Keyguard/res/values/cm_colors.xml19
-rw-r--r--packages/Keyguard/res/values/cm_strings.xml32
-rw-r--r--packages/Keyguard/res/values/config.xml6
-rw-r--r--packages/Keyguard/src/com/android/keyguard/CarrierText.java94
-rw-r--r--packages/Keyguard/src/com/android/keyguard/EmergencyButton.java10
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java1
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java38
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java9
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java8
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java17
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java91
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java7
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java21
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java57
-rw-r--r--packages/Keyguard/src/com/android/keyguard/NumPadKey.java39
-rw-r--r--packages/PrintSpooler/res/values-as-rIN/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-ast-rES/strings.xml179
-rw-r--r--packages/PrintSpooler/res/values-be/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-br-rFR/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-bs-rBA/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-csb-rPL/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-cy/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-en-rPT/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-eo/strings.xml110
-rw-r--r--packages/PrintSpooler/res/values-es-rCO/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-es-rMX/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-frp-rIT/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-fy-rNL/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-ga-rIE/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-gd-rGB/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-ku/strings.xml170
-rw-r--r--packages/PrintSpooler/res/values-lb/strings.xml167
-rw-r--r--packages/PrintSpooler/res/values-oc-rFR/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-or-rIN/strings.xml93
-rw-r--r--packages/PrintSpooler/res/values-ug/strings.xml139
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/renderer/PdfManipulationService.java5
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java24
-rw-r--r--packages/SettingsLib/res/drawable-hdpi/activities_icon.pngbin0 -> 2399 bytes
-rw-r--r--packages/SettingsLib/res/drawable-ldrtl-hdpi/ic_bt_cellphone.pngbin4349 -> 725 bytes
-rw-r--r--packages/SettingsLib/res/drawable-ldrtl-mdpi/ic_bt_cellphone.pngbin3872 -> 511 bytes
-rw-r--r--packages/SettingsLib/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.pngbin4781 -> 867 bytes
-rw-r--r--packages/SettingsLib/res/drawable-mdpi/activities_icon.pngbin0 -> 1702 bytes
-rw-r--r--packages/SettingsLib/res/drawable-xhdpi/activities_icon.pngbin0 -> 2999 bytes
-rw-r--r--packages/SettingsLib/res/drawable-xxhdpi/activities_icon.pngbin0 -> 4977 bytes
-rw-r--r--packages/SettingsLib/res/drawable-xxxhdpi/activities_icon.pngbin0 -> 7498 bytes
-rw-r--r--packages/SettingsLib/res/values-af/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ar/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-as-rIN/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-as-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-as-rIN/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-ast-rES/arrays.xml79
-rw-r--r--packages/SettingsLib/res/values-ast-rES/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ast-rES/strings.xml213
-rw-r--r--packages/SettingsLib/res/values-be/arrays.xml53
-rw-r--r--packages/SettingsLib/res/values-be/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml132
-rw-r--r--packages/SettingsLib/res/values-bg/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-br-rFR/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-br-rFR/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-bs-rBA/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-bs-rBA/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-ca/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-cs/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-csb-rPL/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-csb-rPL/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-cy/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-cy/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-da/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-de/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-el/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-en-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-en-rPT/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-en-rPT/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-eo/arrays.xml79
-rw-r--r--packages/SettingsLib/res/values-eo/strings.xml129
-rw-r--r--packages/SettingsLib/res/values-es-rCO/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-es-rCO/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-es-rMX/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-es-rMX/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-es-rMX/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-es-rUS/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-es/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-et-rEE/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-eu-rES/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-fi/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-fr/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-frp-rIT/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-frp-rIT/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-fy-rNL/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-fy-rNL/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-ga-rIE/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-ga-rIE/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-gd-rGB/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-gd-rGB/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-gl-rES/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-gu-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-hr/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-hu/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-in/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-it/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-iw/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ja/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-kn-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ko/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ku/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-ku/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-lb/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-lb/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-lb/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-ml-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-mr-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-nb/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-nl/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-oc-rFR/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-oc-rFR/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-or-rIN/arrays.xml27
-rw-r--r--packages/SettingsLib/res/values-or-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-or-rIN/strings.xml122
-rw-r--r--packages/SettingsLib/res/values-pl/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ro/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ru/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-sl/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-sr/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-sv/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ta-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-te-rIN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-th/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-tr/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ug/arrays.xml53
-rw-r--r--packages/SettingsLib/res/values-ug/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-ug/strings.xml130
-rw-r--r--packages/SettingsLib/res/values-uk/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-vi/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/cm_strings.xml27
-rw-r--r--packages/SettingsLib/res/values/cm_dimens.xml19
-rw-r--r--packages/SettingsLib/res/values/cm_strings.xml26
-rw-r--r--packages/SettingsLib/res/values/dimens.xml4
-rw-r--r--packages/SettingsLib/res/values/strings.xml36
-rw-r--r--packages/SettingsLib/res/xml/timezones.xml1
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/AppItem.java85
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java254
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/Utils.java84
-rw-r--r--[-rwxr-xr-x]packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java34
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java223
-rwxr-xr-x[-rw-r--r--]packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothDeviceFilter.java4
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java29
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/DunServerProfile.java162
-rwxr-xr-x[-rw-r--r--]packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java4
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java57
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java9
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java336
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java45
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java136
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/ChartData.java27
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/ChartDataLoader.java145
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/SummaryForAllUidLoader.java79
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/UidDetail.java27
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java194
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java13
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java14
-rw-r--r--packages/SettingsProvider/Android.mk2
-rw-r--r--packages/SettingsProvider/res/mipmap-hdpi/ic_launcher_settings.pngbin8822 -> 5946 bytes
-rw-r--r--packages/SettingsProvider/res/mipmap-mdpi/ic_launcher_settings.pngbin5362 -> 3589 bytes
-rw-r--r--packages/SettingsProvider/res/mipmap-xhdpi/ic_launcher_settings.pngbin12096 -> 8605 bytes
-rw-r--r--packages/SettingsProvider/res/mipmap-xxhdpi/ic_launcher_settings.pngbin20300 -> 14731 bytes
-rw-r--r--packages/SettingsProvider/res/mipmap-xxxhdpi/ic_launcher_settings.pngbin27997 -> 21728 bytes
-rw-r--r--packages/SettingsProvider/res/values-as-rIN/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-ast-rES/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-be/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-br-rFR/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-bs-rBA/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-csb-rPL/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-cy/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-en-rPT/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-eo/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-es-rCO/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-es-rMX/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-frp-rIT/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-fy-rNL/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-ga-rIE/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-gd-rGB/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-ku/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-lb/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-oc-rFR/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-or-rIN/strings.xml22
-rw-r--r--packages/SettingsProvider/res/values-ug/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values/customize.xml63
-rw-r--r--packages/SettingsProvider/res/values/defaults.xml25
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java344
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java60
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java265
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java48
-rw-r--r--packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java2
-rw-r--r--packages/Shell/AndroidManifest.xml5
-rw-r--r--packages/Shell/res/values-as-rIN/strings.xml24
-rw-r--r--packages/Shell/res/values-ast-rES/strings.xml31
-rw-r--r--packages/Shell/res/values-be/strings.xml31
-rw-r--r--packages/Shell/res/values-br-rFR/strings.xml24
-rw-r--r--packages/Shell/res/values-bs-rBA/strings.xml24
-rw-r--r--packages/Shell/res/values-csb-rPL/strings.xml24
-rw-r--r--packages/Shell/res/values-cy/strings.xml24
-rw-r--r--packages/Shell/res/values-en-rPT/strings.xml24
-rw-r--r--packages/Shell/res/values-eo/strings.xml24
-rw-r--r--packages/Shell/res/values-es-rCO/strings.xml24
-rw-r--r--packages/Shell/res/values-es-rMX/strings.xml24
-rw-r--r--packages/Shell/res/values-frp-rIT/strings.xml24
-rw-r--r--packages/Shell/res/values-fy-rNL/strings.xml24
-rw-r--r--packages/Shell/res/values-ga-rIE/strings.xml24
-rw-r--r--packages/Shell/res/values-gd-rGB/strings.xml24
-rw-r--r--packages/Shell/res/values-ku/strings.xml29
-rw-r--r--packages/Shell/res/values-lb/strings.xml30
-rw-r--r--packages/Shell/res/values-oc-rFR/strings.xml24
-rw-r--r--packages/Shell/res/values-or-rIN/strings.xml24
-rw-r--r--packages/Shell/res/values-ug/strings.xml31
-rw-r--r--packages/Shell/res/values/cm_strings.xml20
-rw-r--r--packages/Shell/src/com/android/shell/BugreportReceiver.java15
-rw-r--r--packages/StatementService/res/values-ast-rES/strings.xml19
-rw-r--r--packages/StatementService/res/values-ug/strings.xml19
-rw-r--r--packages/SystemUI/Android.mk8
-rw-r--r--packages/SystemUI/AndroidManifest.xml27
-rw-r--r--packages/SystemUI/AndroidManifest_cm.xml89
-rw-r--r--packages/SystemUI/proguard.flags2
-rw-r--r--packages/SystemUI/res/anim/battery_circle.xml23
-rw-r--r--packages/SystemUI/res/anim/battery_landscape.xml23
-rw-r--r--packages/SystemUI/res/anim/battery_portrait.xml23
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_longtomed.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_longtoshort.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort_reverse.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_shorttolong.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_staymed.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_tolong.xml7
-rw-r--r--packages/SystemUI/res/anim/ic_qs_screen_timeout_tomed.xml7
-rwxr-xr-xpackages/SystemUI/res/anim/ic_qs_tile_delete_disable_cross_anim.xml31
-rwxr-xr-xpackages/SystemUI/res/anim/ic_qs_tile_delete_disable_mask_anim.xml25
-rwxr-xr-xpackages/SystemUI/res/anim/ic_qs_tile_delete_disable_root_anim.xml24
-rwxr-xr-xpackages/SystemUI/res/drawable-hdpi/ic_mini_settings.pngbin0 -> 192 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.pngbin749 -> 385 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_add.pngbin0 -> 536 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_land.pngbin0 -> 532 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_side.pngbin0 -> 992 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_side.pngbin0 -> 1300 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_left.pngbin0 -> 1284 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_right.pngbin0 -> 1307 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big.pngbin0 -> 744 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big_land.pngbin0 -> 744 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_recent_side.pngbin0 -> 1226 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.pngbin0 -> 1042 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.pngbin0 -> 1016 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_side.pngbin0 -> 1440 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_notify_image.pngbin846 -> 0 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.pngbin1112 -> 0 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-mdpi/ic_mini_settings.pngbin0 -> 133 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.pngbin507 -> 267 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_add.pngbin0 -> 321 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_land.pngbin0 -> 320 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_side.pngbin0 -> 1083 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_side.pngbin0 -> 1177 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_left.pngbin0 -> 1213 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_right.pngbin0 -> 1218 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big.pngbin0 -> 487 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big_land.pngbin0 -> 479 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_recent_side.pngbin0 -> 1151 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.pngbin0 -> 650 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.pngbin0 -> 641 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_side.pngbin0 -> 1266 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_notify_image.pngbin691 -> 0 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.pngbin850 -> 0 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-xhdpi/ic_mini_settings.pngbin0 -> 218 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.pngbin1006 -> 519 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add.pngbin0 -> 552 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_land.pngbin0 -> 543 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_side.pngbin0 -> 517 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_side.pngbin0 -> 3434 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_left.pngbin0 -> 1388 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_right.pngbin0 -> 1383 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big.pngbin0 -> 898 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big_land.pngbin0 -> 880 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_recent_side.pngbin0 -> 3209 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.pngbin0 -> 1457 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.pngbin0 -> 1409 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_side.pngbin0 -> 3766 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_notify_image.pngbin981 -> 0 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.pngbin1418 -> 0 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-xxhdpi/ic_mini_settings.pngbin0 -> 324 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.pngbin1823 -> 775 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add.pngbin0 -> 889 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add_land.pngbin0 -> 891 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_left.pngbin0 -> 1632 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_right.pngbin0 -> 1770 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big.pngbin0 -> 1444 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big_land.pngbin0 -> 1479 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search.pngbin0 -> 2566 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search_land.pngbin0 -> 2769 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/stat_notify_image.pngbin1458 -> 0 bytes
-rw-r--r--packages/SystemUI/res/drawable-xxhdpi/stat_notify_image_error.pngbin1923 -> 0 bytes
-rwxr-xr-xpackages/SystemUI/res/drawable-xxxhdpi/ic_mini_settings.pngbin0 -> 401 bytes
-rw-r--r--packages/SystemUI/res/drawable/cid.xml33
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_bolt.xml27
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_circle.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_circle_avd.xml24
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_circle_fill.xml30
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_circle_frame.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_landscape.xml37
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_landscape_avd.xml24
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_landscape_fill.xml33
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_landscape_frame.xml32
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_portrait.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_portrait_avd.xml24
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_portrait_fill.xml33
-rw-r--r--packages/SystemUI/res/drawable/ic_battery_portrait_frame.xml33
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_adb.xml58
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_ime_selector.xml29
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_live_display.xml29
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_next_alarm.xml30
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_su.xml39
-rw-r--r--packages/SystemUI/res/drawable/ic_dynamic_qs_themes.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_empty_space.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_keyboard_arrow_down.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_keyboard_arrow_left.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_keyboard_arrow_right.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_keyboard_arrow_up.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_lockscreen_shortcuts_blank.xml30
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_ambientdisplay_off.xml58
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_ambientdisplay_on.xml51
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_battery_saver_off.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_battery_saver_on.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_caffeine_off.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_caffeine_on.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_compass_off.xml32
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_compass_on.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_dnd_on_priority.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_edit_tiles.xml30
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_heads_up_off.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_heads_up_on.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_location_battery_saving.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_location_off.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_lock_screen_off.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_lock_screen_on.xml14
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_network_adb_off.xml32
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_network_adb_on.xml35
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_nfc_off.xml32
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_nfc_on.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_perf_profile.xml34
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_profiles_off.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_profiles_on.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_avd.xml12
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_reverse_avd.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_avd.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_reverse_avd.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_avd.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_reverse_avd.xml13
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_screen_timeout_vector.xml53
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml50
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_signal_hp.xml27
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_sync_off.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_sync_on.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_tile_category_other.xml23
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_tile_category_system.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_tile_contract.xml24
-rwxr-xr-xpackages/SystemUI/res/drawable/ic_qs_tile_delete.xml27
-rwxr-xr-xpackages/SystemUI/res/drawable/ic_qs_tile_delete_disable.xml40
-rwxr-xr-xpackages/SystemUI/res/drawable/ic_qs_tile_delete_disable_avd.xml28
-rwxr-xr-xpackages/SystemUI/res/drawable/ic_qs_tile_delete_enable.xml40
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_tile_expand.xml24
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_usb_tether_off.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_usb_tether_on.xml25
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_volume_panel.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_settings.xml39
-rw-r--r--packages/SystemUI/res/drawable/ic_volume_notification.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_volume_notification_mute.xml26
-rw-r--r--packages/SystemUI/res/drawable/ic_volume_ringer.xml14
-rw-r--r--packages/SystemUI/res/drawable/lockscreen_shortcuts_phone_background.xml21
-rw-r--r--packages/SystemUI/res/drawable/lockscreen_target_background.xml20
-rw-r--r--packages/SystemUI/res/drawable/notification_guts_ic_ringer_mute.xml20
-rw-r--r--packages/SystemUI/res/drawable/notification_guts_ic_settings.xml20
-rw-r--r--packages/SystemUI/res/drawable/notification_guts_queue_bg.xml27
-rw-r--r--packages/SystemUI/res/drawable/qs_tile_background_drag.xml22
-rw-r--r--packages/SystemUI/res/drawable/queue_bg.xml44
-rw-r--r--packages/SystemUI/res/drawable/queue_gradient.xml23
-rw-r--r--packages/SystemUI/res/drawable/queue_row_background.xml22
-rw-r--r--packages/SystemUI/res/drawable/stat_notify_image.xml27
-rw-r--r--packages/SystemUI/res/drawable/stat_notify_image_error.xml27
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_1.xml28
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_2.xml31
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_3.xml31
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_4.xml31
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_5.xml31
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml50
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_fully_connected_hp.xml27
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_data_roaming.xml22
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_dnd_priority.xml28
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_su.xml15
-rw-r--r--packages/SystemUI/res/drawable/volume_dialog_background.xml2
-rw-r--r--packages/SystemUI/res/drawable/zen_mode_panel_background.xml24
-rw-r--r--packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_land.xml115
-rw-r--r--packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_port.xml132
-rw-r--r--packages/SystemUI/res/layout-sw600dp/navigation_bar.xml324
-rw-r--r--packages/SystemUI/res/layout/cmland.xml104
-rw-r--r--packages/SystemUI/res/layout/keyguard_bottom_area.xml10
-rw-r--r--packages/SystemUI/res/layout/keyguard_status_bar.xml16
-rw-r--r--packages/SystemUI/res/layout/lockscreen_shortcuts.xml65
-rw-r--r--packages/SystemUI/res/layout/mid_navigation_bar_land.xml130
-rw-r--r--packages/SystemUI/res/layout/mid_navigation_bar_port.xml126
-rw-r--r--packages/SystemUI/res/layout/mland.xml4
-rw-r--r--packages/SystemUI/res/layout/mland_scorefield.xml2
-rw-r--r--packages/SystemUI/res/layout/mobile_signal_group.xml57
-rw-r--r--packages/SystemUI/res/layout/navigation_bar.xml198
-rw-r--r--packages/SystemUI/res/layout/navigation_bar_edit_menu_item.xml44
-rw-r--r--packages/SystemUI/res/layout/notification_guts.xml14
-rw-r--r--packages/SystemUI/res/layout/notification_guts_queue.xml137
-rw-r--r--packages/SystemUI/res/layout/profiles_detail_view.xml31
-rw-r--r--packages/SystemUI/res/layout/qs_custom_detail.xml59
-rw-r--r--packages/SystemUI/res/layout/qs_custom_detail_remote.xml25
-rw-r--r--packages/SystemUI/res/layout/qs_detail.xml14
-rw-r--r--packages/SystemUI/res/layout/qs_detail_header.xml13
-rw-r--r--packages/SystemUI/res/layout/qs_detail_item.xml3
-rw-r--r--packages/SystemUI/res/layout/qs_detail_items.xml6
-rw-r--r--packages/SystemUI/res/layout/qs_detail_items_grid.xml27
-rw-r--r--packages/SystemUI/res/layout/qs_detail_items_list.xml54
-rw-r--r--packages/SystemUI/res/layout/qs_panel.xml7
-rw-r--r--packages/SystemUI/res/layout/qs_settings.xml97
-rw-r--r--packages/SystemUI/res/layout/qs_settings_row.xml34
-rw-r--r--packages/SystemUI/res/layout/qs_tile_category_row.xml55
-rw-r--r--packages/SystemUI/res/layout/qs_tile_child_row.xml42
-rw-r--r--packages/SystemUI/res/layout/qs_tile_top.xml87
-rw-r--r--packages/SystemUI/res/layout/qs_user_detail_item.xml2
-rw-r--r--packages/SystemUI/res/layout/queue_adapter_row.xml56
-rw-r--r--packages/SystemUI/res/layout/quick_settings_notification_brightness_dialog.xml31
-rw-r--r--packages/SystemUI/res/layout/recents_empty.xml6
-rw-r--r--packages/SystemUI/res/layout/recents_search_bar.xml2
-rw-r--r--packages/SystemUI/res/layout/recents_task_view_header.xml4
-rw-r--r--packages/SystemUI/res/layout/screen_pinning_request.xml6
-rw-r--r--packages/SystemUI/res/layout/screen_pinning_request_text_area.xml10
-rw-r--r--packages/SystemUI/res/layout/signal_cluster_view.xml1
-rw-r--r--packages/SystemUI/res/layout/status_bar.xml47
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded.xml8
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded_header.xml81
-rw-r--r--packages/SystemUI/res/layout/status_bar_no_notifications.xml2
-rw-r--r--packages/SystemUI/res/layout/status_bar_no_recent_apps.xml2
-rw-r--r--packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml2
-rw-r--r--packages/SystemUI/res/layout/status_bar_notification_row_media.xml105
-rw-r--r--packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml2
-rw-r--r--packages/SystemUI/res/layout/status_bar_toggle_slider.xml2
-rw-r--r--packages/SystemUI/res/layout/super_status_bar.xml49
-rw-r--r--packages/SystemUI/res/layout/system_icons.xml17
-rw-r--r--packages/SystemUI/res/layout/volume_dialog.xml4
-rw-r--r--packages/SystemUI/res/layout/zen_mode_panel.xml2
-rw-r--r--packages/SystemUI/res/menu/recent_popup_menu.xml26
-rw-r--r--packages/SystemUI/res/values-af/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-af/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-am/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-am/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-ar/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ar/cm_strings.xml218
-rw-r--r--packages/SystemUI/res/values-as-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-as-rIN/cm_strings.xml219
-rw-r--r--packages/SystemUI/res/values-as-rIN/strings.xml459
-rw-r--r--packages/SystemUI/res/values-ast-rES/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ast-rES/cm_strings.xml222
-rw-r--r--packages/SystemUI/res/values-ast-rES/strings.xml860
-rw-r--r--packages/SystemUI/res/values-az-rAZ/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-az-rAZ/cm_strings.xml188
-rw-r--r--packages/SystemUI/res/values-be/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-be/cm_strings.xml213
-rw-r--r--packages/SystemUI/res/values-be/strings.xml470
-rw-r--r--packages/SystemUI/res/values-bg/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-bg/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-bn-rBD/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-bn-rBD/cm_strings.xml110
-rw-r--r--packages/SystemUI/res/values-br-rFR/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-br-rFR/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-br-rFR/strings.xml459
-rw-r--r--packages/SystemUI/res/values-bs-rBA/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-bs-rBA/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-bs-rBA/strings.xml459
-rw-r--r--packages/SystemUI/res/values-ca/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ca/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml4
-rw-r--r--packages/SystemUI/res/values-cs/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-cs/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml4
-rw-r--r--packages/SystemUI/res/values-csb-rPL/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-csb-rPL/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-csb-rPL/strings.xml459
-rw-r--r--packages/SystemUI/res/values-cy/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-cy/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-cy/strings.xml459
-rw-r--r--packages/SystemUI/res/values-da/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-da/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-de/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-de/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-de/strings.xml60
-rw-r--r--packages/SystemUI/res/values-el/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-el/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-el/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rAU/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-en-rAU/cm_strings.xml132
-rw-r--r--packages/SystemUI/res/values-en-rGB/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-en-rGB/cm_strings.xml97
-rw-r--r--packages/SystemUI/res/values-en-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-en-rIN/cm_strings.xml207
-rw-r--r--packages/SystemUI/res/values-en-rPT/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-en-rPT/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-en-rPT/strings.xml459
-rw-r--r--packages/SystemUI/res/values-eo/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-eo/cm_strings.xml174
-rw-r--r--packages/SystemUI/res/values-eo/strings.xml483
-rw-r--r--packages/SystemUI/res/values-es-rCO/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-es-rCO/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-es-rCO/strings.xml459
-rw-r--r--packages/SystemUI/res/values-es-rMX/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-es-rMX/cm_strings.xml124
-rw-r--r--packages/SystemUI/res/values-es-rMX/strings.xml459
-rw-r--r--packages/SystemUI/res/values-es-rUS/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-es-rUS/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml4
-rw-r--r--packages/SystemUI/res/values-es/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-es/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-et-rEE/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-et-rEE/cm_strings.xml224
-rw-r--r--packages/SystemUI/res/values-eu-rES/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-eu-rES/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-fa/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-fa/cm_strings.xml188
-rw-r--r--packages/SystemUI/res/values-fi/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-fi/cm_strings.xml225
-rw-r--r--packages/SystemUI/res/values-fil-rPH/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-fil-rPH/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-fr-rCA/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-fr-rCA/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fr/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-fr/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml4
-rw-r--r--packages/SystemUI/res/values-frp-rIT/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-frp-rIT/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-frp-rIT/strings.xml459
-rw-r--r--packages/SystemUI/res/values-fy-rNL/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-fy-rNL/cm_strings.xml97
-rw-r--r--packages/SystemUI/res/values-fy-rNL/strings.xml459
-rw-r--r--packages/SystemUI/res/values-ga-rIE/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ga-rIE/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-ga-rIE/strings.xml459
-rw-r--r--packages/SystemUI/res/values-gd-rGB/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-gd-rGB/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-gd-rGB/strings.xml459
-rw-r--r--packages/SystemUI/res/values-gl-rES/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-gl-rES/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-gl-rES/strings.xml4
-rw-r--r--packages/SystemUI/res/values-gu-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-gu-rIN/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-hdpi/cm_dimens.xml19
-rw-r--r--packages/SystemUI/res/values-hi/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-hi/cm_strings.xml175
-rw-r--r--packages/SystemUI/res/values-hr/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-hr/cm_strings.xml227
-rw-r--r--packages/SystemUI/res/values-hu/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-hu/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-hy-rAM/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-hy-rAM/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-hy-rAM/strings.xml6
-rw-r--r--packages/SystemUI/res/values-in/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-in/cm_strings.xml224
-rw-r--r--packages/SystemUI/res/values-is-rIS/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-is-rIS/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-it/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-it/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-it/strings.xml4
-rw-r--r--packages/SystemUI/res/values-iw/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-iw/cm_strings.xml228
-rw-r--r--packages/SystemUI/res/values-ja/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ja/cm_strings.xml224
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ka-rGE/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ka-rGE/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-km-rKH/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-km-rKH/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-kn-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-kn-rIN/cm_strings.xml219
-rw-r--r--packages/SystemUI/res/values-ko/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ko/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-ku/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ku/cm_strings.xml138
-rw-r--r--packages/SystemUI/res/values-ku/strings.xml647
-rw-r--r--packages/SystemUI/res/values-ky-rKG/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ky-rKG/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-land/cm_dimens.xml21
-rw-r--r--packages/SystemUI/res/values-lb/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-lb/cm_strings.xml222
-rw-r--r--packages/SystemUI/res/values-lb/strings.xml771
-rw-r--r--packages/SystemUI/res/values-lo-rLA/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-lo-rLA/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-lo-rLA/strings.xml2
-rw-r--r--packages/SystemUI/res/values-lt/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-lt/cm_strings.xml188
-rw-r--r--packages/SystemUI/res/values-lv/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-lv/cm_strings.xml110
-rw-r--r--packages/SystemUI/res/values-mdpi/cm_dimens.xml19
-rw-r--r--packages/SystemUI/res/values-mk-rMK/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-mk-rMK/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-mk-rMK/strings.xml10
-rw-r--r--packages/SystemUI/res/values-ml-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ml-rIN/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-ml-rIN/strings.xml2
-rw-r--r--packages/SystemUI/res/values-mn-rMN/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-mn-rMN/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-mr-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-mr-rIN/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-mr-rIN/strings.xml2
-rw-r--r--packages/SystemUI/res/values-ms-rMY/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ms-rMY/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-my-rMM/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-my-rMM/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-nb/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-nb/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ne-rNP/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ne-rNP/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-nl/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-nl/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml4
-rw-r--r--packages/SystemUI/res/values-oc-rFR/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-oc-rFR/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-oc-rFR/strings.xml459
-rw-r--r--packages/SystemUI/res/values-or-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-or-rIN/cm_strings.xml219
-rw-r--r--packages/SystemUI/res/values-or-rIN/strings.xml459
-rw-r--r--packages/SystemUI/res/values-pa-rIN/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-pa-rIN/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-pl/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-pl/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-pt-rBR/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-pt-rBR/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pt-rPT/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-pt-rPT/cm_strings.xml226
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml2
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml4
-rw-r--r--packages/SystemUI/res/values-rm/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-rm/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-ro/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ro/cm_strings.xml206
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ru/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ru/cm_strings.xml227
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml4
-rw-r--r--packages/SystemUI/res/values-si-rLK/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-si-rLK/cm_strings.xml110
-rw-r--r--packages/SystemUI/res/values-sk/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-sk/cm_strings.xml188
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sl/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-sl/cm_strings.xml228
-rw-r--r--packages/SystemUI/res/values-sq-rAL/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-sq-rAL/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-sr/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-sr/cm_strings.xml224
-rw-r--r--packages/SystemUI/res/values-sv/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-sv/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-sw/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-sw/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-ta-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ta-rIN/cm_strings.xml215
-rw-r--r--packages/SystemUI/res/values-te-rIN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-te-rIN/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-th/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-th/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-tr/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-tr/cm_strings.xml221
-rw-r--r--packages/SystemUI/res/values-ug/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-ug/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-ug/strings.xml604
-rw-r--r--packages/SystemUI/res/values-uk/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-uk/cm_strings.xml207
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml2
-rw-r--r--packages/SystemUI/res/values-ur-rPK/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-ur-rPK/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/strings.xml12
-rw-r--r--packages/SystemUI/res/values-vi/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-vi/cm_strings.xml220
-rw-r--r--packages/SystemUI/res/values-xhdpi/cm_dimens.xml19
-rw-r--r--packages/SystemUI/res/values-xxhdpi/cm_dimens.xml19
-rw-r--r--packages/SystemUI/res/values-zh-rCN/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-zh-rCN/cm_strings.xml225
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml16
-rw-r--r--packages/SystemUI/res/values-zh-rHK/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-zh-rHK/cm_strings.xml165
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zh-rTW/cm_arrays.xml41
-rw-r--r--packages/SystemUI/res/values-zh-rTW/cm_strings.xml186
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zu/cm_arrays.xml23
-rw-r--r--packages/SystemUI/res/values-zu/cm_strings.xml96
-rw-r--r--packages/SystemUI/res/values/arrays.xml2
-rw-r--r--packages/SystemUI/res/values/cm_arrays.xml125
-rw-r--r--packages/SystemUI/res/values/cm_attrs.xml75
-rw-r--r--packages/SystemUI/res/values/cm_colors.xml128
-rw-r--r--packages/SystemUI/res/values/cm_dimens.xml58
-rw-r--r--packages/SystemUI/res/values/cm_strings.xml283
-rw-r--r--packages/SystemUI/res/values/cm_styles.xml57
-rw-r--r--packages/SystemUI/res/values/colors.xml3
-rw-r--r--packages/SystemUI/res/values/config.xml23
-rw-r--r--packages/SystemUI/res/values/dimens.xml2
-rw-r--r--packages/SystemUI/res/values/vpi__attrs.xml44
-rw-r--r--packages/SystemUI/res/values/vpi__defaults.xml26
-rw-r--r--packages/SystemUI/res/xml/tuner_prefs.xml55
-rw-r--r--packages/SystemUI/res/xml/tuner_statusbar_icons.xml60
-rw-r--r--packages/SystemUI/src/com/android/systemui/BatteryLevelTextView.java139
-rwxr-xr-xpackages/SystemUI/src/com/android/systemui/BatteryMeterView.java980
-rw-r--r--packages/SystemUI/src/com/android/systemui/DockBatteryLevelTextView.java30
-rwxr-xr-xpackages/SystemUI/src/com/android/systemui/DockBatteryMeterView.java150
-rw-r--r--packages/SystemUI/src/com/android/systemui/EventLogTags.logtags25
-rw-r--r--packages/SystemUI/src/com/android/systemui/ExpandHelper.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/ImageWallpaper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/SwipeHelper.java98
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIApplication.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/GlowBackground.java83
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsActivity.java265
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsHelper.java201
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/SpamMessageProvider.java204
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/SpamOpenHelper.java46
-rw-r--r--packages/SystemUI/src/com/android/systemui/cm/UserContentObserver.java89
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/egg/CMLand.java43
-rw-r--r--packages/SystemUI/src/com/android/systemui/egg/MLand.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java6
-rwxr-xr-x[-rw-r--r--]packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java348
-rw-r--r--packages/SystemUI/src/com/android/systemui/power/PowerUI.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSBooleanSettingRow.java178
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSContainer.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsGrid.java154
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsList.java213
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java2331
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPage.java161
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanel.java135
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java377
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSSettings.java141
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTile.java89
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTileView.java158
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSViewPager.java105
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java130
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/AmbientDisplayTile.java107
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java136
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java86
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CaffeineTile.java202
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java41
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CompassTile.java194
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CustomQSTile.java349
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/EditTile.java98
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/HeadsUpTile.java107
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java90
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java216
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/LockscreenToggleTile.java163
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java158
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/PerfProfileTile.java258
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/ProfilesTile.java287
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenTimeoutTile.java344
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/SyncTile.java109
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/UsbTetherTile.java119
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/VolumeTile.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java116
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/Constants.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/Recents.java39
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java66
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessController.java247
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessDialog.java71
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java30
-rwxr-xr-x[-rw-r--r--]packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java309
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CustomTileData.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java66
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java69
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/MediaExpandableNotificationRow.java231
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/MediaNotificationGuts.java93
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/QueueView.java254
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/QueueViewRow.java100
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java87
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StackScrollerDecorView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java132
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/VisualizerView.java395
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BackButtonDrawable.java139
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BlurLayer.java196
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ClockController.java149
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java336
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java54
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java101
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarInsetLayout.java218
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavbarEditor.java580
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java414
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java688
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java266
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java1492
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java271
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java271
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java355
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java51
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java84
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java172
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java187
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ViewLinker.java76
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateRegistar.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java159
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java117
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonRipple.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java145
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java349
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java63
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java54
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SuController.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SuControllerImpl.java132
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java62
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherController.java33
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherControllerImpl.java184
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java279
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/StatusBarIconBlacklistFragment.java71
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java41
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/TunerService.java51
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java147
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java117
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java18
-rw-r--r--packages/SystemUI/src/com/viewpagerindicator/CirclePageIndicator.java527
-rw-r--r--packages/SystemUI/src/com/viewpagerindicator/PageIndicator.java63
-rw-r--r--packages/SystemUI/tests/Android.mk5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java7
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java15
-rw-r--r--packages/VpnDialogs/res/values-as-rIN/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-ast-rES/strings.xml48
-rw-r--r--packages/VpnDialogs/res/values-be/strings.xml48
-rw-r--r--packages/VpnDialogs/res/values-br-rFR/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-bs-rBA/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-csb-rPL/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-cy/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-en-rPT/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-eo/strings.xml29
-rw-r--r--packages/VpnDialogs/res/values-es-rCO/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-es-rMX/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-frp-rIT/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-fy-rNL/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-ga-rIE/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-gd-rGB/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-ku/strings.xml39
-rw-r--r--packages/VpnDialogs/res/values-lb/strings.xml47
-rw-r--r--packages/VpnDialogs/res/values-oc-rFR/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-or-rIN/strings.xml28
-rw-r--r--packages/VpnDialogs/res/values-ug/strings.xml39
-rw-r--r--packages/WAPPushManager/src/com/android/smspush/WapPushManager.java7
-rw-r--r--packages/WallpaperCropper/res/layout/actionbar_set_wallpaper.xml2
-rw-r--r--packages/WallpaperCropper/res/values-as-rIN/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-ast-rES/strings.xml26
-rw-r--r--packages/WallpaperCropper/res/values-be/strings.xml26
-rw-r--r--packages/WallpaperCropper/res/values-br-rFR/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-bs-rBA/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-csb-rPL/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-cy/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-en-rPT/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-eo/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-es-rCO/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-es-rMX/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-frp-rIT/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-fy-rNL/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-ga-rIE/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-gd-rGB/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-ku/strings.xml26
-rw-r--r--packages/WallpaperCropper/res/values-lb/strings.xml26
-rw-r--r--packages/WallpaperCropper/res/values-oc-rFR/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-or-rIN/strings.xml23
-rw-r--r--packages/WallpaperCropper/res/values-ug/strings.xml26
-rw-r--r--packages/WallpaperCropper/res/values/cm_colors.xml20
1200 files changed, 79375 insertions, 2805 deletions
diff --git a/packages/BackupRestoreConfirmation/res/values-as-rIN/strings.xml b/packages/BackupRestoreConfirmation/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-as-rIN/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ast-rES/strings.xml b/packages/BackupRestoreConfirmation/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..1e1bddf
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-ast-rES/strings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">Copia de seguranza completa</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <string name="restore_confirm_title">Restauración completa</string>
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <string name="backup_confirm_text">Solicitóse una copia de seguranza completa de tolos datos nun ordenador coneutáu. ¿Quies permitir la copia de seguranza?\n\nNun permitas la copia de seguranza si nun ficisti tu la solicitú.</string>
+ <!-- Button to allow a requested full backup to occur -->
+ <string name="allow_backup_button_label">Copia de seguranza de datos</string>
+ <!-- Button to refuse to allow the requested full backup -->
+ <string name="deny_backup_button_label">Nun facer copia de seguranza</string>
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <string name="restore_confirm_text">Solicitóse una restauración completa de tolos datos dende un ordenador coneutáu. ¿Quies permitir la restauración?\n\nNun tienes de permitir la restauración si nun ficisti tu la solicitú. Van sustituyise los datos actuales del preséu!</string>
+ <!-- Button to allow a requested full restore to occur -->
+ <string name="allow_restore_button_label">Restaurar datos</string>
+ <!-- Button to refuse to allow the requested full restore -->
+ <string name="deny_restore_button_label">Nun restaurar</string>
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <string name="current_password_text">Introduz la contraseña actual de copia de seguranza:</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <string name="device_encryption_restore_text">Introduz la contraseña de cifráu del preséu.</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <string name="device_encryption_backup_text">Introduz la contraseña de cifráu del preséu. Esta contraseña va usase pa cifrar el ficheru de copia de seguranza.</string>
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <string name="backup_enc_password_text">Introduz la contraseña que quieras usar pa cifrar los datos de la copia de seguranza completa. Si dexes esti campu baleru, va usase la to contraseña de copia de seguridá actual:</string>
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <string name="backup_enc_password_optional">Si quies cifrar los datos de la copia de seguranza completa, introduz la contraseña a continuación:</string>
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <string name="backup_enc_password_required">Como\'l preséu ta cifráu, necesítase cifrar la copia de seguranza. Escribi la contraseña:</string>
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <string name="restore_enc_password_text">Si los datos de restauración tán cifraos, introduz la contraseña:</string>
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <string name="toast_backup_started">Aniciando copia de seguranza...</string>
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <string name="toast_backup_ended">Finó la copia de seguridá</string>
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <string name="toast_restore_started">Aniciando restauración...</string>
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <string name="toast_restore_ended">Finó la restauración</string>
+ <!-- Text of a toast telling the user that the operation has timed out -->
+ <string name="toast_timeout">Tiempu d\'espera d\'operación escosáu</string>
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-be/strings.xml b/packages/BackupRestoreConfirmation/res/values-be/strings.xml
new file mode 100644
index 0000000..f3e2f14
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-be/strings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">Поўнае рэзервовае капіяванне</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <string name="restore_confirm_title">Поўнае аднаўленне</string>
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <string name="backup_confirm_text">Было прапанавана поўнае рэзервовае капіяванне ўсіх дадзеных на падлучаным настольным кампутары. Дазволіць гэта?\n\nКалі вы самі не запытвалі рэзервовае капiяванне, спынiце аперацыю.</string>
+ <!-- Button to allow a requested full backup to occur -->
+ <string name="allow_backup_button_label">Рэзервовае капіяванне дадзеных</string>
+ <!-- Button to refuse to allow the requested full backup -->
+ <string name="deny_backup_button_label">Не ствараць рэзервовыя копіі</string>
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <string name="restore_confirm_text">Запытана поўнае аднаўленне ўсіх дадзеных з падлучанага настольнага кампутара. Дазволіць гэта?\n\nКалі вы самі не запытвалі аднаўленне, не дазваляйце працягваць аперацыю. Гэта прывядзе да замены якіх-небудзь дадзеных, якія зараз знаходзяцца на прыладзе!</string>
+ <!-- Button to allow a requested full restore to occur -->
+ <string name="allow_restore_button_label">Аднавіць мае дадзеныя</string>
+ <!-- Button to refuse to allow the requested full restore -->
+ <string name="deny_restore_button_label">Не аднаўляць</string>
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <string name="current_password_text">Увядзіце ваш бягучы пароль рэзервовага капіявання ніжэй:</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <string name="device_encryption_restore_text">Увядзіце нiжэй пароль для расшыфравання прылады.</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <string name="device_encryption_backup_text">Увядзіце пароль для расшыфравання прылады. Ён таксама будзе выкарыстоўвацца для расшыфравання рэзервовай копіі.</string>
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <string name="backup_enc_password_text">Увядзіце пароль, які выкарыстоўваецца для шыфравання ўсіх дадзеных рэзервовага капіявання. Калі гэтае поле пакінуць пустым, будзе выкарыстоўвацца бягучы пароль рэзервовага капіявання:</string>
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <string name="backup_enc_password_optional">Калі вы жадаеце зашыфраваць усе дадзеныя рэзервовага капіявання, увядзіце пароль ніжэй:</string>
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <string name="backup_enc_password_required">У сувязі з тым, што ваша прылада зашыфраваная, трэба таксама зашыфраваць і рэзервовую копію. Калі ласка, увядзіце пароль:</string>
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <string name="restore_enc_password_text">Калі дадзеныя для аднаўлення зашыфраваныя, увядзіце пароль ніжэй:</string>
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <string name="toast_backup_started">Рэзервовае капіяванне...</string>
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <string name="toast_backup_ended">Рэзервовае капіяванне скончылася</string>
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <string name="toast_restore_started">Пачынаецца аднаўленне...</string>
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <string name="toast_restore_ended">Аднаўленне скончылася</string>
+ <!-- Text of a toast telling the user that the operation has timed out -->
+ <string name="toast_timeout">Тайм-аўт аперацыі</string>
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-br-rFR/strings.xml b/packages/BackupRestoreConfirmation/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-br-rFR/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-bs-rBA/strings.xml b/packages/BackupRestoreConfirmation/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-bs-rBA/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-csb-rPL/strings.xml b/packages/BackupRestoreConfirmation/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-csb-rPL/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-cy/strings.xml b/packages/BackupRestoreConfirmation/res/values-cy/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-cy/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-en-rPT/strings.xml b/packages/BackupRestoreConfirmation/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-en-rPT/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-eo/strings.xml b/packages/BackupRestoreConfirmation/res/values-eo/strings.xml
new file mode 100644
index 0000000..a57cb16
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-eo/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">Kompleta savkopio</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-es-rCO/strings.xml b/packages/BackupRestoreConfirmation/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-es-rCO/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-es-rMX/strings.xml b/packages/BackupRestoreConfirmation/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-es-rMX/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-frp-rIT/strings.xml b/packages/BackupRestoreConfirmation/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-frp-rIT/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-fy-rNL/strings.xml b/packages/BackupRestoreConfirmation/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-fy-rNL/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ga-rIE/strings.xml b/packages/BackupRestoreConfirmation/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-ga-rIE/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-gd-rGB/strings.xml b/packages/BackupRestoreConfirmation/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-gd-rGB/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ku/strings.xml b/packages/BackupRestoreConfirmation/res/values-ku/strings.xml
new file mode 100644
index 0000000..c6aa517
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-ku/strings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">پاراستنی گشت</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <string name="restore_confirm_title">گه‌ڕاندنه‌وه‌ی گشت</string>
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <string name="backup_confirm_text">پاراستنێکی گشتیی بۆ هه‌موو ئه‌و داتایانه‌ی که‌ په‌یوه‌ست کراوه‌ به‌ کۆمپیوته‌ره‌وه‌ داواکراوه‌. ده‌ته‌وێت ئه‌مه‌ ڕووبدات؟\n\n ئه‌گه‌ر خۆت ئه‌م داواکارییه‌ت نه‌کردووه‌، مه‌هێڵه‌ ئه‌م کاره‌ ڕووبدات.</string>
+ <!-- Button to allow a requested full backup to occur -->
+ <string name="allow_backup_button_label">داتاکانم بپارێزه‌</string>
+ <!-- Button to refuse to allow the requested full backup -->
+ <string name="deny_backup_button_label">مه‌یپارێزه‌</string>
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <string name="restore_confirm_text">گه‌ڕانه‌وه‌ی ته‌واوی داتاکان بۆ په‌یوه‌ندی کردن به‌ ڕوونمای کۆمپیوته‌ره‌وه‌ داواکراوه‌ ، ئه‌ته‌وێ ئه‌مه‌ ڕووبدات؟\n\n ئه‌گه‌ر خۆت داوای ئه‌م پاراستنه‌ت نه‌کردووه‌، مه‌هێڵه‌ ئه‌م کاره‌ ڕووبدات. ئه‌گه‌رنا شوێنی هه‌موو ئه‌و داتایانه‌ ده‌گرێته‌وه‌ که‌ ئێستا له‌ ئامێره‌که‌دایه‌!</string>
+ <!-- Button to allow a requested full restore to occur -->
+ <string name="allow_restore_button_label">داتاکانم بگه‌ڕێنه‌ره‌وه‌</string>
+ <!-- Button to refuse to allow the requested full restore -->
+ <string name="deny_restore_button_label">مه‌یگه‌ڕێنه‌ره‌وه‌</string>
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <string name="current_password_text">تکایه‌ تێپه‌ڕه‌وشه‌ی پاراستن بنوسه‌ له‌ خواره‌وه‌:</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <string name="device_encryption_restore_text">تکایه تێپه‌ڕه‌وشه‌ی ئامێره‌ به‌ هێماکراوه‌که‌ت بنوسه‌.</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <string name="device_encryption_backup_text">تکایه تێپه‌ڕه‌وشه‌ی ئامێره‌ ڕه‌مزکراوه‌که‌ت له‌ خواره‌وه‌بنوسه‌. ئه‌مه‌ ده‌توانرێت بۆ ڕه‌مزکردنی ئه‌رشیفی پاراستنیش به‌کار بهێنرێت.</string>
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <string name="backup_enc_password_text">تکایه‌ تێپه‌ڕه‌وشه‌یه‌ک بنوسه‌ بۆ به‌کارهێنانی به‌ هێماکردنی پاراستنی ته‌واوی داتاکان. ئه‌گه‌ر ئه‌مه‌ به‌ به‌تاڵیی جێ بهێڵرێت، دوایین تێپه‌ڕه‌وشه‌ی پاراستنت به‌کارده‌هێنرێت:</string>
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <string name="backup_enc_password_optional">ئه‌گه‌ر ده‌ته‌وێت ته‌واوی پاراستنی داتاکان به‌ هێما بکه‌یت، تێپه‌ڕه‌وشه‌یه‌ک له‌ خواره‌وه‌ بنوسه‌:</string>
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <string name="backup_enc_password_required">لەوەتەی ئامێرەکەت پارێزراوە، تۆ پێویستیت بە هەڵگرتنی داتاکانتە. تکایە ژمارەی تێپەڕەوشە لێبدە:</string>
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <string name="restore_enc_password_text">ئه‌گه‌ر داتای گه‌ڕاندنه‌وه‌ به‌ هێما کراوه‌، تکایه‌ تێپه‌ڕه‌وشه‌که‌ له‌ خواره‌وه‌ بنوسه‌:</string>
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <string name="toast_backup_started">پاراستن ده‌ستپێده‌کات...</string>
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <string name="toast_backup_ended">پاراستن ته‌واو بوو</string>
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <string name="toast_restore_started">گه‌ڕاندنه‌وه‌ ده‌ستپێده‌کات...</string>
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <string name="toast_restore_ended">گه‌ڕاندنه‌وه‌ کۆتایی هات</string>
+ <!-- Text of a toast telling the user that the operation has timed out -->
+ <string name="toast_timeout">کاتی کرداره‌که‌ ته‌واو بوو</string>
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-lb/strings.xml b/packages/BackupRestoreConfirmation/res/values-lb/strings.xml
new file mode 100644
index 0000000..1b96ed8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-lb/strings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">Komplett Sécherung</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <string name="restore_confirm_title">Komplett Erëmhierstellung</string>
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <string name="backup_confirm_text">Eng komplett Sécherung vun allen Daten op en ugeschlossene Büroscomputer ass gefrot ginn. Wëlls du dat zouloossen\?\n\nFalls du dës Sécherung net gefrot hues, dann erlab dës Operatioun net.</string>
+ <!-- Button to allow a requested full backup to occur -->
+ <string name="allow_backup_button_label">Meng Date sécheren</string>
+ <!-- Button to refuse to allow the requested full backup -->
+ <string name="deny_backup_button_label">Net sécheren</string>
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <string name="restore_confirm_text">Eng komplett Erëmhierstellung vun allen Daten op en ugeschlosse Büroscomputer ass gefrot ginn. Wëlls du dat zouloossen\?\n\nFalls du dës Erëmhierstellung net gefrot hues, dann erlab dës Operatioun net!</string>
+ <!-- Button to allow a requested full restore to occur -->
+ <string name="allow_restore_button_label">Meng Daten erëmhierstellen</string>
+ <!-- Button to refuse to allow the requested full restore -->
+ <string name="deny_restore_button_label">Net erëmhierstellen</string>
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <string name="current_password_text">Gëff w.e.g. däin aktuellt Sécherungspasswuert an:</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <string name="device_encryption_restore_text">Gëff w.e.g. d\'Passwuert fir d\'Entschlësselung vun dengem Apparat an.</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <string name="device_encryption_backup_text">Gëff w.e.g. d\'Passwuert fir d\'Entschlësselung vun dengem Apparat an. Dat Passwuert gëtt och benotzt fir d\'Sécherungsarchiv ze verschlësselen.</string>
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <string name="backup_enc_password_text">Gëff w.e.g. e Passwuert a fir d\'Verschlësselung vun de gesécherten Daten. Falls et eidel ass, gëtt däin aktuellt Sécherungspasswuert benotzt:</string>
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <string name="backup_enc_password_optional">Falls du deng Datesécherung wëlls verschlësselen, gëff e Passwuert an:</string>
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <string name="backup_enc_password_required">Well däin Apparat verschlësselt ass, muss du och deng Sécherung verschlësselen. Gëff w.e.g. e Passwuert an:</string>
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <string name="restore_enc_password_text">Falls d\'Erëmhierstellungsdate verschlësselt sinn, gëff d\'Passwuert an:</string>
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <string name="toast_backup_started">Sécherung start...</string>
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <string name="toast_backup_ended">Sécherung ofgeschoss</string>
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <string name="toast_restore_started">Erëmhierstellung start...</string>
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <string name="toast_restore_ended">Erëmhierstellung ofgeschloss</string>
+ <!-- Text of a toast telling the user that the operation has timed out -->
+ <string name="toast_timeout">D\'Operatioun huet d\'Zäit iwwerschratt</string>
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-nl/strings.xml b/packages/BackupRestoreConfirmation/res/values-nl/strings.xml
index 81f2712..94d285f 100644
--- a/packages/BackupRestoreConfirmation/res/values-nl/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-nl/strings.xml
@@ -27,10 +27,10 @@
<string name="current_password_text" msgid="8268189555578298067">"Geef hieronder je huidige back-upwachtwoord op:"</string>
<string name="device_encryption_restore_text" msgid="1570864916855208992">"Geef hieronder je wachtwoord voor apparaatcodering op."</string>
<string name="device_encryption_backup_text" msgid="5866590762672844664">"Geef hieronder je wachtwoord voor apparaatversleuteling op. Dit wordt ook gebruikt om het back-uparchief te versleutelen."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Geef een wachtwoord op dat u wilt gebruiken voor het coderen van de gegevens van de volledige back-up. Als u dit leeg laat, wordt je huidige back-upwachtwoord gebruikt:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Als u de gegevens van de volledige back-up wilt versleutelen, geeft u daarvoor hieronder een wachtwoord op:"</string>
- <string name="backup_enc_password_required" msgid="7889652203371654149">"Aangezien je apparaat is gecodeerd, moet u je back-up coderen. Geef hieronder een wachtwoord op:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Als deze herstelgegevens zijn gecodeerd, geeft u hieronder het wachtwoord op:"</string>
+ <string name="backup_enc_password_text" msgid="4981585714795233099">"Geef een wachtwoord op dat je wil gebruiken voor het coderen van de gegevens van de volledige back-up. Als je dit leeg laat, wordt je huidige back-upwachtwoord gebruikt:"</string>
+ <string name="backup_enc_password_optional" msgid="1350137345907579306">"Als je de gegevens van de volledige back-up wilt versleutelen, geef je daarvoor hieronder een wachtwoord op:"</string>
+ <string name="backup_enc_password_required" msgid="7889652203371654149">"Aangezien je apparaat is gecodeerd, moet je je back-up coderen. Geef hieronder een wachtwoord op:"</string>
+ <string name="restore_enc_password_text" msgid="6140898525580710823">"Als deze herstelgegevens zijn gecodeerd, geef je hieronder het wachtwoord op:"</string>
<string name="toast_backup_started" msgid="550354281452756121">"Back-up starten..."</string>
<string name="toast_backup_ended" msgid="3818080769548726424">"Back-up voltooid"</string>
<string name="toast_restore_started" msgid="7881679218971277385">"Herstel starten..."</string>
diff --git a/packages/BackupRestoreConfirmation/res/values-oc-rFR/strings.xml b/packages/BackupRestoreConfirmation/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-oc-rFR/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-or-rIN/strings.xml b/packages/BackupRestoreConfirmation/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..803e4a8
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-or-rIN/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full backup to occur -->
+ <!-- Button to refuse to allow the requested full backup -->
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <!-- Button to allow a requested full restore to occur -->
+ <!-- Button to refuse to allow the requested full restore -->
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <!-- Text of a toast telling the user that the operation has timed out -->
+</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ug/strings.xml b/packages/BackupRestoreConfirmation/res/values-ug/strings.xml
new file mode 100644
index 0000000..db00bcc
--- /dev/null
+++ b/packages/BackupRestoreConfirmation/res/values-ug/strings.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the activity when a full backup has been requested and must be confirmed -->
+ <string name="backup_confirm_title">تولۇق زاپاسلاش</string>
+ <!-- Title of the activity when a full restore has been requested and must be confirmed -->
+ <string name="restore_confirm_title">تولۇق ئەسلىگە كەلتۈرۈش</string>
+ <!-- Text for message to user that a full backup has been requested, and must be confirmed. -->
+ <string name="backup_confirm_text">سىستېما بارلىق سانلىق مەلۇماتلارنى باغلانغان ئۈستەلئۈستى كومپيۇتېرغا زاپاسلاشنى ئىلتىماس قىلدى. بۇ مەشغۇلاتقا يول قويامسىز؟\n\nئەگەر ئۆزىڭىز زاپاسلاشنى ئىلتىماس قىلمىسىڭىز، بۇ مەشغۇلاتقا يول قويماڭ.</string>
+ <!-- Button to allow a requested full backup to occur -->
+ <string name="allow_backup_button_label">سانلىق مەلۇماتلىرىمنى زاپاسلا</string>
+ <!-- Button to refuse to allow the requested full backup -->
+ <string name="deny_backup_button_label">زاپاسلىما</string>
+ <!-- Text for message to user that a full restore has been requested, and must be confirmed. -->
+ <string name="restore_confirm_text">سىستېما بارلىق سانلىق مەلۇماتلارنى باغلانغان ئۈستەلئۈستى كومپيۇتېرغا ئەسلىگە كەلتۈرۈشنى ئىلتىماس قىلدى. بۇ مەشغۇلاتقا يول قويامسىز؟\n\nئەگەر ئۆزىڭىز ئەسلىگە كەلتۈرۈشنى ئىلتىماس قىلمىسىڭىز، بۇ مەشغۇلاتقا يول قويماڭ. بۇ مەشغۇلات ئۈسكۈنىدىكى ھەممە سانلىق مەلۇماتلارنى قاپلىۋېتىدۇ!</string>
+ <!-- Button to allow a requested full restore to occur -->
+ <string name="allow_restore_button_label">سانلىق-مەلۇماتىمنى ئەسلىگە كەلتۈر</string>
+ <!-- Button to refuse to allow the requested full restore -->
+ <string name="deny_restore_button_label">ئەسلىگە كەلتۈرمە</string>
+ <!-- Text for message to user that they must enter their predefined backup password in order to perform this operation. -->
+ <string name="current_password_text">تۆۋەندە نۆۋەتتىكى زاپاسنىڭ ئىمنى كىرگۈزۈڭ:</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this restore operation. -->
+ <string name="device_encryption_restore_text">تۆۋەندە ئۈسكۈنىڭىزنىڭ شىفىرلانغان ئىمنى كىرگۈزۈڭ.</string>
+ <!-- Text for message to user that they must enter their device encryption password in order to perform this backup operation. -->
+ <string name="device_encryption_backup_text">تۆۋەندە ئۈسكۈنىڭىزنىڭ شىفىرلانغان ئىمنى كىرگۈزۈڭ. ئەگەر بوش قالدۇرسىڭىز سىستېما نۆۋەتتىكى زاپاسنىڭ ئىمنى ئىشلىتىدۇ.</string>
+ <!-- Text for message to user that they must enter an encryption password to use for the full backup operation. -->
+ <string name="backup_enc_password_text">سانلىق مەلۇماتنى تولۇق زاپاسلاشقا ئىشلىتىدىغان ئىمنى كىرگۈزۈڭ. ئەگەر بوش قالدۇرسىڭىز سىستېما نۆۋەتتىكى زاپاسنىڭ ئىمنى ئىشلىتىدۇ.</string>
+ <!-- Text for message to user that they may optionally supply an encryption password to use for a full backup operation. -->
+ <string name="backup_enc_password_optional">ئەگەر سانلىق مەلۇماتنى تولۇق زاپاسلاشنى شىفىرلىسىڭىز، تۆۋەندە ئىمنى كىرگۈزۈڭ:</string>
+ <!-- Text for message to user that they must supply an encryption password to use for a full backup operation because their phone is locked. -->
+ <!-- Text for message to user when performing a full restore operation, explaining that they must enter the password originally used to encrypt the full backup data. -->
+ <string name="restore_enc_password_text">ئەگەر ئەسلىگە كەلتۈرىدىغان سانلىق مەلۇمات شىفىرلانغان بولسا تۆۋەندە ئىمنى كىرگۈزۈڭ:</string>
+ <!-- Text of a toast telling the user that a full backup operation has begun -->
+ <string name="toast_backup_started">زاپاسلاش باشلاندى…</string>
+ <!-- Text of a toast telling the user that a full backup operation has ended -->
+ <string name="toast_backup_ended">زاپاسلاش تامام</string>
+ <!-- Text of a toast telling the user that a full restore operation has begun -->
+ <string name="toast_restore_started">ئەسلىگە كەلتۈرۈش باشلاندى…</string>
+ <!-- Text of a toast telling the user that a full restore operation has ended -->
+ <string name="toast_restore_ended">ئەسلىگە كەلتۈرۈش ئاخىرلاشتى</string>
+ <!-- Text of a toast telling the user that the operation has timed out -->
+ <string name="toast_timeout">مەشغۇلات ۋاقىت ھالقىدى</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/AndroidManifest.xml b/packages/CaptivePortalLogin/AndroidManifest.xml
index aea8585..2e73119 100644
--- a/packages/CaptivePortalLogin/AndroidManifest.xml
+++ b/packages/CaptivePortalLogin/AndroidManifest.xml
@@ -32,6 +32,10 @@
<action android:name="android.net.conn.CAPTIVE_PORTAL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
+ <intent-filter>
+ <action android:name="android.net.action.captive_portal_login"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
</activity>
</application>
</manifest>
diff --git a/packages/CaptivePortalLogin/res/values-ast-rES/strings.xml b/packages/CaptivePortalLogin/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..9d7deaf
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-ast-rES/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <string name="app_name">CaptivePortalLogin</string>
+ <string name="action_use_network">Usar esta rede tal cual</string>
+ <string name="action_do_not_use_network">Nun usar esta rede</string>
+ <string name="action_bar_label">Aniciar sesión na rede</string>
+ <string name="ssl_error_warning">La rede a la que intentes coneutate tien problemes de seguranza.</string>
+ <string name="ssl_error_example">Por exemplu, ye dable que la páxina d\'accesu nun perteneza a la organización que s\'amuesa.</string>
+ <string name="ssl_error_continue">Siguir de toes formes dende\'l restolador</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/res/values-be/strings.xml b/packages/CaptivePortalLogin/res/values-be/strings.xml
new file mode 100644
index 0000000..eff2d3e
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-be/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <string name="app_name">CaptivePortalLogin</string>
+ <string name="action_use_network">Выкарыстоўваць гэтую сетку</string>
+ <string name="action_do_not_use_network">Не выкарыстоўваць гэтую сетку</string>
+ <string name="action_bar_label">Уваход да сеціва</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/res/values-ku/strings.xml b/packages/CaptivePortalLogin/res/values-ku/strings.xml
new file mode 100644
index 0000000..574b14f
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-ku/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <string name="action_use_network">بەکارهێنانی ئەم تۆڕە وەکو</string>
+ <string name="action_do_not_use_network">ئەم تۆڕە بەکارمەهێنە</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/res/values-lb/strings.xml b/packages/CaptivePortalLogin/res/values-lb/strings.xml
new file mode 100644
index 0000000..3b783cb
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-lb/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <string name="app_name">CaptivePortalLogin</string>
+ <string name="action_use_network">Dëst Netzwierk benotzen als</string>
+ <string name="action_do_not_use_network">Dëst Netzwierk net benotzen</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/res/values-ug/strings.xml b/packages/CaptivePortalLogin/res/values-ug/strings.xml
new file mode 100644
index 0000000..678798d
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-ug/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <string name="app_name">CaptivePortalLogin</string>
+ <string name="action_use_network">بۇ تورنى ئىشلىتىش ئۇسۇلى</string>
+ <string name="action_do_not_use_network">بۇ تورنى ئىشلەتمەڭ</string>
+ <string name="action_bar_label">تورغا تىزىمغا كىرىش</string>
+</resources>
diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
index 0fe5509..ed9c111 100644
--- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
+++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
@@ -20,8 +20,10 @@ import android.app.Activity;
import android.app.LoadedApk;
import android.content.Context;
import android.content.Intent;
+import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.net.CaptivePortal;
+import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network;
@@ -32,6 +34,7 @@ import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.provider.Settings;
+import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.TypedValue;
@@ -57,6 +60,11 @@ import java.util.Random;
public class CaptivePortalLoginActivity extends Activity {
private static final String TAG = "CaptivePortalLogin";
private static final String DEFAULT_SERVER = "connectivitycheck.gstatic.com";
+
+ private static final String EXTRA_STATUS_BAR_COLOR = "status_bar_color";
+ private static final String EXTRA_ACTION_BAR_COLOR = "action_bar_color";
+ private static final String EXTRA_PROGRESS_COLOR = "progress_bar_color";
+
private static final int SOCKET_TIMEOUT_MS = 10000;
private enum Result { DISMISSED, UNWANTED, WANTED_AS_IS };
@@ -68,6 +76,7 @@ public class CaptivePortalLoginActivity extends Activity {
private ConnectivityManager mCm;
private boolean mLaunchBrowser = false;
private MyWebViewClient mWebViewClient;
+ private String mResponseToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -81,11 +90,27 @@ public class CaptivePortalLoginActivity extends Activity {
} catch (MalformedURLException e) {
// System misconfigured, bail out in a way that at least provides network access.
Log.e(TAG, "Invalid captive portal URL, server=" + server);
+ setResult(Activity.RESULT_CANCELED);
done(Result.WANTED_AS_IS);
}
+ mResponseToken = getIntent().getStringExtra(Intent.EXTRA_TEXT);
mNetwork = getIntent().getParcelableExtra(ConnectivityManager.EXTRA_NETWORK);
mCaptivePortal = getIntent().getParcelableExtra(ConnectivityManager.EXTRA_CAPTIVE_PORTAL);
+ final Intent intent = getIntent();
+ if (intent.hasExtra(EXTRA_STATUS_BAR_COLOR)) {
+ int color = intent.getIntExtra(EXTRA_STATUS_BAR_COLOR, -1);
+ if (color != -1) {
+ getWindow().setStatusBarColor(color);
+ }
+ }
+ if (intent.hasExtra(EXTRA_ACTION_BAR_COLOR)) {
+ int color = intent.getIntExtra(EXTRA_ACTION_BAR_COLOR, -1);
+ if (color != -1) {
+ getActionBar().setBackgroundDrawable(new ColorDrawable(color));
+ }
+ }
+
// Also initializes proxy system properties.
mCm.bindProcessToNetwork(mNetwork);
@@ -95,6 +120,14 @@ public class CaptivePortalLoginActivity extends Activity {
getActionBar().setDisplayShowHomeEnabled(false);
+ ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
+ if (intent.hasExtra(EXTRA_PROGRESS_COLOR)) {
+ int color = intent.getIntExtra(EXTRA_PROGRESS_COLOR, -1);
+ if (color != -1) {
+ myProgressBar.setProgressTintList(ColorStateList.valueOf(color));
+ }
+ }
+
// Exit app if Network disappears.
final NetworkCapabilities networkCapabilities = mCm.getNetworkCapabilities(mNetwork);
if (networkCapabilities == null) {
@@ -165,6 +198,9 @@ public class CaptivePortalLoginActivity extends Activity {
mCaptivePortal.useNetwork();
break;
}
+ Intent intent = new Intent();
+ intent.putExtra(Intent.EXTRA_TEXT, mResponseToken);
+ setResult(Activity.RESULT_OK, intent);
finish();
}
@@ -298,6 +334,11 @@ public class CaptivePortalLoginActivity extends Activity {
} else if (mPagesLoaded == 2) {
// Prevent going back to empty first page.
view.clearHistory();
+ } else {
+ if (TextUtils.isEmpty(view.getUrl()) || view.getUrl().contains("text/html")) {
+ setResult(Activity.RESULT_CANCELED);
+ finish();
+ }
}
testForCaptivePortal();
}
diff --git a/packages/DefaultContainerService/res/values-as-rIN/strings.xml b/packages/DefaultContainerService/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-as-rIN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-ast-rES/strings.xml b/packages/DefaultContainerService/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..09c546f
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-ast-rES/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+ <string name="service_name">Encontu d\'accesu a paquete</string>
+</resources>
diff --git a/packages/DefaultContainerService/res/values-be/strings.xml b/packages/DefaultContainerService/res/values-be/strings.xml
new file mode 100644
index 0000000..25754a1
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-be/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+ <string name="service_name">Памочнік доступу да пакетаў</string>
+</resources>
diff --git a/packages/DefaultContainerService/res/values-br-rFR/strings.xml b/packages/DefaultContainerService/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-br-rFR/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-bs-rBA/strings.xml b/packages/DefaultContainerService/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-bs-rBA/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-csb-rPL/strings.xml b/packages/DefaultContainerService/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-csb-rPL/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-cy/strings.xml b/packages/DefaultContainerService/res/values-cy/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-cy/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-en-rPT/strings.xml b/packages/DefaultContainerService/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-en-rPT/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-eo/strings.xml b/packages/DefaultContainerService/res/values-eo/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-eo/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-es-rCO/strings.xml b/packages/DefaultContainerService/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-es-rCO/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-es-rMX/strings.xml b/packages/DefaultContainerService/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-es-rMX/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-fr/strings.xml b/packages/DefaultContainerService/res/values-fr/strings.xml
index 216d715..5c458bc 100644
--- a/packages/DefaultContainerService/res/values-fr/strings.xml
+++ b/packages/DefaultContainerService/res/values-fr/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="service_name" msgid="4841491635055379553">"Package Access Helper"</string>
+ <string name="service_name" msgid="4841491635055379553">"Aide accès au package"</string>
</resources>
diff --git a/packages/DefaultContainerService/res/values-frp-rIT/strings.xml b/packages/DefaultContainerService/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-frp-rIT/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-fy-rNL/strings.xml b/packages/DefaultContainerService/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-fy-rNL/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-ga-rIE/strings.xml b/packages/DefaultContainerService/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-ga-rIE/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-gd-rGB/strings.xml b/packages/DefaultContainerService/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-gd-rGB/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-kk-rKZ/strings.xml b/packages/DefaultContainerService/res/values-kk-rKZ/strings.xml
index 216d715..a29680e 100644
--- a/packages/DefaultContainerService/res/values-kk-rKZ/strings.xml
+++ b/packages/DefaultContainerService/res/values-kk-rKZ/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="service_name" msgid="4841491635055379553">"Package Access Helper"</string>
+ <string name="service_name" msgid="4841491635055379553">"Жинаққа қол жеткізу көмекшісі"</string>
</resources>
diff --git a/packages/DefaultContainerService/res/values-ku/strings.xml b/packages/DefaultContainerService/res/values-ku/strings.xml
new file mode 100644
index 0000000..d526e17
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-ku/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+ <string name="service_name">یارمه‌تیده‌ری چوونه‌ژووره‌وه‌ی پاکێجه‌کان</string>
+</resources>
diff --git a/packages/DefaultContainerService/res/values-lb/strings.xml b/packages/DefaultContainerService/res/values-lb/strings.xml
new file mode 100644
index 0000000..d2cebb7
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-lb/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+ <string name="service_name">Zougrëffshëllef fir Päck</string>
+</resources>
diff --git a/packages/DefaultContainerService/res/values-oc-rFR/strings.xml b/packages/DefaultContainerService/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-oc-rFR/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-or-rIN/strings.xml b/packages/DefaultContainerService/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..e75a0d0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-or-rIN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+</resources>
diff --git a/packages/DefaultContainerService/res/values-ug/strings.xml b/packages/DefaultContainerService/res/values-ug/strings.xml
new file mode 100644
index 0000000..f9b6bc0
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-ug/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2008, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- service name [CHAR LIMIT=25] -->
+ <string name="service_name">بوغچا زىيارەت ياردەمچىسى</string>
+</resources>
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
index cc1e01a..055da3e 100644
--- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
+++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
@@ -189,6 +189,7 @@ public class DefaultContainerService extends IntentService {
ret.recommendedInstallLocation = PackageHelper.resolveInstallLocation(context,
pkg.packageName, pkg.installLocation, sizeBytes, flags);
ret.multiArch = pkg.multiArch;
+ ret.isTheme = pkg.isTheme;
return ret;
}
diff --git a/packages/DocumentsUI/res/layout/activity.xml b/packages/DocumentsUI/res/layout/activity.xml
index 32431e3..8c35e54 100644
--- a/packages/DocumentsUI/res/layout/activity.xml
+++ b/packages/DocumentsUI/res/layout/activity.xml
@@ -29,7 +29,7 @@
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
- android:elevation="8dp"
+ android:elevation="@dimen/toolbar_elevation"
android:theme="?android:attr/actionBarTheme">
<Spinner
@@ -63,7 +63,7 @@
android:layout_gravity="start"
android:orientation="vertical"
android:elevation="16dp"
- android:background="@*android:color/white">
+ android:background="@color/drawer_background_color">
<Toolbar
android:id="@+id/roots_toolbar"
diff --git a/packages/DocumentsUI/res/layout/item_doc_grid.xml b/packages/DocumentsUI/res/layout/item_doc_grid.xml
index d62d050..90938ae 100644
--- a/packages/DocumentsUI/res/layout/item_doc_grid.xml
+++ b/packages/DocumentsUI/res/layout/item_doc_grid.xml
@@ -66,7 +66,7 @@
android:ellipsize="middle"
android:textAlignment="viewStart"
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
- android:textColor="@*android:color/primary_text_default_material_dark" />
+ android:textColor="@color/font_color_doc_grid" />
<ImageView
android:id="@android:id/icon1"
@@ -95,7 +95,7 @@
android:ellipsize="end"
android:textAlignment="viewStart"
android:textAppearance="@android:style/TextAppearance.Material.Caption"
- android:textColor="@*android:color/primary_text_default_material_dark" />
+ android:textColor="@color/font_color_doc_grid" />
<TextView
android:id="@+id/size"
@@ -107,7 +107,7 @@
android:ellipsize="end"
android:textAlignment="viewStart"
android:textAppearance="@android:style/TextAppearance.Material.Caption"
- android:textColor="@*android:color/primary_text_default_material_dark" />
+ android:textColor="@color/font_color_doc_grid" />
<ImageView
android:id="@android:id/icon2"
diff --git a/packages/DocumentsUI/res/values-as-rIN/strings.xml b/packages/DocumentsUI/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-as-rIN/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-ast-rES/strings.xml b/packages/DocumentsUI/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..a0ca39a
--- /dev/null
+++ b/packages/DocumentsUI/res/values-ast-rES/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">Documentos</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <string name="title_open">Abrir dende</string>
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <string name="title_save">Guardar en</string>
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">Crear carpeta</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <string name="menu_grid">Vista de cuadrícula</string>
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <string name="menu_list">Vista de llista</string>
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">Ordenar por</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">Guetar</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">Axustes</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">Abrir</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">Guardar</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">Compartir</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">Desaniciar</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <string name="menu_select_all">Esbillalo too</string>
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_copy">Copiar a\u2026</string>
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="nosdcard">Amosar almac. internu</string>
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="default">Amosar tarxeta SD</string>
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="nosdcard">Anubrir almac. internu</string>
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="default">Anubrir tarxeta SD</string>
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_show">Amosar tamañu de ficheru</string>
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_hide">Anubrir tamañu de ficheru</string>
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <string name="button_select">Seleicionar</string>
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <string name="button_copy">Copiar</string>
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">Por nome</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <string name="sort_date">Por data de modificación</string>
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <string name="sort_size">Por tamañu</string>
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_open">Amosar raíces</string>
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_close">Anubrir raíces</string>
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <string name="save_error">Fallu al guardar documentu</string>
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <string name="create_error">Fallu al crear carpeta</string>
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <string name="query_error">Fallu al solicitar documentos</string>
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <string name="root_recent">Recién</string>
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <string name="root_available_bytes"><xliff:g id="size" example="3GB">%1$s</xliff:g> d\'espaciu llibre</string>
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <string name="root_type_service">Servicios d\'almacenamientu</string>
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <string name="root_type_shortcut">Atayos</string>
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">Preseos</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <string name="root_type_apps">Más apps</string>
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <string name="empty">Ensin elementos</string>
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <string name="toast_no_application">Nun pue abrise\'l ficheru</string>
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <string name="toast_failed_delete">Nun pudieron desaniciase dalgunos documentos</string>
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">Compartir per aciu de</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <string name="copy_notification_title">Copiando ficheros</string>
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <string name="copy_remaining">queden <xliff:g id="duration" example="3 minutes">%s</xliff:g></string>
+ <!-- Toast shown when a file copy is kicked off -->
+ <plurals name="copy_begin">
+ <item quantity="one">Copiando <xliff:g id="count" example="1">%1$d</xliff:g> ficheru</item>
+ <item quantity="other">Copiando <xliff:g id="count" example="1">%1$d</xliff:g> ficheros</item>
+ </plurals>
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <string name="copy_preparing">Tresnando pa copiar\u2026</string>
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <plurals name="copy_error_notification_title">
+ <item quantity="one">Nun pudo copiase <xliff:g id="count" example="1">%1$d</xliff:g> ficheru</item>
+ <item quantity="other">Nun pudieron copiase <xliff:g id="count" example="2">%1$d</xliff:g> ficheros</item>
+ </plurals>
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <string name="notification_touch_for_details">Toca pa ver detalles</string>
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <string name="retry">Reintentar</string>
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+ <string name="copy_failure_alert_content">Nun se copiaron estos ficheros: <xliff:g id="list">%1$s</xliff:g></string>
+</resources>
diff --git a/packages/DocumentsUI/res/values-be/strings.xml b/packages/DocumentsUI/res/values-be/strings.xml
new file mode 100644
index 0000000..a8332fd
--- /dev/null
+++ b/packages/DocumentsUI/res/values-be/strings.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">Дакументы</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <string name="title_open">Адкрыць</string>
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <string name="title_save">Захаваць</string>
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">Стварыць тэчку</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <string name="menu_grid">У выглядзе сеткі</string>
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <string name="menu_list">У выглядзе спісу</string>
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">Сартаваць паводле</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">Пошук</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">Налады</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">Адкрыць</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">Захаваць</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">Падзяліцца</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">Выдаліць</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="nosdcard">Унутраная памяць</string>
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="default">SD-картка</string>
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="nosdcard">Схаваць унутраную памяць</string>
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="default">Схаваць SD-картку</string>
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_show">Паказаць памеры файлаў</string>
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_hide">Схаваць памеры файлаў</string>
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">Паводле назвы</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <string name="sort_date">Паводле даты зменаў</string>
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <string name="sort_size">Паводле памеру</string>
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_open">Паказаць</string>
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_close">Схаваць</string>
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <string name="save_error">Не атрымалася захаваць дакумент</string>
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <string name="create_error">Не атрымалася стварыць тэчку</string>
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <string name="query_error">Не атрымалася даслаць запыт</string>
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <string name="root_recent">Апошнія</string>
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <string name="root_available_bytes">Вольна <xliff:g id="size" example="3GB">%1$s</xliff:g></string>
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <string name="root_type_service">Анлайн-сховішча</string>
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <string name="root_type_shortcut">Цэтлікі</string>
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">Прылады</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <string name="root_type_apps">Іншыя праграмы</string>
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <string name="empty">Няма элементаў</string>
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <string name="toast_no_application">Немагчыма адкрыць файл</string>
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <string name="toast_failed_delete">Не атрымалася выдаліць некаторыя дакументы</string>
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">Падзяліцца праз</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-br-rFR/strings.xml b/packages/DocumentsUI/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-br-rFR/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-bs-rBA/strings.xml b/packages/DocumentsUI/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-bs-rBA/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-csb-rPL/strings.xml b/packages/DocumentsUI/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-csb-rPL/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-cy/strings.xml b/packages/DocumentsUI/res/values-cy/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-cy/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-en-rPT/strings.xml b/packages/DocumentsUI/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-en-rPT/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-eo/strings.xml b/packages/DocumentsUI/res/values-eo/strings.xml
new file mode 100644
index 0000000..92eb20b
--- /dev/null
+++ b/packages/DocumentsUI/res/values-eo/strings.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">Dokumentoj</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">Krei dosierujon</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">Ordigi laŭ</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">Serĉi</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">Agordoj</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">Malfermi</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">Konservi</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">Konigi</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">Forigi</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <string name="button_select">Elekti</string>
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <string name="button_copy">Kopii</string>
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">Laŭ nomo</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">Aparatoj</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">Konigi per</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <string name="retry">Reprovi</string>
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-es-rCO/strings.xml b/packages/DocumentsUI/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-es-rCO/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-es-rMX/strings.xml b/packages/DocumentsUI/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-es-rMX/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-frp-rIT/strings.xml b/packages/DocumentsUI/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-frp-rIT/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-fy-rNL/strings.xml b/packages/DocumentsUI/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-fy-rNL/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-ga-rIE/strings.xml b/packages/DocumentsUI/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-ga-rIE/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-gd-rGB/strings.xml b/packages/DocumentsUI/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-gd-rGB/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-ku/strings.xml b/packages/DocumentsUI/res/values-ku/strings.xml
new file mode 100644
index 0000000..638550c
--- /dev/null
+++ b/packages/DocumentsUI/res/values-ku/strings.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">به‌ڵگه‌نامه‌کان</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <string name="title_open">بیکه‌ره‌وه‌ له‌</string>
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <string name="title_save">پاشه‌که‌وتی بکه‌ له‌</string>
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">بوخچه‌ دروست بکه‌</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <string name="menu_grid">بینینی خانه‌یی</string>
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <string name="menu_list">بینینی لیسته‌یی</string>
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">ڕیزکردن به‌پێی</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">گه‌ڕان</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">ڕێکخستنه‌کان</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">کردنه‌وه‌</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">پاشەکەوت</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">په‌رش</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">سڕینه‌وه‌</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">به‌پێی ناو</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <string name="sort_date">به‌پێی به‌رواری ده‌ستکاریی</string>
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <string name="sort_size">به‌پێی قه‌باره‌</string>
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_open">ڕه‌گه‌کان پیشان بده‌</string>
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_close">ڕه‌گه‌کان بشاره‌وه‌</string>
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <string name="save_error">پاشه‌که‌وتی به‌ڵگه‌نامه‌ شکستی هێنا</string>
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <string name="create_error">دروستکردنی بوخچه‌ شکستی هێنا</string>
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <string name="query_error">پرسی به‌ڵگه‌نامه‌کان شکستی هێنا</string>
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <string name="root_recent">تازه‌</string>
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <string name="root_available_bytes"><xliff:g id="size" example="3GB">%1$s</xliff:g> به‌تاڵه‌</string>
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <string name="root_type_service">ڕاژه‌کانی بیرگە</string>
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <string name="root_type_shortcut">کورتبڕییه‌کان</string>
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">ئامێره‌کان</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <string name="root_type_apps">به‌رنامه‌ی زیاتر</string>
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <string name="empty">هیچ بڕگه‌یه‌ک نییه‌</string>
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <string name="toast_no_application">نه‌توانرا په‌ڕگه‌ بکرێته‌وه‌</string>
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <string name="toast_failed_delete">نه‌توانرا هه‌ندێ به‌ڵگه‌نامه‌ بسڕێنه‌وه‌</string>
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">په‌رشیکه‌ له‌ڕێی</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-lb/strings.xml b/packages/DocumentsUI/res/values-lb/strings.xml
new file mode 100644
index 0000000..5bcd64f
--- /dev/null
+++ b/packages/DocumentsUI/res/values-lb/strings.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">Dokumenter</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <string name="title_open">Opmaache vun</string>
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <string name="title_save">Späicheren ënner</string>
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">Dossier uleeën</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <string name="menu_grid">Gitterusiicht</string>
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <string name="menu_list">Lëschtenusiicht</string>
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">Zortéieren no</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">Sichen</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">Astellungen</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">Opmaachen</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">Späicheren</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">Deelen</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">Läschen</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="nosdcard">Interne Späicher uweisen</string>
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_show" product="default">SD-Kaart uweisen</string>
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="nosdcard">Interne Späicher verstoppen</string>
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <string name="menu_advanced_hide" product="default">SD-Kaart verstoppen</string>
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_show">Fichiersgréisst uweisen</string>
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <string name="menu_file_size_hide">Fichiersgréisst verstoppen</string>
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">No Numm</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <string name="sort_date">No Ännerungsdatum</string>
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <string name="sort_size">No Gréisst</string>
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_open">Wuerzelen uweisen</string>
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_close">Wuerzele verstoppen</string>
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <string name="save_error">D\'Dokument konnt net gespäichert ginn</string>
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <string name="create_error">Den Dossier konnt net erstallt ginn</string>
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <string name="query_error">D\'Dokumenter konnten net ofgeruff ginn</string>
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <string name="root_recent">Rezent</string>
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <string name="root_available_bytes"><xliff:g id="size" example="3GB">%1$s</xliff:g> fräi</string>
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <string name="root_type_service">Späicherservicer</string>
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <string name="root_type_shortcut">Ofkierzungen</string>
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">Apparater</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <string name="root_type_apps">Méi Appen</string>
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <string name="empty">Keng Elementer</string>
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <string name="toast_no_application">Fichier kann net opgemaach ginn</string>
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <string name="toast_failed_delete">Verschidden Dokumenter konnten net geläscht ginn</string>
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">Deelen iwwer</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-oc-rFR/strings.xml b/packages/DocumentsUI/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-oc-rFR/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-or-rIN/strings.xml b/packages/DocumentsUI/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..1d6f5fa
--- /dev/null
+++ b/packages/DocumentsUI/res/values-or-rIN/strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values-ug/strings.xml b/packages/DocumentsUI/res/values-ug/strings.xml
new file mode 100644
index 0000000..a74da1f
--- /dev/null
+++ b/packages/DocumentsUI/res/values-ug/strings.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the documents application [CHAR LIMIT=32] -->
+ <string name="app_label">پۈتۈكلەر</string>
+ <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
+ <string name="title_open">ئېچىش ئورنى</string>
+ <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
+ <string name="title_save">ساقلاش ئورنى</string>
+ <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
+ <string name="menu_create_dir">قىسقۇچ قۇر</string>
+ <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
+ <string name="menu_grid">سېتكا كۆرۈنۈش</string>
+ <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
+ <string name="menu_list">تىزىم كۆرۈنۈشى</string>
+ <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
+ <string name="menu_sort">تەرتىپلەش ئۇسۇلى</string>
+ <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
+ <string name="menu_search">ئىزدە</string>
+ <!-- Menu item that enters activity to change settings [CHAR LIMIT=24] -->
+ <string name="menu_settings">تەڭشەكلەر</string>
+ <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_open">ئاچ</string>
+ <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
+ <string name="menu_save">ساقلا</string>
+ <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_share">ھەمبەھىر</string>
+ <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
+ <string name="menu_delete">ئۆچۈر</string>
+ <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
+ <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
+ <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
+ <!-- Button label that select the current directory [CHAR LIMIT=24] -->
+ <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
+ <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
+ <string name="sort_name">ئاتى بويىچە</string>
+ <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
+ <string name="sort_date">ئۆزگەرتكەن چېسلا بويىچە</string>
+ <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
+ <string name="sort_size">چوڭلۇقى بويىچە</string>
+ <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_open">غول مۇندەرىجە كۆرسەت</string>
+ <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
+ <string name="drawer_close">غول مۇندەرىجە يوشۇر</string>
+ <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
+ <string name="save_error">پۈتۈكنى ساقلىيالمىدى</string>
+ <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
+ <string name="create_error">قىسقۇچ قۇرالمىدى</string>
+ <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
+ <string name="query_error">پۈتۈكنى سۈرۈشتۈرەلمىدى</string>
+ <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
+ <string name="root_recent">يېقىنقى</string>
+ <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
+ <string name="root_available_bytes"><xliff:g id="SIZE">%1$s</xliff:g> بوش</string>
+ <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
+ <string name="root_type_service">ساقلاش مۇلازىمەتلىرى</string>
+ <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
+ <string name="root_type_shortcut">قىسقا يول</string>
+ <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
+ <string name="root_type_device">ئۈسكۈنەلەر</string>
+ <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
+ <string name="root_type_apps">تېخىمۇ كۆپ ئەپلەر</string>
+ <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
+ <string name="empty">تۈرلەر يوق</string>
+ <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
+ <string name="toast_no_application">ھۆججەت ئاچالمىدى</string>
+ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
+ <string name="toast_failed_delete">بەزى پۈتۈكلەرنى ئۆچۈرەلمەيدۇ</string>
+ <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
+ <string name="share_via">ھەمبەھىر ئۇسۇلى</string>
+ <!-- Title of the copy notification [CHAR LIMIT=24] -->
+ <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
+ <!-- Toast shown when a file copy is kicked off -->
+ <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
+ <!-- Title of the copy error notification [CHAR LIMIT=48] -->
+ <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
+ <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
+ <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
+</resources>
diff --git a/packages/DocumentsUI/res/values/cm_colors.xml b/packages/DocumentsUI/res/values/cm_colors.xml
new file mode 100644
index 0000000..1fa1a80
--- /dev/null
+++ b/packages/DocumentsUI/res/values/cm_colors.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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>
+
+ <!-- adding new exposed theme components -->
+ <color name="drawer_background_color">#ffffffff</color>
+ <color name="font_color_doc_grid">#ffffffff</color>
+
+</resources>
diff --git a/packages/DocumentsUI/res/values/cm_dimens.xml b/packages/DocumentsUI/res/values/cm_dimens.xml
new file mode 100644
index 0000000..7388a4f
--- /dev/null
+++ b/packages/DocumentsUI/res/values/cm_dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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="toolbar_elevation">8dp</dimen>
+
+</resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index fc46716..a08f375 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -755,7 +755,7 @@ abstract class BaseActivity extends Activity {
* search currently.
*/
boolean cancelSearch() {
- if (mActionBar.hasExpandedActionView()) {
+ if (mActionBar != null && mActionBar.hasExpandedActionView()) {
mActionBar.collapseActionView();
return true;
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
index 0d326ec..9a86c8e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
@@ -530,8 +530,10 @@ public class DirectoryFragment extends Fragment {
for (int i = 0; i < size; i++) {
if (checked.valueAt(i)) {
final Cursor cursor = mAdapter.getItem(checked.keyAt(i));
- final DocumentInfo doc = DocumentInfo.fromDirectoryCursor(cursor);
- docs.add(doc);
+ if (cursor != null) {
+ final DocumentInfo doc = DocumentInfo.fromDirectoryCursor(cursor);
+ docs.add(doc);
+ }
}
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index a57bcc6..7d6ee2f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -495,7 +495,8 @@ public class DocumentsActivity extends BaseActivity {
createDir.setVisible(false);
}
- advanced.setVisible(!(mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE));
+ advanced.setVisible(!(mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE)
+ && !mState.forceAdvanced);
fileSize.setVisible(fileSizeVisible);
settings.setVisible((mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE)
diff --git a/packages/ExternalStorageProvider/res/values-as-rIN/strings.xml b/packages/ExternalStorageProvider/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-as-rIN/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ast-rES/strings.xml b/packages/ExternalStorageProvider/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..b5c2707
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-ast-rES/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <string name="app_label">Almacenamientu esternu</string>
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <string name="root_internal_storage">Almacenamientu internu</string>
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">Documentos</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-be/strings.xml b/packages/ExternalStorageProvider/res/values-be/strings.xml
new file mode 100644
index 0000000..313324a
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-be/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <string name="app_label">Знешняе сховішча</string>
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <string name="root_internal_storage">Унутраная памяць</string>
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">Дакументы</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-br-rFR/strings.xml b/packages/ExternalStorageProvider/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-br-rFR/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-bs-rBA/strings.xml b/packages/ExternalStorageProvider/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-bs-rBA/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-csb-rPL/strings.xml b/packages/ExternalStorageProvider/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-csb-rPL/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-cy/strings.xml b/packages/ExternalStorageProvider/res/values-cy/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-cy/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-en-rPT/strings.xml b/packages/ExternalStorageProvider/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-en-rPT/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-eo/strings.xml b/packages/ExternalStorageProvider/res/values-eo/strings.xml
new file mode 100644
index 0000000..c1681ed
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-eo/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">Dokumentoj</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-es-rCO/strings.xml b/packages/ExternalStorageProvider/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-es-rCO/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-es-rMX/strings.xml b/packages/ExternalStorageProvider/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-es-rMX/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-frp-rIT/strings.xml b/packages/ExternalStorageProvider/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-frp-rIT/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-fy-rNL/strings.xml b/packages/ExternalStorageProvider/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-fy-rNL/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ga-rIE/strings.xml b/packages/ExternalStorageProvider/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-ga-rIE/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-gd-rGB/strings.xml b/packages/ExternalStorageProvider/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-gd-rGB/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ku/strings.xml b/packages/ExternalStorageProvider/res/values-ku/strings.xml
new file mode 100644
index 0000000..7fef302
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-ku/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <string name="app_label">بیرگەی ده‌ره‌کی</string>
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <string name="root_internal_storage">بیرگەی ناوه‌کی</string>
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">به‌ڵگه‌نامه‌کان</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-lb/strings.xml b/packages/ExternalStorageProvider/res/values-lb/strings.xml
new file mode 100644
index 0000000..a5b0527
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-lb/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <string name="app_label">Externe Späicher</string>
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <string name="root_internal_storage">Interne Späicher</string>
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">Dokumenter</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-oc-rFR/strings.xml b/packages/ExternalStorageProvider/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-oc-rFR/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-or-rIN/strings.xml b/packages/ExternalStorageProvider/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..62b79f8
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-or-rIN/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ug/strings.xml b/packages/ExternalStorageProvider/res/values-ug/strings.xml
new file mode 100644
index 0000000..251612b
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-ug/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of the external storage application [CHAR LIMIT=32] -->
+ <string name="app_label">سىرتقى ساقلىغۇچ</string>
+ <!-- Title for documents backend that offers internal storage. [CHAR LIMIT=24] -->
+ <string name="root_internal_storage">ئىچىدىكى ساقلىغۇچ</string>
+ <!-- Title for documents backend that offers documents. [CHAR LIMIT=24] -->
+ <string name="root_documents">پۈتۈكلەر</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index 18335b6..46b73d8 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -169,6 +169,14 @@ public class ExternalStorageProvider extends DocumentsProvider {
root.visiblePath = null;
}
root.path = volume.getInternalPathForUser(userId);
+
+ // Force all ext4/f2fs sdcard acccess through the sdcard FUSE layer to ensure the
+ // correct permissions for accessing files and directories.
+ if (volume.getType() == VolumeInfo.TYPE_PUBLIC && root.visiblePath != null
+ && ("ext4".equals(volume.fsType) || "f2fs".equals(volume.fsType))) {
+ root.path = root.visiblePath;
+ }
+
root.docId = getDocIdForFile(root.path);
} catch (FileNotFoundException e) {
diff --git a/packages/FusedLocation/res/values-as-rIN/strings.xml b/packages/FusedLocation/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-as-rIN/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-ast-rES/strings.xml b/packages/FusedLocation/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..e2ede7c
--- /dev/null
+++ b/packages/FusedLocation/res/values-ast-rES/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Llocalización combinada</string>
+</resources>
diff --git a/packages/FusedLocation/res/values-be/strings.xml b/packages/FusedLocation/res/values-be/strings.xml
new file mode 100644
index 0000000..44c6c5a
--- /dev/null
+++ b/packages/FusedLocation/res/values-be/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Fused Location</string>
+</resources>
diff --git a/packages/FusedLocation/res/values-br-rFR/strings.xml b/packages/FusedLocation/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-br-rFR/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-bs-rBA/strings.xml b/packages/FusedLocation/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-bs-rBA/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-csb-rPL/strings.xml b/packages/FusedLocation/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-csb-rPL/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-cy/strings.xml b/packages/FusedLocation/res/values-cy/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-cy/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-en-rPT/strings.xml b/packages/FusedLocation/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-en-rPT/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-eo/strings.xml b/packages/FusedLocation/res/values-eo/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-eo/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-es-rCO/strings.xml b/packages/FusedLocation/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-es-rCO/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-es-rMX/strings.xml b/packages/FusedLocation/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-es-rMX/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-frp-rIT/strings.xml b/packages/FusedLocation/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-frp-rIT/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-fy-rNL/strings.xml b/packages/FusedLocation/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-fy-rNL/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-ga-rIE/strings.xml b/packages/FusedLocation/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-ga-rIE/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-gd-rGB/strings.xml b/packages/FusedLocation/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-gd-rGB/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-kk-rKZ/strings.xml b/packages/FusedLocation/res/values-kk-rKZ/strings.xml
index 0d2cccc..c90831d 100644
--- a/packages/FusedLocation/res/values-kk-rKZ/strings.xml
+++ b/packages/FusedLocation/res/values-kk-rKZ/strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="5379477904423203699">"Fused Location"</string>
+ <string name="app_label" msgid="5379477904423203699">"Аймақ табу құралдарының торабы"</string>
</resources>
diff --git a/packages/FusedLocation/res/values-ku/strings.xml b/packages/FusedLocation/res/values-ku/strings.xml
new file mode 100644
index 0000000..06c99da
--- /dev/null
+++ b/packages/FusedLocation/res/values-ku/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">شوێنه‌ فیوزه‌کان</string>
+</resources>
diff --git a/packages/FusedLocation/res/values-lb/strings.xml b/packages/FusedLocation/res/values-lb/strings.xml
new file mode 100644
index 0000000..964c2fd
--- /dev/null
+++ b/packages/FusedLocation/res/values-lb/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Fusionéiert Lokaliséierung</string>
+</resources>
diff --git a/packages/FusedLocation/res/values-oc-rFR/strings.xml b/packages/FusedLocation/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-oc-rFR/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-or-rIN/strings.xml b/packages/FusedLocation/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..19fd84c
--- /dev/null
+++ b/packages/FusedLocation/res/values-or-rIN/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/FusedLocation/res/values-ug/strings.xml b/packages/FusedLocation/res/values-ug/strings.xml
new file mode 100644
index 0000000..0c38cfa
--- /dev/null
+++ b/packages/FusedLocation/res/values-ug/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">بىرلەشكەن ئورنى</string>
+</resources>
diff --git a/packages/InputDevices/res/values-as-rIN/strings.xml b/packages/InputDevices/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-as-rIN/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-ast-rES/strings.xml b/packages/InputDevices/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..6870a2a
--- /dev/null
+++ b/packages/InputDevices/res/values-ast-rES/strings.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Preseos d\'entrada</string>
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <string name="keyboard_layouts_label">Tecláu d\'Android</string>
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_uk_label">Inglés (UK)</string>
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_label">Inglés (US)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">Inglés (US), estilu International</string>
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_colemak_label">Inglés (US), estilu Colemak</string>
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_dvorak_label">Inglés (US), estilu Dvorak</string>
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">Alemán</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">Francés</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">Francés (Canadá)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">Rusu</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_mac_label">Rusu, estilu Mac</string>
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">Español</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_french_label">Francés de Suiza</string>
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_german_label">Alemán suizu</string>
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">Belga</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">Búlgaru</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">Italianu</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">Danés</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">Noruegu</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">Suecu</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">Finlandés</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">Croata</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">Checu</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">Estoniu</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">Húngaru</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">Islandés</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">Brasileñu</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">Portugués</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">Eslovacu</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">Eslovenu</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">Turcu</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">Ucrainianu</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_arabic">Árabe</string>
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_greek">Griegu</string>
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hebrew">Hebréu</string>
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_lithuanian">Lituanu</string>
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_latin">Español (Llatinu)</string>
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_latvian">Letón</string>
+</resources>
diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml
new file mode 100644
index 0000000..9bca6cc
--- /dev/null
+++ b/packages/InputDevices/res/values-be/strings.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Прылады ўводу</string>
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <string name="keyboard_layouts_label">Клавіятура Android</string>
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_uk_label">Англійская (Вялікабрытанія)</string>
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_label">Англійская (ЗША)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">Англійская (ЗША, міжнародная)</string>
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_colemak_label">Англійская (ЗША, Colemak)</string>
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_dvorak_label">Англійская (ЗША, Dvorak)</string>
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">Нямецкая</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">Французская</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">Французская (Канада)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">Руская</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_mac_label">Руская, раскладка Mac</string>
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">Іспанская</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_french_label">Французская (Швейцарыя)</string>
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_german_label">Нямецкая (Швейцарыя)</string>
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">Бельгійская</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">Балгарская</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">Італьянская</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">Дацкая</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">Нарвежская</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">Шведская</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">Фінская</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">Харвацкая</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">Чэшская</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">Эстонская</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">Венгерская</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">Ісландская</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">Бразільская</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">Партугальская</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">Славацкая</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">Славенская</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">Турэцкая</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">Украінская</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_arabic">Арабская</string>
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_greek">Грэцкая</string>
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hebrew">Hebrew</string>
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_lithuanian">Літоўская</string>
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_latin">Іспанская (Лацінская Амерыка)</string>
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_latvian">Латышская</string>
+</resources>
diff --git a/packages/InputDevices/res/values-br-rFR/strings.xml b/packages/InputDevices/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-br-rFR/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-bs-rBA/strings.xml b/packages/InputDevices/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-bs-rBA/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-csb-rPL/strings.xml b/packages/InputDevices/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-csb-rPL/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-cy/strings.xml b/packages/InputDevices/res/values-cy/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-cy/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-en-rPT/strings.xml b/packages/InputDevices/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-en-rPT/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-eo/strings.xml b/packages/InputDevices/res/values-eo/strings.xml
new file mode 100644
index 0000000..1e70b04
--- /dev/null
+++ b/packages/InputDevices/res/values-eo/strings.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">Germana</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">Franca</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">Franca (Kanado)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">Rusa</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">Hispana</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">Belga</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">Bulgara</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">Itala</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">Dana</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">Norvega</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">Sveda</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">Finna</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">Kroata</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">Ĉeĥa</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">Estona</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">Hungara</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">Islanda</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">Brazila</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">Portugala</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">Slovaka</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">Slovena</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">Turka</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">Ukraina</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_arabic">Araba</string>
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_greek">Greka</string>
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hebrew">Hebrea</string>
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_lithuanian">Litova</string>
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_latvian">Latva</string>
+</resources>
diff --git a/packages/InputDevices/res/values-es-rCO/strings.xml b/packages/InputDevices/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-es-rCO/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-es-rMX/strings.xml b/packages/InputDevices/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-es-rMX/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-frp-rIT/strings.xml b/packages/InputDevices/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-frp-rIT/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-fy-rNL/strings.xml b/packages/InputDevices/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-fy-rNL/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-ga-rIE/strings.xml b/packages/InputDevices/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-ga-rIE/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-gd-rGB/strings.xml b/packages/InputDevices/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-gd-rGB/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-ku/strings.xml b/packages/InputDevices/res/values-ku/strings.xml
new file mode 100644
index 0000000..43c774c
--- /dev/null
+++ b/packages/InputDevices/res/values-ku/strings.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">ئامێری تێچان</string>
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <string name="keyboard_layouts_label">ته‌خته‌کلیلی ئه‌ندرۆید</string>
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_uk_label">ئینگلیزی (به‌ریتانیا)</string>
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_label">ئینگلیزی (ئه‌مریکا)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">ئینگلیزی (ئه‌مریکا)، شێوازی نێوده‌وڵه‌تی</string>
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_colemak_label">ئینگلیزی (ئه‌مریکا)، شێوازی کۆلیمارک</string>
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_dvorak_label">ئینگلیزی(ئه‌مریکا)، شێوازی دڤۆراک</string>
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">ئه‌ڵمانی</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">فه‌ره‌نسی</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">فه‌ره‌نسی (که‌نه‌دا)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">ڕووسی</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_mac_label">ڕووسی، شێوازی ماک</string>
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">ئیسپانی</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_french_label">فه‌ره‌نسیی سویسری</string>
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_german_label">فه‌ره‌نسیی ئه‌ڵمانی</string>
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">به‌لجیکی</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">بولگاری</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">ئیتالی</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">دانی</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">نه‌رویجی</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">سویدی</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">فینله‌ندی</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">کرواتی</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">چیکی</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">ئیستۆنی</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">هه‌نگاری</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">ئایسله‌ندی</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">به‌ڕازیلی</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">پورتوگالی</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">سلۆڤاکی</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">سلۆڤینی</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">تورکی</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">ئۆکرانی</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-lb/strings.xml b/packages/InputDevices/res/values-lb/strings.xml
new file mode 100644
index 0000000..2441b02
--- /dev/null
+++ b/packages/InputDevices/res/values-lb/strings.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">Apparater fir anzeginn</string>
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <string name="keyboard_layouts_label">Android-Tastatur</string>
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_uk_label">Englesch (Groussbritannien)</string>
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_label">Englesch (USA)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">Englesch (USA), international</string>
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_colemak_label">Englesch (USA), Colemak</string>
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_dvorak_label">Englesch (USA), Dvorak</string>
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">Däitsch</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">Franséisch</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">Franséisch (Kanada)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">Russesch</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_mac_label">Russesch, Mac</string>
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">Spuenesch</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_french_label">Schwäizer Franséisch</string>
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_german_label">Schwäizer Däitsch</string>
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">Belsch</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">Bulgaresch</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">Italienesch</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">Dänesch</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">Norwegesch</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">Schwedesch</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">Finnesch</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">Kroatesch</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">Tschechesch</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">Estnesch</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">Ungaresch</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">Islännesch</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">Brasilianesch</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">Portugisesch</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">Slowakesch</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">Slowenesch</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">Tierkesch</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">Ukrainesch</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_arabic">Arabesch</string>
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_greek">Griichesch</string>
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hebrew">Hebräesch</string>
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_lithuanian">Litauesch</string>
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_latin">Spuenesch (Latäin)</string>
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_latvian">Lettesch</string>
+</resources>
diff --git a/packages/InputDevices/res/values-oc-rFR/strings.xml b/packages/InputDevices/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-oc-rFR/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-or-rIN/strings.xml b/packages/InputDevices/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..1f992a5
--- /dev/null
+++ b/packages/InputDevices/res/values-or-rIN/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/InputDevices/res/values-ug/strings.xml b/packages/InputDevices/res/values-ug/strings.xml
new file mode 100644
index 0000000..a793948
--- /dev/null
+++ b/packages/InputDevices/res/values-ug/strings.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <!-- Name of the application. [CHAR LIMIT=35] -->
+ <string name="app_label">كىرگۈزۈش ئۈسكۈنىلىرى</string>
+ <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
+ <string name="keyboard_layouts_label">ئاندىرويىد ھەرپتاختا</string>
+ <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_uk_label">ئىنگلىزچە (ئەنگلىيە)</string>
+ <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_label">ئىنگلىزچە (ئا ق ش)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">ئىنگلىزچە (ئا ق ش)، خەلقئارا ئۇسلۇبى</string>
+ <!-- US English (Colemak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_colemak_label">ئىنگلىزچە (ئا ق ش)، Colemak ئۇسلۇبى</string>
+ <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_dvorak_label">ئىنگلىزچە (ئا ق ش)، Dvorak ئۇسلۇبى</string>
+ <!-- German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_german_label">گېرمانچە</string>
+ <!-- French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_label">فىرانسۇزچە</string>
+ <!-- Canadian French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_french_ca_label">فىرانسۇزچە (كانادا)</string>
+ <!-- Russian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_label">رۇسچە</string>
+ <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_russian_mac_label">رۇسچە، Mac ئۇسلۇبى</string>
+ <!-- Spanish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_spanish_label">ئىسپانچە</string>
+ <!-- Swiss French keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_french_label">فىرانسۇزچە شىۋېتسارىيە</string>
+ <!-- Swiss German keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swiss_german_label">گېرمانچە شىۋېتسارىيە</string>
+ <!-- Belgian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_belgian">بېلگىيەچە</string>
+ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_bulgarian">بۇلغارچە</string>
+ <!-- Italian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_italian">ئىتالىيانچە</string>
+ <!-- Danish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_danish">دانىشچە</string>
+ <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_norwegian">نورۋىگىيەچە</string>
+ <!-- Swedish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_swedish">شۋېدچە</string>
+ <!-- Finnish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_finnish">فىنچە</string>
+ <!-- Croatian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_croatian">خورۋاتچە</string>
+ <!-- Czech keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_czech">چېخچە</string>
+ <!-- Estonian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_estonian">ئېستونچە</string>
+ <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_hungarian">ھونگىرچە</string>
+ <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_icelandic">ئىسلاندچە</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">بىرازىلىيەچە</string>
+ <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_portuguese">پورتۇگالچە</string>
+ <!-- Slovak keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovak">سلوۋاكچە</string>
+ <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_slovenian">سىلوۋېنىيەچە</string>
+ <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_turkish">تۈركچە</string>
+ <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_ukrainian">ئۇكرائىنچە</string>
+ <!-- Arabic keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Greek keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Hebrew keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Lithuanian keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Spanish (Latin) keyboard layout label. [CHAR LIMIT=35] -->
+ <!-- Latvian keyboard layout label. [CHAR LIMIT=35] -->
+</resources>
diff --git a/packages/Keyguard/Android.mk b/packages/Keyguard/Android.mk
index 9083212..ad33536f 100644
--- a/packages/Keyguard/Android.mk
+++ b/packages/Keyguard/Android.mk
@@ -18,6 +18,8 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-subdir-Iaidl-files)
+LOCAL_STATIC_JAVA_LIBRARIES := org.cyanogenmod.platform.sdk
+
LOCAL_MODULE := Keyguard
LOCAL_CERTIFICATE := platform
diff --git a/packages/Keyguard/res/layout/keyguard_pin_view.xml b/packages/Keyguard/res/layout/keyguard_pin_view.xml
index d3fb982..b0a86bb 100644
--- a/packages/Keyguard/res/layout/keyguard_pin_view.xml
+++ b/packages/Keyguard/res/layout/keyguard_pin_view.xml
@@ -78,7 +78,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
- android:background="#28FFFFFF"
+ android:background="@color/keyguard_sim_view_divider"
/>
</com.android.keyguard.AlphaOptimizedRelativeLayout>
<LinearLayout
diff --git a/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml b/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml
index b0a93e6..fe514a6 100644
--- a/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml
+++ b/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml
@@ -83,7 +83,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
- android:background="#28FFFFFF"
+ android:background="@color/keyguard_sim_view_divider"
/>
</RelativeLayout>
<LinearLayout
diff --git a/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml b/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml
index cf41bd3..30cc815 100644
--- a/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml
+++ b/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml
@@ -84,7 +84,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
- android:background="#28FFFFFF"
+ android:background="@color/keyguard_sim_view_divider"
/>
</RelativeLayout>
<LinearLayout
diff --git a/packages/Keyguard/res/layout/keyguard_status_view.xml b/packages/Keyguard/res/layout/keyguard_status_view.xml
index fc0b568..e957f6a 100644
--- a/packages/Keyguard/res/layout/keyguard_status_view.xml
+++ b/packages/Keyguard/res/layout/keyguard_status_view.xml
@@ -34,6 +34,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|top"
android:orientation="vertical" >
+
<TextClock
android:id="@+id/clock_view"
android:layout_width="wrap_content"
@@ -47,6 +48,19 @@
android:layout_marginBottom="@dimen/bottom_text_spacing_digital" />
<include layout="@layout/keyguard_status_area" />
+
+ <TextView android:id="@+id/weather_info"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:textColor="@color/clock_white"
+ style="@style/widget_label"
+ android:textAllCaps="true"
+ android:letterSpacing="0.15"
+ android:gravity="center"
+ android:singleLine="true"
+ android:visibility="gone"/>
+
<TextView
android:id="@+id/owner_info"
android:layout_marginLeft="16dp"
diff --git a/packages/Keyguard/res/values-af/cm_strings.xml b/packages/Keyguard/res/values-af/cm_strings.xml
new file mode 100644
index 0000000..1605f19
--- /dev/null
+++ b/packages/Keyguard/res/values-af/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM Perso gesluit</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ongeldige kaart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Sleutel SIM PIN, jy het <xliff:g id="number">%d</xliff:g> oorblywende poging voordat jy jou diensverskaffer moet kontak om jou toestel te ontsluit.</item>
+ <item quantity="other">Sleutel SIM PIN, Jy het <xliff:g id="number">%d</xliff:g> oorblywende pogings oor.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fout: Invoer is korter as die minimum lengte</string>
+</resources>
diff --git a/packages/Keyguard/res/values-am/cm_strings.xml b/packages/Keyguard/res/values-am/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-am/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ar/cm_strings.xml b/packages/Keyguard/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..348be57
--- /dev/null
+++ b/packages/Keyguard/res/values-ar/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">الشريحة SIM مغلقة</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">بطاقة غير صالحة.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">خطأ: المدخل أقصر من الحد الأدنى للطول</string>
+</resources>
diff --git a/packages/Keyguard/res/values-as-rIN/cm_strings.xml b/packages/Keyguard/res/values-as-rIN/cm_strings.xml
new file mode 100644
index 0000000..9f70040
--- /dev/null
+++ b/packages/Keyguard/res/values-as-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM কাৰ্ড পাৰ্চো লক কৰা আছে</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">অবৈধ কাৰ্ড।</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">আপোনাৰ SIM PIN প্ৰৱেশ কৰক, আপোনাৰ <xliff:g id="number">%d</xliff:g>টা প্ৰচেষ্টা বাকী আছে, তাৰ আগতে আপুনি ডিভাইচ আনলক কৰিবলৈ কেৰিয়াৰক যোগাযোগ কৰিবই লাগিব।</item>
+ <item quantity="other">SIM PIN প্ৰৱেশ কৰক, আপোনাৰ <xliff:g id="number">%d</xliff:g>টা প্ৰচেষ্টা বাকী আছে।</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">ত্ৰুটি: ইনপুট ন্যূনতম দৈৰ্ঘতকৈ চুটি</string>
+</resources>
diff --git a/packages/Keyguard/res/values-as-rIN/strings.xml b/packages/Keyguard/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-as-rIN/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-ast-rES/cm_strings.xml b/packages/Keyguard/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..5099baf
--- /dev/null
+++ b/packages/Keyguard/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM con bloquéu personal</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Tarxeta inválida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fallu: La entrada ye más curtia que\'l llargor mínimu</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ast-rES/strings.xml b/packages/Keyguard/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..c268778
--- /dev/null
+++ b/packages/Keyguard/res/values-ast-rES/strings.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <string name="app_name">Bloquéu</string>
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_code">Inxerta\'l códigu PIN.</string>
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_puk_code">Escribi\'l PUK de la tarxeta SIM y un códigu PIN nuevu</string>
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_puk_prompt">Códigu PUK de la tarxeta SIM</string>
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_pin_prompt">Códigu nuevu PIN de tarxeta SIM</string>
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <string name="keyguard_password_entry_touch_hint"><font size="17">Toca pa introducir contraseña</font></string>
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_password_code">Inxerta la contraseña pa desbloquiar.</string>
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_password_code">Inxerta\'l códigu PIN pa desbloquiar.</string>
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <string name="keyguard_password_wrong_pin_code">Códigu PIN incorreutu</string>
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <string name="keyguard_charged">Cargada</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <string name="keyguard_plugged_in">Cargando</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <string name="keyguard_plugged_in_charging_fast">Carga rápida</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <string name="keyguard_plugged_in_charging_slowly">Carga lenta</string>
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <string name="keyguard_low_battery">Coneuta\'l cargador.</string>
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <string name="keyguard_instructions_when_pattern_disabled">Empobina al menú pa desbloquiar la pantalla.</string>
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <string name="keyguard_network_locked_message">Bloquiada pa la rede</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message_short">Falta la tarxeta SIM</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="tablet">Nun s\'inxertó nenguna tarxeta SIM na tablet.</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="default">Nun s\'inxertó nenguna tarxeta SIM nel teléfonu.</string>
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <string name="keyguard_missing_sim_instructions">Inxerta una tarxeta SIM.</string>
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <string name="keyguard_missing_sim_instructions_long">Falta la tarxeta SIM o nun pue lleese. Inxerta una tarxeta SIM.</string>
+ <!-- Shown when SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_message_short">Tarxeta SIM inutilizable</string>
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_instructions">La to tarxeta SIM inhabilitóse dafechu.\n Pa obtener otra, ponte en contautu col to fornidor de servicios de telefonía.</string>
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="keyguard_sim_locked_message">La tarxeta SIM ta bloquiada.</string>
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <string name="keyguard_sim_puk_locked_message">La tarxeta SIM ta bloquiada col códigu PUK.</string>
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <string name="keyguard_sim_unlock_progress_dialog_message">Desbloquiando tarxeta SIM…</string>
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <string name="keyguard_accessibility_pattern_unlock">Desbloquéu por patrón</string>
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pin_unlock">Desbloquéu por PIN</string>
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_password_unlock">Desbloquéu por contraseña</string>
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">Área de patrón</string>
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_slide_area">Área pa eslizar</string>
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_next_alarm">Próxima alarma afitada a les <xliff:g id="alarm" example="Fri 8:30 AM">%1$s</xliff:g></string>
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_delete">Desaniciar</string>
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_enter">Intro</string>
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <string name="kg_forgot_pattern_button_text">¿Escaecisti\'l patrón?</string>
+ <!-- Message shown when user enters wrong pattern -->
+ <string name="kg_wrong_pattern">El patrón ye incorreutu</string>
+ <!-- Message shown when user enters wrong password -->
+ <string name="kg_wrong_password">Contraseña incorreuta</string>
+ <!-- Message shown when user enters wrong PIN -->
+ <string name="kg_wrong_pin">PIN incorreutu</string>
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <string name="kg_too_many_failed_attempts_countdown">Inténtalo otra vegada en <xliff:g id="NUMBER">%d</xliff:g> segundos.</string>
+ <!-- Instructions for using the pattern unlock screen -->
+ <string name="kg_pattern_instructions">Dibuxa\'l to patrón de desbloquéu.</string>
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <string name="kg_sim_pin_instructions">Inxerta\'l PIN de la tarxeta SIM.</string>
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <string name="kg_pin_instructions">Inxerta\'l PIN.</string>
+ <!-- Instructions for using the password unlock screen -->
+ <string name="kg_password_instructions">Escribi la contraseña.</string>
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <string name="kg_puk_enter_puk_hint">La tarxeta SIM ta inhabilitada. Pa continuar, inxerta\'l códigu PUK. Si quies más información, ponte en contautu col operador</string>
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <string name="kg_puk_enter_pin_hint">Inxerta\'l códigu PIN deseáu</string>
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <string name="kg_enter_confirm_pin_hint">Confirma\'l códigu PIN</string>
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <string name="kg_sim_unlock_progress_dialog_message">Desbloquiando tarxeta SIM…</string>
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <string name="kg_invalid_sim_pin_hint">Inxerta un códigu PIN con una llonxitú ente cuatro y ocho díxitos.</string>
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <string name="kg_invalid_sim_puk_hint">El códigu PUK tien de tener ocho númberos como mínimu.</string>
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <string name="kg_invalid_puk">Vuelvi a inxertar el códigu PUK correutu. Si inxertes un códigu incorreutu delles vegaes, va inhabilitase la tarxeta SIM.</string>
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <string name="kg_invalid_confirm_pin_hint" product="default">Los códigos PIN nun concasen.</string>
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <string name="kg_login_too_many_attempts">Abondos intentos incorreutos de crear el patrón</string>
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <string name="kg_too_many_failed_pin_attempts_dialog_message">Inxertasti un códigu PIN incorreutu <xliff:g id="NUMBER_0">%d</xliff:g> vegaes. \n\nInténtalo otra vegada en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</string>
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <string name="kg_too_many_failed_password_attempts_dialog_message">Inxertasti una contraseña incorreuta <xliff:g id="NUMBER_0">%d</xliff:g> vegaes. \n\nInténtalo otra vegada en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message">Fallasti <xliff:g id="NUMBER_0">%d</xliff:g> vegaes al dibuxar el patrón de desbloquéu. \n\nInténtalo otra vegada en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet">
+ Intentasti desbloquiar la tablet <xliff:g id="number">%d</xliff:g> vegaes.
+ Dempués de <xliff:g id="number">%d</xliff:g> intentos fallíos más,
+ esta tablet va resetease, desaniciando tolos sos datos.
+ </string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_wipe" product="default">
+ Intentasti desbloquiar el teléfonu tablet <xliff:g id="number">%d</xliff:g> vegaes.
+ Dempués de <xliff:g id="number">%d</xliff:g> intentos fallíos más,
+ esta tablet va resetease, desaniciando tolos sos datos.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_wiping" product="tablet">
+ Intentasti desbloquiar la tablet <xliff:g id="number">%d</xliff:g> vegaes.
+ Esta tablet va resetease, desaniciando tolos sos datos. </string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="tablet">Fallasti <xliff:g id="NUMBER_0">%d</xliff:g> vegaes al dibuxar el patrón de desbloquéu. Si falles otres <xliff:g id="NUMBER_1">%d</xliff:g> vegaes, vas tener d\'usar una cuenta de corréu-e pa desbloquiar la tablet.\n\n Inténtalo otra vegada en <xliff:g id="NUMBER_2">%d</xliff:g> segundos.</string>
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="default">Fallasti <xliff:g id="NUMBER_0">%d</xliff:g> vegaes al dibuxar el patrón de desbloquéu. Si falles otres <xliff:g id="NUMBER_1">%d</xliff:g> vegaes, vas tener d\'usar una cuenta de corréu-e pa desbloquiar el teléfonu.\n\n Inténtalo otra vegada en <xliff:g id="NUMBER_2">%d</xliff:g> segundos.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_pin_code_pukked">Códigu PIN de la tarxeta SIM incorreutu. Tienes de contautar col to operador pa desbloquiar el preséu.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_pin_code">
+ <item quantity="one">Códigu PIN de la tarxeta SIM incorreutu. Queda <xliff:g id="NUMBER">%d</xliff:g> intentu pa tener que ponete en contautu col to operador pa desbloquiar el preséu.</item>
+ <item quantity="other">Códigu PIN de la tarxeta SIM incorreutu. Queden <xliff:g id="NUMBER">%d</xliff:g> intentos.</item>
+ </plurals>
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_puk_code_dead">La tarxeta SIM nun pue usase. Ponte en contautu col to operador.</string>
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_puk_code">
+ <item quantity="one">Códigu PUK de la tarxeta SIM incorreutu. Quédate <xliff:g id="NUMBER">%d</xliff:g> intentu pa que la tarxeta SIM nun pueda usase de mou permanente.</item>
+ <item quantity="other">Códigu PUK de la tarxeta SIM incorreutu. Quédente <xliff:g id="NUMBER">%d</xliff:g> intentos pa que la tarxeta SIM nun pueda usase de mou permanente.</item>
+ </plurals>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <string name="kg_password_pin_failed">Fallu al intentar desbloquiar la tarxeta SIM col códigu PIN</string>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <string name="kg_password_puk_failed">Fallu al intentar desbloquiar la tarxeta SIM col códigu PUK</string>
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <string name="kg_pin_accepted">Códigu aceutáu</string>
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <string name="keyguard_carrier_default">Ensin serviciu</string>
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <string name="airplane_mode">Mou avión</string>
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_restart_pattern">Solicítase\'l patrón al reaniciar el preséu.</string>
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_restart_pin">Solicítase\'l PIN al reaniciar el preséu.</string>
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_restart_password">Solicítase la contraseña al reaniciar el preséu</string>
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_timeout_pattern">Solicítase\'l patrón por razones de seguridá.</string>
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_timeout_pin">Por razones de seguridá solicítase\'l PIN.</string>
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_timeout_password">Por razones de seguridá, ingresa la contraseña.</string>
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_switch_profiles_pattern">Solicítase\'l patrón al camudar de perfil.</string>
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_switch_profiles_pin">Solicítase\'l PIN al camudar de perfil.</string>
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <string name="kg_prompt_reason_switch_profiles_password">Solicítase la contraseña al camudar de perfil.</string>
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <plurals name="kg_prompt_reason_time_pattern">
+ <item quantity="one">Hai <xliff:g id="number">%d</xliff:g> hora que nun se desbloquia\'l preséu. Confirma\'l patrón.</item>
+ <item quantity="other">Hai <xliff:g id="number">%d</xliff:g> hores que nun se desbloquia\'l preséu. Confirma\'l patrón.</item>
+ </plurals>
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <plurals name="kg_prompt_reason_time_pin">
+ <item quantity="one">Hai <xliff:g id="number">%d</xliff:g> hora que nun se desbloquia\'l preséu. Confirma\'l PIN.</item>
+ <item quantity="other">Hai <xliff:g id="number">%d</xliff:g> hores que nun se desbloquia\'l preséu. Confirma\'l PIN.</item>
+ </plurals>
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <plurals name="kg_prompt_reason_time_password">
+ <item quantity="one">Hai <xliff:g id="number">%d</xliff:g> hora que nun se desbloquia\'l preséu. Confirma la contraseña.</item>
+ <item quantity="other">Hai <xliff:g id="number">%d</xliff:g> hores que nun se desbloquia\'l preséu. Confirma la contraseña.</item>
+ </plurals>
+ <!-- Fingerprint hint message when finger was not recognized.-->
+ <string name="fingerprint_not_recognized">Non reconocío</string>
+</resources>
diff --git a/packages/Keyguard/res/values-az-rAZ/cm_strings.xml b/packages/Keyguard/res/values-az-rAZ/cm_strings.xml
new file mode 100644
index 0000000..46ee7e1
--- /dev/null
+++ b/packages/Keyguard/res/values-az-rAZ/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Etibarsız kart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-be/cm_strings.xml b/packages/Keyguard/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..74002f0
--- /dev/null
+++ b/packages/Keyguard/res/values-be/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-картка заблакавана аператарам</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Памылка карты.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Увядзіце PIN-код. У вас засталася <xliff:g id="number">%d</xliff:g> спроба перад тым, як вам давядзецца звярнуцца да аператара дзеля разблакоўкі.</item>
+ <item quantity="few">Увядзіце PIN-код. У вас засталося<xliff:g id="number">%d</xliff:g> спробы.</item>
+ <item quantity="other">Увядзіце PIN-код. У вас засталося <xliff:g id="number">%d</xliff:g> спробы.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Памылка: маленькая даўжыня</string>
+</resources>
diff --git a/packages/Keyguard/res/values-be/strings.xml b/packages/Keyguard/res/values-be/strings.xml
new file mode 100644
index 0000000..7378ef8
--- /dev/null
+++ b/packages/Keyguard/res/values-be/strings.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <string name="airplane_mode">Рэжым лёту</string>
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-bg/cm_strings.xml b/packages/Keyguard/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..6ac51c5
--- /dev/null
+++ b/packages/Keyguard/res/values-bg/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">СИМ картата е блокирана от оператора</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Невалидна карта.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Въведете ПИН кода на СИМ картата, имате още <xliff:g id="number">%d </xliff:g> останал опит, преди да трябва да се свържете с вашия оператор за отключване на устройството.</item>
+ <item quantity="other">Въведете ПИН кода на СИМ картата, имате още <xliff:g id="number">%d </xliff:g> останали опити.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Грешка: Въведеното е по-късо от минималната дължина</string>
+</resources>
diff --git a/packages/Keyguard/res/values-bn-rBD/cm_strings.xml b/packages/Keyguard/res/values-bn-rBD/cm_strings.xml
new file mode 100644
index 0000000..5f1282b
--- /dev/null
+++ b/packages/Keyguard/res/values-bn-rBD/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">অবৈধ কার্ড।</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-br-rFR/cm_strings.xml b/packages/Keyguard/res/values-br-rFR/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-br-rFR/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-br-rFR/strings.xml b/packages/Keyguard/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-br-rFR/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-bs-rBA/cm_strings.xml b/packages/Keyguard/res/values-bs-rBA/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-bs-rBA/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-bs-rBA/strings.xml b/packages/Keyguard/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-bs-rBA/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-ca/cm_strings.xml b/packages/Keyguard/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..553478b
--- /dev/null
+++ b/packages/Keyguard/res/values-ca/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">La targeta SIM té un bloqueig Personal</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Targeta invàlida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Introdueix el PIN de la SIM, tens <xliff:g id="number">%d</xliff:g> intent restant abans que hagis de contactar amb el teu operador per desbloquejar el teu dispositiu.</item>
+ <item quantity="other">Introdueix el PIN de la SIM, tens <xliff:g id="number">%d</xliff:g> intents restants.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: L\'entrada és més curta que la longitud mínima</string>
+</resources>
diff --git a/packages/Keyguard/res/values-cs/cm_strings.xml b/packages/Keyguard/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..a66d9a4
--- /dev/null
+++ b/packages/Keyguard/res/values-cs/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM je zamčená pomocí Perso</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Neplatná SIM karta.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Zadejte PIN kód, máte <xliff:g id="number">%d</xliff:g> zbývající pokus než budete muset kontaktovat operátora pro odemčení zařízení.</item>
+ <item quantity="few">Zadejte PIN kód, máte <xliff:g id="number">%d</xliff:g> zbývající pokusy.</item>
+ <item quantity="other">Zadejte PIN kód, máte <xliff:g id="number">%d</xliff:g> zbývajících pokusů.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Chyba: vstup je kratší než minimální délka</string>
+</resources>
diff --git a/packages/Keyguard/res/values-csb-rPL/cm_strings.xml b/packages/Keyguard/res/values-csb-rPL/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-csb-rPL/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-csb-rPL/strings.xml b/packages/Keyguard/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-csb-rPL/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-cy/cm_strings.xml b/packages/Keyguard/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-cy/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-cy/strings.xml b/packages/Keyguard/res/values-cy/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-cy/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-da/cm_strings.xml b/packages/Keyguard/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..9fd131c
--- /dev/null
+++ b/packages/Keyguard/res/values-da/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-kortet er Perso-låst</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ugyldigt SIM-kort.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fejl: Input er kortere end minimumslængden</string>
+</resources>
diff --git a/packages/Keyguard/res/values-de/cm_strings.xml b/packages/Keyguard/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..d5bf58d
--- /dev/null
+++ b/packages/Keyguard/res/values-de/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-Karte ist gesperrt</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ungültige SIM-Karte.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM-PIN eingeben. Sie haben noch <xliff:g id="number">%d</xliff:g> Versuch, bevor Sie den Netzbetreiber zum Entsperren des Geräts kontaktieren müssen.</item>
+ <item quantity="other">SIM-PIN eingeben. Sie haben noch <xliff:g id="number">%d</xliff:g> Versuche, bevor Sie den Netzbetreiber zum Entsperren des Gerätes kontaktieren müssen.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fehler: Eingabe ist kürzer als die Mindestlänge.</string>
+</resources>
diff --git a/packages/Keyguard/res/values-el/cm_strings.xml b/packages/Keyguard/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..78e5498
--- /dev/null
+++ b/packages/Keyguard/res/values-el/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Η κάρτα SIM είναι κλειδωμένη</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Μη έγκυρη κάρτα.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Εισάγετε το PIN, έχετε <xliff:g id="number">%d</xliff:g> προσπάθειες πριν χρειαστεί να επικοινωνήσετε με τον πάροχό σας για να ξεκλειδώσετε τη συσκευή σας.</item>
+ <item quantity="other">Εισάγετε το PIN, έχετε <xliff:g id="number">%d</xliff:g> προσπάθειες.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Σφάλμα: Το μήκος εισόδου είναι μικρότερο από το ελάχιστο μήκος</string>
+</resources>
diff --git a/packages/Keyguard/res/values-en-rAU/cm_strings.xml b/packages/Keyguard/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..6261b2a
--- /dev/null
+++ b/packages/Keyguard/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Invalid card.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-en-rGB/cm_strings.xml b/packages/Keyguard/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-en-rIN/cm_strings.xml b/packages/Keyguard/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..c0f7bbb
--- /dev/null
+++ b/packages/Keyguard/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM is Perso locked</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Invalid card.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Enter SIM PIN, you have <xliff:g id="number">%d</xliff:g> remaining attempt before you must contact your carrier to unlock your device.</item>
+ <item quantity="other">Enter SIM PIN, you have <xliff:g id="number">%d</xliff:g> remaining attempts.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: Input shorter than minimum length</string>
+</resources>
diff --git a/packages/Keyguard/res/values-en-rPT/cm_strings.xml b/packages/Keyguard/res/values-en-rPT/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-en-rPT/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-en-rPT/strings.xml b/packages/Keyguard/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-en-rPT/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-eo/cm_strings.xml b/packages/Keyguard/res/values-eo/cm_strings.xml
new file mode 100644
index 0000000..02d7be6
--- /dev/null
+++ b/packages/Keyguard/res/values-eo/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Nevalida karto.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-eo/strings.xml b/packages/Keyguard/res/values-eo/strings.xml
new file mode 100644
index 0000000..170dcac
--- /dev/null
+++ b/packages/Keyguard/res/values-eo/strings.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_delete">Forigi</string>
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <string name="keyguard_carrier_default">Neniu servo.</string>
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <string name="airplane_mode">Aviadila reĝimo</string>
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-es-rCO/cm_strings.xml b/packages/Keyguard/res/values-es-rCO/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-es-rCO/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-es-rCO/strings.xml b/packages/Keyguard/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-es-rCO/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-es-rMX/cm_strings.xml b/packages/Keyguard/res/values-es-rMX/cm_strings.xml
new file mode 100644
index 0000000..ff28392
--- /dev/null
+++ b/packages/Keyguard/res/values-es-rMX/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">La tarjeta SIM tiene un bloqueo personalizado</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: La entrada es más corta que la longitud mínima</string>
+</resources>
diff --git a/packages/Keyguard/res/values-es-rMX/strings.xml b/packages/Keyguard/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-es-rMX/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-es-rUS/cm_strings.xml b/packages/Keyguard/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..078fc60
--- /dev/null
+++ b/packages/Keyguard/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">La tarjeta SIM tiene un bloqueo personalizado</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Tarjeta no válida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
+ <item quantity="other">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intentos restantes antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: La entrada es más corta que la longitud mínima</string>
+</resources>
diff --git a/packages/Keyguard/res/values-es/cm_strings.xml b/packages/Keyguard/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..1e2e79a
--- /dev/null
+++ b/packages/Keyguard/res/values-es/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">La tarjeta SIM tiene un bloqueo personalizado</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Tarjeta no válida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intento restante antes de tener que comunicarte con tu operadora para desbloquear el dispositivo.</item>
+ <item quantity="other">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intentos restantes.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: La entrada es más corta que la longitud mínima</string>
+</resources>
diff --git a/packages/Keyguard/res/values-et-rEE/cm_strings.xml b/packages/Keyguard/res/values-et-rEE/cm_strings.xml
new file mode 100644
index 0000000..3a284d7
--- /dev/null
+++ b/packages/Keyguard/res/values-et-rEE/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM on Perso lukustatud</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Kehtetu kaart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Viga: PIN liiga lühike</string>
+</resources>
diff --git a/packages/Keyguard/res/values-eu-rES/cm_strings.xml b/packages/Keyguard/res/values-eu-rES/cm_strings.xml
new file mode 100644
index 0000000..aaed5c3
--- /dev/null
+++ b/packages/Keyguard/res/values-eu-rES/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM txartelak blokeo pertsonala du</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Txartela baliogabea.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Sartu SIM txartelaren PIN kodea, saiakera <xliff:g id="number">%d</xliff:g> geratzen zaizu gailua desblokeatzeko zure operadorearekin kontaktuan jarri behar aurretik.</item>
+ <item quantity="other">Sartu SIM txartelaren PIN kodea, <xliff:g id="number">%d</xliff:g> saiakera geratzen zaizkizu.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Errorea: Sarrera gutxieneko luzera baino laburragoa da</string>
+</resources>
diff --git a/packages/Keyguard/res/values-fa/cm_strings.xml b/packages/Keyguard/res/values-fa/cm_strings.xml
new file mode 100644
index 0000000..d069475
--- /dev/null
+++ b/packages/Keyguard/res/values-fa/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">سیم کارت نامعتبر.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-fi/cm_strings.xml b/packages/Keyguard/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..b8eb2f6
--- /dev/null
+++ b/packages/Keyguard/res/values-fi/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-kortti on Perso-lukittu</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Virheellinen kortti.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Syötä SIM-kortin PIN-koodi, sinulla on <xliff:g id="number">%d</xliff:g> yritys jäljellä, tai sinun on pyydetttävä operaattoriasi poistamaan laitteen lukitus.</item>
+ <item quantity="other">Anna SIM-kortin PIN-koodi, sinulla on <xliff:g id="number">%d</xliff:g> yritystä jäljellä.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Virhe: Syöttö lyhyempi kuin vähimmäispituus</string>
+</resources>
diff --git a/packages/Keyguard/res/values-fil-rPH/cm_strings.xml b/packages/Keyguard/res/values-fil-rPH/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-fil-rPH/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-fr-rCA/cm_strings.xml b/packages/Keyguard/res/values-fr-rCA/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-fr-rCA/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-fr/cm_strings.xml b/packages/Keyguard/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..9cf3816
--- /dev/null
+++ b/packages/Keyguard/res/values-fr/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">La carte SIM possède un verrouillage personnel</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Carte SIM incorrecte.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Entrez le code PIN de la carte SIM, il vous reste <xliff:g id="number">%d</xliff:g> tentative avant d\'avoir à contacter votre opérateur pour déverrouiller votre appareil.</item>
+ <item quantity="other">Entrez le code PIN de la carte SIM, il vous reste <xliff:g id="number">%d</xliff:g> tentatives.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Erreur : code entré trop court</string>
+</resources>
diff --git a/packages/Keyguard/res/values-frp-rIT/cm_strings.xml b/packages/Keyguard/res/values-frp-rIT/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-frp-rIT/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-frp-rIT/strings.xml b/packages/Keyguard/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-frp-rIT/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-fy-rNL/cm_strings.xml b/packages/Keyguard/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-fy-rNL/strings.xml b/packages/Keyguard/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-fy-rNL/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-ga-rIE/cm_strings.xml b/packages/Keyguard/res/values-ga-rIE/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ga-rIE/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ga-rIE/strings.xml b/packages/Keyguard/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-ga-rIE/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-gd-rGB/cm_strings.xml b/packages/Keyguard/res/values-gd-rGB/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-gd-rGB/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-gd-rGB/strings.xml b/packages/Keyguard/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-gd-rGB/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-gl-rES/cm_strings.xml b/packages/Keyguard/res/values-gl-rES/cm_strings.xml
new file mode 100644
index 0000000..4221609
--- /dev/null
+++ b/packages/Keyguard/res/values-gl-rES/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">A SIM/RUIM personalizada está bloqueada</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Esta tarxeta non é válida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Erro: O dato introducido é máis curto có mínimo esixido</string>
+</resources>
diff --git a/packages/Keyguard/res/values-gu-rIN/cm_strings.xml b/packages/Keyguard/res/values-gu-rIN/cm_strings.xml
new file mode 100644
index 0000000..7e4d6f5
--- /dev/null
+++ b/packages/Keyguard/res/values-gu-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM કાર્ડ Perso લૉક કર્યું છે</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">અપ્રમાણિત કાર્ડ.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM PIN દાખલ કરો, તમારું ડિવાઇસ તમારા પ્રદાતા પાસે અનલૉક કરવા તેમનો સંપર્ક સાધતા પહેલાં તમારી પાસે <xliff:g id="number">%d</xliff:g> પ્રયાસો બાકી રહ્યાં છે.</item>
+ <item quantity="other">SIM PIN દાખલ કરો, તમારી પાસે <xliff:g id="number">%d</xliff:g> પ્રયાસો બાકી છે.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">ભૂલ: લધુત્તમ લંબાઇ કરતા ઇનપુટ ટૂંકુ છે</string>
+</resources>
diff --git a/packages/Keyguard/res/values-hi/cm_strings.xml b/packages/Keyguard/res/values-hi/cm_strings.xml
new file mode 100644
index 0000000..db6aed7
--- /dev/null
+++ b/packages/Keyguard/res/values-hi/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">अमान्य कार्ड।</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-hr/cm_strings.xml b/packages/Keyguard/res/values-hr/cm_strings.xml
new file mode 100644
index 0000000..0ccbe4f
--- /dev/null
+++ b/packages/Keyguard/res/values-hr/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM kartica je Perso zaključana</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Kartica nije valjana.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Upišite SIM PIN, preostao vam je <xliff:g id="number">%d</xliff:g> pokušaj nakon čega ćete morati kontaktirati svog pružatelja usluga da otključa vaš uređaj.</item>
+ <item quantity="few">Upišite SIM PIN, preostalo vam je <xliff:g id="number">%d</xliff:g> pokušaja.</item>
+ <item quantity="other">Upišite SIM PIN, preostalo vam je <xliff:g id="number">%d</xliff:g> pokušaja.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Pogreška: Ulaz je kraći od minimalne potrebne duljine</string>
+</resources>
diff --git a/packages/Keyguard/res/values-hu/cm_strings.xml b/packages/Keyguard/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..5eedde4
--- /dev/null
+++ b/packages/Keyguard/res/values-hu/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM Perso zárva</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Érvénytelen kártya.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Adja meg a SIM-kártya PIN-kódját. <xliff:g id="number">%d</xliff:g> kísérlete maradt mielőtt fel kell vennie a kapcsolatot a mobilszolgáltatójával a készülék feloldásához.</item>
+ <item quantity="other">Adja meg a SIM-kártya PIN-kódját. <xliff:g id="number">%d</xliff:g> kísérlete maradt.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Hiba: A bemeneti adat rövidebb, mint a minimális hossz</string>
+</resources>
diff --git a/packages/Keyguard/res/values-hy-rAM/cm_strings.xml b/packages/Keyguard/res/values-hy-rAM/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-hy-rAM/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-in/cm_strings.xml b/packages/Keyguard/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..16e6bf5
--- /dev/null
+++ b/packages/Keyguard/res/values-in/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Kartu SIM terkunci operator seluler lain</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Kartu tidak valid.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">Masukkan PIN SIM, Anda memiliki <xliff:g id="number">%d</xliff:g> upaya tersisa.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Kesalahan: Masukan lebih pendek dari panjang minimum</string>
+</resources>
diff --git a/packages/Keyguard/res/values-is-rIS/cm_strings.xml b/packages/Keyguard/res/values-is-rIS/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-is-rIS/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-it/cm_strings.xml b/packages/Keyguard/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..f0dd7e3
--- /dev/null
+++ b/packages/Keyguard/res/values-it/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM bloccata</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Scheda non valida.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Inserisci il PIN della SIM, hai ancora <xliff:g id="number">%d</xliff:g> tentativo rimanente prima di dover contattare l\'operatore per sbloccare il dispositivo.</item>
+ <item quantity="other">Inserisci il PIN della SIM, hai ancora <xliff:g id="number">%d</xliff:g> tentativi rimanenti.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Errore: input non sufficientemente lungo</string>
+</resources>
diff --git a/packages/Keyguard/res/values-iw/cm_strings.xml b/packages/Keyguard/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..faaecee
--- /dev/null
+++ b/packages/Keyguard/res/values-iw/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">כרטיס SIM נעול להתאמות אישיות</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">כרטיס לא חוקי.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">הזן את קוד ה-PIN של כרטיס ה-SIM, נותר לך ניסיון <xliff:g id="number">%d</xliff:g> לפני שתיאלץ לפנות לספק התקשורת שלך על מנת לבטל את נעילת המכשיר.</item>
+ <item quantity="two">הזן את קוד ה-PIN של כרטיס ה-SIM, נותרו לך <xliff:g id="number">%d</xliff:g> ניסיונות.</item>
+ <item quantity="many">הזן את קוד ה-PIN של כרטיס ה-SIM, נותרו לך <xliff:g id="number">%d</xliff:g> ניסיונות.</item>
+ <item quantity="other">הזן את קוד ה-PIN של כרטיס ה-SIM, נותרו לך <xliff:g id="number">%d</xliff:g> ניסיונות.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">שגיאה: הקלט קצר יותר מהאורך המינימלי</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ja/cm_strings.xml b/packages/Keyguard/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..7049ab6
--- /dev/null
+++ b/packages/Keyguard/res/values-ja/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIMはペルソロックされています</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">無効なカードです。</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">SIMのPINを入力してください、残り<xliff:g id="number">%d</xliff:g>回試行することができます。</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">エラー: 入力が最小長よりも短いです</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ka-rGE/cm_strings.xml b/packages/Keyguard/res/values-ka-rGE/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ka-rGE/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-kk-rKZ/cm_strings.xml b/packages/Keyguard/res/values-kk-rKZ/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-kk-rKZ/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-km-rKH/cm_strings.xml b/packages/Keyguard/res/values-km-rKH/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-km-rKH/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-kn-rIN/cm_strings.xml b/packages/Keyguard/res/values-kn-rIN/cm_strings.xml
new file mode 100644
index 0000000..7b7f4e2
--- /dev/null
+++ b/packages/Keyguard/res/values-kn-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">ಸಿಮ್/ಆರ್‍ಯುಐಎಂ ಪರ್ಸೊ ಲಾಕ್ ಆಗಿದೆ</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">ಅಮಾನ್ಯ ಕಾರ್ಡ್.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">ಸಿಮ್ ಪಿನ್ ಬರೆಯಿರಿ, ನಿಮಗೆ<xliff:g id="number">%d</xliff:g> ಪ್ರಯತ್ನ ಉಳಿದಿದೆ ನಂತರ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅನ್‍ಲಾಕ್ ಮಾಡಲು ಮೊದಲು ನಿಮ್ಮ ವಾಹಕಕ್ಕೆ ಸಂಪರ್ಕಿಸಬೇಕಾಗುತ್ತದೆ.</item>
+ <item quantity="other">ಸಿಮ್ ಪಿನ್ ಬರೆಯಿರಿ, ನಿಮಗೆ<xliff:g id="number">%d</xliff:g> ಪ್ರಯತ್ನ ಉಳಿದಿದೆ ನಂತರ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅನ್‍ಲಾಕ್ ಮಾಡಲು ಮೊದಲು ನಿಮ್ಮ ವಾಹಕಕ್ಕೆ ಸಂಪರ್ಕಿಸಬೇಕಾಗುತ್ತದೆ.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">ದೋಷ: ಇನ್ಪುಟ್ ಕನಿಷ್ಠ ಉದ್ದ ಚಿಕ್ಕದಾಗಿರುತ್ತವೆ</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ko/cm_strings.xml b/packages/Keyguard/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..3ca8c32
--- /dev/null
+++ b/packages/Keyguard/res/values-ko/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM이 Perso lock되어 있습니다.</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">올바르지 않은 카드입니다.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">SIM PIN을 입력하십시오. <xliff:g id="number">%d</xliff:g>회 후에는 이동통신사에 연락하여 기기를 잠금 해제해야 합니다.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">오류: 입력한 값이 최소 길이보다 짧음</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ku/cm_strings.xml b/packages/Keyguard/res/values-ku/cm_strings.xml
new file mode 100644
index 0000000..969ee48
--- /dev/null
+++ b/packages/Keyguard/res/values-ku/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">کارته‌که‌ نادرووستە.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ku/strings.xml b/packages/Keyguard/res/values-ku/strings.xml
new file mode 100644
index 0000000..336eff9
--- /dev/null
+++ b/packages/Keyguard/res/values-ku/strings.xml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_code">PIN کۆد بنوسه‌</string>
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_puk_code">PUK ی سیمکارته‌که‌ و PIN ی نوێ بنوسه‌</string>
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_puk_prompt">کۆدی PUK ی سیمکارت</string>
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_pin_prompt">پین کۆدی نوێی سیمکارت</string>
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <string name="keyguard_password_entry_touch_hint"><font size="17">بیسووه‌ بۆ نوسینی تێپەڕەوشە</font></string>
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_password_code">تێپه‌ڕه‌وشه‌ بنوسه‌ بۆ کردنه‌وه‌</string>
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_password_code">PIN بنوسه‌ بۆ کردنه‌وه‌</string>
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <string name="keyguard_password_wrong_pin_code">پین کۆد هەڵە بوو.</string>
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <string name="keyguard_charged">بارگاویی بوو</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <string name="keyguard_low_battery">بارگاویکه‌رەکەت ببەستەوە.</string>
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <string name="keyguard_instructions_when_pattern_disabled">دەست بنێ بە پێڕستدا بۆ کردنه‌وه‌.</string>
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <string name="keyguard_network_locked_message">تۆڕی نێت داخرا</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message_short">سیمکارتی تێدا نییە</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="tablet">تابلێته‌که‌ سیمکارتی تێدا نییه‌.</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="default">ته‌له‌فۆنه‌که‌ سیمکارتی تێدا نییه‌.</string>
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <string name="keyguard_missing_sim_instructions">سیمکارتێکی تێبکه‌.</string>
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <string name="keyguard_missing_sim_instructions_long">سیمکارتی تێ نه‌کراوه‌ یان نایخوێنێته‌وه‌. سیمکارتێکی تێکه‌.</string>
+ <!-- Shown when SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_message_short">سیمکارتەکە بەکارنایەت.</string>
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_instructions">سیمکارتەکەت بۆ هه‌میشه‌ لەکار خرا .\n
+ پەیوەندیی بکە بە دابینکه‌ری ڕاژه‌ی بێته‌له‌وه‌ بۆ سیمکارتێکی تر.</string>
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="keyguard_sim_locked_message">سیمکارتەکە داخرا.</string>
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <string name="keyguard_sim_puk_locked_message">سیمکارتەکە به‌ شێوه‌ی PUK داخرا.</string>
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <string name="keyguard_sim_unlock_progress_dialog_message">کردنەوەی سیمکارت\u2026</string>
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <string name="keyguard_accessibility_pattern_unlock">کردنه‌وه‌ بە کێشان.</string>
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pin_unlock">کردنه‌وه‌ی پین.</string>
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_password_unlock">کردنه‌وه‌ی تێپه‌ڕه‌وشه‌.</string>
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">ناوچەی خه‌تکێشان.</string>
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_slide_area">ناوچەی لادان.</string>
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_delete">سڕینه‌وه‌</string>
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_enter">دانان</string>
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <string name="kg_forgot_pattern_button_text">بیرچونی خه‌تکێشان</string>
+ <!-- Message shown when user enters wrong pattern -->
+ <string name="kg_wrong_pattern">خه‌تکێشان هه‌ڵه‌یه‌</string>
+ <!-- Message shown when user enters wrong password -->
+ <string name="kg_wrong_password">تێپەڕەوشە هەڵەیه‌</string>
+ <!-- Message shown when user enters wrong PIN -->
+ <string name="kg_wrong_pin">PIN هەڵەیە</string>
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <string name="kg_too_many_failed_attempts_countdown">دووبارە هەوڵبدەرەوە له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.</string>
+ <!-- Instructions for using the pattern unlock screen -->
+ <string name="kg_pattern_instructions">خه‌ت بکێشه‌</string>
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <string name="kg_sim_pin_instructions">دانانی PIN ی سیم</string>
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <string name="kg_pin_instructions">دانانی PIN</string>
+ <!-- Instructions for using the password unlock screen -->
+ <string name="kg_password_instructions">دانانی تێپەڕەوشە</string>
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <string name="kg_puk_enter_puk_hint">ئێستا سیمه‌که‌ ناکارایه‌. کۆدی PUK دابنێ بۆ به‌رده‌وامبوون. بۆ زانیاریی زیاتر په‌یوه‌ندیی بکه‌ به‌ کۆمپانیای دابینه‌که‌ره‌وه‌.</string>
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <string name="kg_puk_enter_pin_hint">دانانی PIN کۆد بە ئارەزوی خۆت</string>
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <string name="kg_enter_confirm_pin_hint">دڵنیاکردنەوەی PIN کۆد</string>
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <string name="kg_sim_unlock_progress_dialog_message">کردنه‌وه‌ی سیمکارت\u2026</string>
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <string name="kg_invalid_sim_pin_hint">PIN ێک بنوسه‌ له‌ 4 بۆ 8 ژماره‌ پێکهاتبێت.</string>
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <string name="kg_invalid_sim_puk_hint">کۆدی PUK ده‌بێت 8 ژمارە یان زیاتر بێت.</string>
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <string name="kg_invalid_puk">دوبارە کۆدی PUK لێدەرەوە. هه‌وڵی چه‌ندباره‌ سیمکارته‌که‌ت له‌کار ده‌خات.</string>
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <string name="kg_invalid_confirm_pin_hint" product="default">PIN کۆد هاوتا نییە</string>
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <string name="kg_login_too_many_attempts">زۆر هه‌وڵی خه‌تکێشانت داوه‌</string>
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <string name="kg_too_many_failed_pin_attempts_dialog_message">
+ بە هەڵە PIN ت نوسیوە <xliff:g id="number">%d</xliff:g> جار.
+ \n\nدوبارە هەوڵبدەرەوە له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.
+
+    </string>
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <string name="kg_too_many_failed_password_attempts_dialog_message">
+ بەهەڵە تێپەڕە وشەت لێداوە <xliff:g id="number">%d</xliff:g> جار.
+ \n\nدوبارە هەوڵبدەرەوە له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.
+
+    </string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message">
+ بە هەڵە خه‌تکێشانت لێداوه‌ <xliff:g id="number">%d</xliff:g> جار.
+ \n\nدووبارە هەوڵبدەره‌وه‌ له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.
+
+   
+</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="tablet">
+ به‌ هه‌ڵه‌ کردنەوەی خه‌تکێشانه‌که‌ت داوە <xliff:g id="number">%d</xliff:g> times جار.
+ پاش <xliff:g id="number">%d</xliff:g> هه‌وڵی سه‌رنه‌که‌وتووی زیاتر،
+ داوات لێ ده‌کرێت تابلێته‌که‌ت بکه‌یته‌وه‌ به‌ به‌کارهێنانی هه‌ژماری ئیمه‌یڵ.\n\n
+ جارێکی تر هه‌وڵ بده‌ره‌وه‌ له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.
+ </string>
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="default">
+ به‌ هه‌ڵه‌ کردنەوەی خه‌تکێشانه‌که‌ت لێداوە <xliff:g id="number">%d</xliff:g> times جار.
+ پاش <xliff:g id="number">%d</xliff:g> هه‌وڵی سه‌رنه‌که‌وتووی زیاتر،
+ داوات لێ ده‌کرێت ته‌له‌فۆنه‌که‌ بکه‌یته‌وه‌ به‌ به‌کارهێنانی هه‌ژماری ئیمه‌یڵ. \n\n
+ جارێکی تر هه‌وڵ بده‌ره‌وه‌ له‌ <xliff:g id="number">%d</xliff:g> چرکه‌دا.
+ </string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_pin_code_pukked">PIN کۆد هه‌ڵه‌یه‌ پێویسته‌ ئێستا په‌یوه‌ندیی بکه‌یت به‌ کۆمپانیای دابینکه‌ره‌وه‌ بۆ کردنه‌وه‌ی ئامێره‌که‌ت.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_pin_code">
+ <item quantity="one">PIN کۆدی سیم هه‌ڵه‌یه‌، <xliff:g id="number">%d</xliff:g> هه‌وڵت ماوه‌ به‌رله‌وه‌ی که‌ پێویست بکات په‌یوه‌ندیی به‌ کۆمپانیای دابینکه‌ره‌وه‌ بکه‌یت.</item>
+ <item quantity="other">کۆدی سیمکارت هەڵەیە .تۆ ته‌نیا <xliff:g id="number">%d</xliff:g> هەوڵێکت ماوە پێشی ئەوەی پەیوەندی بکەیت بە کۆمپانیاوە بۆ کردنەوەی ئامێرەکەت .</item>
+ </plurals>
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_puk_code_dead">سیمه‌که‌ له‌کار که‌وتووه‌. په‌یوه‌ندیی بکه‌ به‌ کۆمپانیای دابینکه‌ره‌وه‌.</string>
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_puk_code">
+ <item quantity="one">PUK کۆدی سیم هه‌ڵه‌یه‌، <xliff:g id="number">%d</xliff:g> هه‌وڵت ماوه‌ به‌رله‌وه‌ی سیمه‌که‌ به‌ یه‌کجاریی له‌کار بکه‌وێت.</item>
+ <item quantity="other">PUK کۆدی سیم به‌ هه‌ڵه‌ لێدراوه‌، <xliff:g id="number">%d</xliff:g> هه‌وڵت ماوه‌ به‌رله‌وه‌ی سیمه‌که‌ به‌ یه‌کجاریی له‌کار بکه‌وێت.</item>
+ </plurals>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <string name="kg_password_pin_failed">کارپێکردنی PIN ی سیم شکستی هێنا!</string>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <string name="kg_password_puk_failed">کارپێکردنی PUK ی سیم شکستی هێنا!</string>
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <string name="kg_pin_accepted">کۆدەکە وه‌رگیرا!</string>
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <string name="keyguard_carrier_default">خزمەتگوزاریی به‌رده‌ست نییە.</string>
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-ky-rKG/cm_strings.xml b/packages/Keyguard/res/values-ky-rKG/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ky-rKG/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-lb/cm_strings.xml b/packages/Keyguard/res/values-lb/cm_strings.xml
new file mode 100644
index 0000000..7e662b9
--- /dev/null
+++ b/packages/Keyguard/res/values-lb/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM huet eng personaliséiert Spärung</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ongëlteg Kaart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Feeler: Agab ass méi kuerz wéi d\'Mindestlängt</string>
+</resources>
diff --git a/packages/Keyguard/res/values-lb/strings.xml b/packages/Keyguard/res/values-lb/strings.xml
new file mode 100644
index 0000000..0763983
--- /dev/null
+++ b/packages/Keyguard/res/values-lb/strings.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <string name="app_name">Tastespär</string>
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_code">PIN-Code aginn</string>
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_puk_code">SIM-PUK an nei PIN aginn</string>
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_puk_prompt">SIM-PUK-Code</string>
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_pin_prompt">Neie SIM-PIN-Code</string>
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <string name="keyguard_password_entry_touch_hint"><font size="17">Dréck fir d\'Passwuert anzeginn</font></string>
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_password_code">Passwuert agi fir z\'entspären</string>
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_password_code">PIN agi fir z\'entspären</string>
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <string name="keyguard_password_wrong_pin_code">Falsche PIN-Code.</string>
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <string name="keyguard_charged">Opgelueden</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <string name="keyguard_plugged_in">Gëtt opgelueden</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <string name="keyguard_plugged_in_charging_fast">Gëtt séier opgelueden</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <string name="keyguard_plugged_in_charging_slowly">Gëtt lues opgelueden</string>
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <string name="keyguard_low_battery">Connectéier däin Oplueder.</string>
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <string name="keyguard_instructions_when_pattern_disabled">Menü drécke fir z\'entspären.</string>
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <string name="keyguard_network_locked_message">Netzwierk gespaart</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message_short">Keng SIM-Kaart</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="tablet">Keng SIM-Kaart am Tablet.</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="default">Keng SIM-Kaart am Telefon.</string>
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <string name="keyguard_missing_sim_instructions">SIM-Kaart asetzen.</string>
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <string name="keyguard_missing_sim_instructions_long">D\'SIM-Kaart feelt oder ass net liesbar. Setz eng SIM-Kaart an.</string>
+ <!-- Shown when SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_message_short">Onbenotzbar SIM-Kaart.</string>
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_instructions">Deng SIM-Kaart gouf permanent ausgeschalt.\n
+Kontaktéier däi Provider fir eng aner SIM-Kaart ze kréien.</string>
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="keyguard_sim_locked_message">D\'SIM-Kaart ass gespaart.</string>
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <string name="keyguard_sim_puk_locked_message">D\'SIM-Kaart ass PUK-gespaart.</string>
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <string name="keyguard_sim_unlock_progress_dialog_message">D\'SIM-Kaart gëtt entspaart\u2026</string>
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <string name="keyguard_accessibility_pattern_unlock">Entspäre mat Muster.</string>
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pin_unlock">Entspäre mat PIN.</string>
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_password_unlock">Entspäre mat Passwuert.</string>
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">Musterberäich.</string>
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_slide_area">Beräich fir Fangerbeweegung.</string>
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pin_area">PIN-Beräich</string>
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_sim_pin_area">SIM-PIN-Beräich</string>
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_sim_puk_area">SIM-PUK-Beräich</string>
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_next_alarm">Nächste Wecker gesat fir <xliff:g id="alarm" example="Fri 8:30 AM">%1$s</xliff:g></string>
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_delete">Läschen</string>
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_enter">Enter</string>
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <string name="kg_forgot_pattern_button_text">Muster vergiess</string>
+ <!-- Message shown when user enters wrong pattern -->
+ <string name="kg_wrong_pattern">Falscht Muster</string>
+ <!-- Message shown when user enters wrong password -->
+ <string name="kg_wrong_password">Falscht Passwuert</string>
+ <!-- Message shown when user enters wrong PIN -->
+ <string name="kg_wrong_pin">Falsche PIN</string>
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <string name="kg_too_many_failed_attempts_countdown">Probéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.</string>
+ <!-- Instructions for using the pattern unlock screen -->
+ <string name="kg_pattern_instructions">Mol däi Muster</string>
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <string name="kg_sim_pin_instructions">SIM-PIN aginn</string>
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <string name="kg_sim_pin_instructions_multi">SIM-PIN fir \"<xliff:g id="carrier" example="CARD 1">%1$s</xliff:g>\" aginn</string>
+ <!-- Instructions for using the PIN unlock screen -->
+ <string name="kg_pin_instructions">PIN aginn</string>
+ <!-- Instructions for using the password unlock screen -->
+ <string name="kg_password_instructions">Passwuert aginn</string>
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <string name="kg_puk_enter_puk_hint">D\'SIM ass elo desaktivéiert. Gëff e PUK-Code a fir weiderzemaachen. Kontaktéier däi Provider fir Detailer.</string>
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <string name="kg_puk_enter_puk_hint_multi">D\'SIM \"<xliff:g id="carrier" example="CARD 1">%1$s</xliff:g>\" ass elo desaktivéiert. Gëff de PUK-Code an, fir weiderzemaachen. Kontaktéier däi Provider fir méi Detailer.</string>
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <string name="kg_puk_enter_pin_hint">Gëff de gewënschte PIN-Code an</string>
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <string name="kg_enter_confirm_pin_hint">Bestäteg de gewënschte PIN-Code</string>
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <string name="kg_sim_unlock_progress_dialog_message">D\'SIM-Kaart gëtt entspaart\u2026</string>
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <string name="kg_invalid_sim_pin_hint">Gëff e PIN an, deen tëscht 4 an 8 Zifferen huet.</string>
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <string name="kg_invalid_sim_puk_hint">De PUK-Code misst 8 oder méi Zifferen hunn.</string>
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <string name="kg_invalid_puk">Gëff de korrekte PUK-Code nees an. Bei widderhuelende Versich gëtt d\'SIM permanent desaktivéiert.</string>
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <string name="kg_invalid_confirm_pin_hint" product="default">D\'PIN-Codë stëmmen net iwwereneen</string>
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <string name="kg_login_too_many_attempts">Ze vill Musterversich</string>
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <string name="kg_too_many_failed_pin_attempts_dialog_message">Du hues däi PIN <xliff:g id="number">%d</xliff:g>-mol falsch aginn.\n\nProbéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.</string>
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <string name="kg_too_many_failed_password_attempts_dialog_message">Du hues däi Passwuert <xliff:g id="number">%d</xliff:g>-mol falsch aginn.\n\nProbéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message">
+ Du hues däin Entspärmuster <xliff:g id="number">%d</xliff:g>-mol falsch gemoolt.
+ \n\nProbéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.
+    </string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Tablet z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt den Tablet op d\'Wierksastellungen zréckgesat an all d\'Date gi verluer.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_wipe" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Telefon z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt den Telefon op d\'Wierksastellungen zréckgesat an all d\'Date gi verluer.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_wiping" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht, den Tablet z\'entspären. Dësen Tablet gëtt zréckgesat, wat all d\'Date läscht.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_wiping" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht, den Telefon z\'entspären. Dësen Telefon gëtt zréckgesat, wat all d\'Date läscht.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_erase_user" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Tablet z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt dëse Benotzer a seng Benotzerdate geläscht.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_erase_user" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Telefon z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt dëse Benotzer a seng Benotzerdate geläscht.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_erasing_user" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht, den Tablet z\'entspären. Dëse Benotzer a seng Date gi geläscht.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_erasing_user" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht, den Telefon z\'entspären. Dëse Benotzer a seng Date gi geläscht.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_erase_profile" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Tablet z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt den Aarbechtsprofil a seng Profildate geläscht.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_almost_at_erase_profile" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Telefon z\'entspären. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëtt den Aarbechtsprofil a seng Profildate geläscht.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_erasing_profile" product="tablet">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Tablet z\'entspären. Den Aarbechtsprofil a seng Profildate gi geläscht.</string>
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <string name="kg_failed_attempts_now_erasing_profile" product="default">Du hues <xliff:g id="number">%d</xliff:g>-mol ouni Erfolleg versicht den Telefon z\'entspären. Den Aarbechtsprofil a seng Profildate gi geläscht.</string>
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="tablet">Du hues däin Entspärmuster <xliff:g id="number">%d</xliff:g>-mol falsch gemoolt. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëss du gefrot däin Tablet duerch en E-Mail-Kont z\'entspären. Probéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.</string>
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="default">Du hues däin Entspärmuster <xliff:g id="number">%d</xliff:g>-mol falsch gemoolt. No <xliff:g id="number">%d</xliff:g> weidere feelgeschloene Versich gëss du gefrot däin Telefon duerch en E-Mail-Kont z\'entspären. Probéier nees a(n) <xliff:g id="number">%d</xliff:g> Sekonnen.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_pin_code_pukked">Inkorrekte SIM-PIN-Code. Du muss elo däi Provider kontaktéiere fir däin Apparat z\'entspären.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_pin_code">
+ <item quantity="one">Inkorrekte SIM-PIN-Code, du hues nach <xliff:g id="number">%d</xliff:g> Versuch iwwreg ier s de däi Provider kontaktéiere muss fir däin Apparat z\'entspären.</item>
+ <item quantity="other">Inkorrekte SIM-PIN-Code, du hues nach <xliff:g id="number">%d</xliff:g> Versich iwwreg.</item>
+ </plurals>
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_puk_code_dead">D\'SIM ass onbrauchbar. Kontaktéier däi Provider.</string>
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_puk_code">
+ <item quantity="one">Inkorrekte SIM-PUK-Code, du hues nach <xliff:g id="number">%d</xliff:g> Versuch iwwreg ier deng SIM permanent onbrauchbar gëtt.</item>
+ <item quantity="other">Inkorrekte SIM-PUK-Code, du hues nach <xliff:g id="number">%d</xliff:g> Versich iwwreg ier deng SIM permanent onbrauchbar gëtt.</item>
+ </plurals>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <string name="kg_password_pin_failed">SIM-PIN-Operatioun feelgeschloen!</string>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <string name="kg_password_puk_failed">SIM-PUK-Operatioun feelgeschloen!</string>
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <string name="kg_pin_accepted">Code acceptéiert!</string>
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <string name="keyguard_carrier_default">Kee Service.</string>
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ime_switch_button" msgid="5032926134740456424">Knäppche fir d\'Method fir anzeginn ze wiesselen.</string>
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-lo-rLA/cm_strings.xml b/packages/Keyguard/res/values-lo-rLA/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-lo-rLA/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-lt/cm_strings.xml b/packages/Keyguard/res/values-lt/cm_strings.xml
new file mode 100644
index 0000000..752fb39
--- /dev/null
+++ b/packages/Keyguard/res/values-lt/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Neteisinga kortelė.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-lv/cm_strings.xml b/packages/Keyguard/res/values-lv/cm_strings.xml
new file mode 100644
index 0000000..0694d2f
--- /dev/null
+++ b/packages/Keyguard/res/values-lv/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM ir personīgi bloķēta</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Nepareiza karte.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="zero">Ievadiet SIM kartes PIN kodu, jums ir atlicis <xliff:g id="number">%d </xliff:g> mēģinājums.</item>
+ <item quantity="one">Ievadiet SIM kartes PIN kodu, jums ir atlicis <xliff:g id="number">%d </xliff:g> mēģinājums.</item>
+ <item quantity="other">Ievadiet SIM kartes PIN kodu, jums ir atlikuši <xliff:g id="number">%d </xliff:g> mēģinājumi.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-mk-rMK/cm_strings.xml b/packages/Keyguard/res/values-mk-rMK/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-mk-rMK/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ml-rIN/cm_strings.xml b/packages/Keyguard/res/values-ml-rIN/cm_strings.xml
new file mode 100644
index 0000000..ea7f205
--- /dev/null
+++ b/packages/Keyguard/res/values-ml-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">സിം കാർഡ് ലോക്ക്</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">അസാധുവായ കാർഡ്.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">സിം പിൻ നൽകുക,നിങ്ങളുടെ ഉപകരണം അൺലോക്കുചെയ്യുന്നതിന് നിങ്ങളുടെ കാരിയർ ബന്ധപ്പെടണം അവശേഷിക്കെ <xliff:g id="number">%d</xliff:g>ശ്രമം നിങ്ങളെ ഉണ്ടു.</item>
+ <item quantity="other">സിം പിൻ നൽകുക,നിങ്ങളുടെ ഉപകരണം അൺലോക്കുചെയ്യുന്നതിന് <xliff:g id="number">%d</xliff:g>ശ്രമം നിങ്ങളെ ഉണ്ടു.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">പിശക്: മിനിമം കാരക്ടറുകൾ ഇല്ല</string>
+</resources>
diff --git a/packages/Keyguard/res/values-mn-rMN/cm_strings.xml b/packages/Keyguard/res/values-mn-rMN/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-mn-rMN/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-mr-rIN/cm_strings.xml b/packages/Keyguard/res/values-mr-rIN/cm_strings.xml
new file mode 100644
index 0000000..c3020ed
--- /dev/null
+++ b/packages/Keyguard/res/values-mr-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">सिम कार्ड पर्सो लॉक्ड आहे</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">अवैध कार्ड.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">सिम पिन लिहा, तुमचे डिव्हाइस अनलॉक करण्यासाठी तुम्ही तुमच्या वाहकाशी संपर्क करण्यापूर्वी तुमच्याकडे <xliff:g id="number">%d</xliff:g> प्रयत्न शिल्लक आहे.</item>
+ <item quantity="other">सिम पिन लिहा, तुमच्याकडे <xliff:g id="number">%d</xliff:g> प्रयत्न शिल्लक आहेत.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">त्रुटी: इनपुट किमान लांबीहून लहान</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ms-rMY/cm_strings.xml b/packages/Keyguard/res/values-ms-rMY/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ms-rMY/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-my-rMM/cm_strings.xml b/packages/Keyguard/res/values-my-rMM/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-my-rMM/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-nb/cm_strings.xml b/packages/Keyguard/res/values-nb/cm_strings.xml
new file mode 100644
index 0000000..99dad15
--- /dev/null
+++ b/packages/Keyguard/res/values-nb/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-kort er Person låst</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ugyldig kort.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Angi SIM PIN, du har <xliff:g id="number">%d</xliff:g> forsøk igjen før må du kontakte operatøren for å låse opp enheten.</item>
+ <item quantity="other">Angi SIM PIN, du har <xliff:g id="number">%d</xliff:g> gjenstående forsøk.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Feil: Input kortere enn minimumslengden</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ne-rNP/cm_strings.xml b/packages/Keyguard/res/values-ne-rNP/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ne-rNP/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-nl/cm_strings.xml b/packages/Keyguard/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..4eba178
--- /dev/null
+++ b/packages/Keyguard/res/values-nl/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Simkaart is Perso-vergrendeld</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ongeldige simkaart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM-PIN invoeren, u heeft <xliff:g id="number">%d</xliff:g> resterende pogingen voordat u contact moet opnemen met uw provider om uw apparaat te ontgrendelen.</item>
+ <item quantity="other">SIM-PIN invoeren, u heeft <xliff:g id="number">%d</xliff:g> resterende pogingen.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fout: Invoer is korter dan minimumlengte</string>
+</resources>
diff --git a/packages/Keyguard/res/values-oc-rFR/cm_strings.xml b/packages/Keyguard/res/values-oc-rFR/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-oc-rFR/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-oc-rFR/strings.xml b/packages/Keyguard/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-oc-rFR/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-or-rIN/cm_strings.xml b/packages/Keyguard/res/values-or-rIN/cm_strings.xml
new file mode 100644
index 0000000..b20e2bb
--- /dev/null
+++ b/packages/Keyguard/res/values-or-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM କାର୍ଡ଼ Perso ବନ୍ଦ ଅଛି</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">ଅବୈଧ କାର୍ଡ୍‍।</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM, PIN ପ୍ରବେଶ କରନ୍ତୁ, ଆପଣଙ୍କ ଡିଭାଇସ୍‍ ଅନ୍‍ଲକ୍‍ କରିବା ପାଇଁ ଆପଣଙ୍କ ମୋବାଇଲ୍‍ ଅପରେଟରଙ୍କ ସହିତ ସମ୍ପର୍କ କରିବା ପୂର୍ବରୁ ଆପଣଙ୍କର <xliff:g id="number">%d</xliff:g> ଚେଷ୍ଟା ବାକି ଅଛି।</item>
+ <item quantity="other">SIM, PIN ପ୍ରବେଶ କରନ୍ତୁ, ଆପଣଙ୍କର <xliff:g id="number">%d</xliff:g> ଚେଷ୍ଟା ବାକି ଅଛି।</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">ତୃଟି: ଇନ୍ପୁଟ୍ ଛୋଟ ଅଛି ମିନିମମ୍ ଲମ୍ବରୁ</string>
+</resources>
diff --git a/packages/Keyguard/res/values-or-rIN/strings.xml b/packages/Keyguard/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..b53b53e
--- /dev/null
+++ b/packages/Keyguard/res/values-or-rIN/strings.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown when there is no SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <!-- Shown when SIM card is permanently disabled. -->
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <!-- Message shown when user enters wrong pattern -->
+ <!-- Message shown when user enters wrong password -->
+ <!-- Message shown when user enters wrong PIN -->
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <!-- Instructions for using the pattern unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <!-- Instructions for using the password unlock screen -->
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-pa-rIN/cm_strings.xml b/packages/Keyguard/res/values-pa-rIN/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-pa-rIN/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-pl/cm_strings.xml b/packages/Keyguard/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..855bf81
--- /dev/null
+++ b/packages/Keyguard/res/values-pl/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Blokada Perso karty SIM/RUIM</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Nieprawidłowa karta.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Wprowadź PIN karty SIM, masz <xliff:g id="number">%d</xliff:g> pozostałą próbę zanim będziesz musiał skontaktować się z operatorem, by odblokować urządzenie.</item>
+ <item quantity="few">Wprowadź PIN karty SIM, masz <xliff:g id="number">%d</xliff:g> pozostałe próby.</item>
+ <item quantity="other">Wprowadź PIN karty SIM, masz <xliff:g id="number">%d</xliff:g> pozostałych prób.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Błąd: Podany kod jest za krótki</string>
+</resources>
diff --git a/packages/Keyguard/res/values-pt-rBR/cm_strings.xml b/packages/Keyguard/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..d72d43a
--- /dev/null
+++ b/packages/Keyguard/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">O cartão SIM está bloqueado</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Cartão inválido.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Digite o PIN do cartão SIM, você tem <xliff:g id="number">%d</xliff:g> tentativa restante antes de precisar contatar sua operadora para desbloquear seu aparelho.</item>
+ <item quantity="other">Digite o PIN do cartão SIM, você tem <xliff:g id="number">%d</xliff:g> tentativas restantes.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Erro: Entrada mais curta do que o comprimento mínimo</string>
+</resources>
diff --git a/packages/Keyguard/res/values-pt-rPT/cm_strings.xml b/packages/Keyguard/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..2d5c4b1
--- /dev/null
+++ b/packages/Keyguard/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">O cartão SIM está bloqueado</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Cartão inválido.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Digite o código PIN do cartão SIM. Tem mais <xliff:g id="number">%d</xliff:g> tentativa antes de ter de contactar a sua operadora para desbloquear o dispositivo.</item>
+ <item quantity="other">Digite o código PIN do cartão SIM. Tem mais <xliff:g id="number">%d</xliff:g> tentativas.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Erro: o tamanho é menor que o requerido</string>
+</resources>
diff --git a/packages/Keyguard/res/values-rm/cm_strings.xml b/packages/Keyguard/res/values-rm/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-rm/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ro/cm_strings.xml b/packages/Keyguard/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..c9a5723
--- /dev/null
+++ b/packages/Keyguard/res/values-ro/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Cartelă SIM incorectă.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Eroare: Introducere mai scurtă decât lungimea minimă</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ru/cm_strings.xml b/packages/Keyguard/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..6f42203
--- /dev/null
+++ b/packages/Keyguard/res/values-ru/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-карта заблокирована оператором</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Неисправная SIM-карта.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Введите PIN-код. У вас осталась <xliff:g id="number">%d</xliff:g> попытка перед тем, как вам придется обратиться к оператору для разблокировки.</item>
+ <item quantity="few">Введите PIN-код. У вас осталось <xliff:g id="number">%d</xliff:g> попытки.</item>
+ <item quantity="other">Введите PIN-код. У вас осталось <xliff:g id="number">%d</xliff:g> попыток.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Ошибка: введено меньше минимальной длины</string>
+</resources>
diff --git a/packages/Keyguard/res/values-si-rLK/cm_strings.xml b/packages/Keyguard/res/values-si-rLK/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-si-rLK/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-sk/cm_strings.xml b/packages/Keyguard/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..f54f1ff
--- /dev/null
+++ b/packages/Keyguard/res/values-sk/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Neplatná karta.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-sl/cm_strings.xml b/packages/Keyguard/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..54034a7
--- /dev/null
+++ b/packages/Keyguard/res/values-sl/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Kartica SIM je zaklenjena v načinu Perso</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Neveljavna kartica.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Vnesite PIN kartice SIM, imate še <xliff:g id="number">%d</xliff:g> preostali poskus, preden boste morali stopiti v stik s svojim ponudnikom, da vam odklene napravo.</item>
+ <item quantity="two">Vnesite PIN kartice SIM, imate še <xliff:g id="number">%d</xliff:g> preostala poskusa.</item>
+ <item quantity="few">Vnesite PIN kartice SIM, imate še <xliff:g id="number">%d</xliff:g> preostale poskuse.</item>
+ <item quantity="other">Vnesite PIN kartice SIM, imate še <xliff:g id="number">%d</xliff:g> preostalih poskusov.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Napaka: Vnos je krajši od minimalne zahtevane dolžine</string>
+</resources>
diff --git a/packages/Keyguard/res/values-sq-rAL/cm_strings.xml b/packages/Keyguard/res/values-sq-rAL/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-sq-rAL/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-sr/cm_strings.xml b/packages/Keyguard/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..9ae4248
--- /dev/null
+++ b/packages/Keyguard/res/values-sr/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM картица је лично закључана</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Неважећа картица.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Унеси SIM PIN, имаш <xliff:g id="number">%d</xliff:g> преостали покушај пре него што мораш контактирати свог оператора да откључаш уређај.</item>
+ <item quantity="few">Унеси SIM PIN, имаш <xliff:g id="number">%d</xliff:g> преостала покушаја пре него што мораш контактирати свог оператора да откључаш уређај.</item>
+ <item quantity="other">Унеси SIM PIN, имаш <xliff:g id="number">%d</xliff:g> преостала покушаја пре него што мораш контактирати свог оператора да откључаш уређај.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Грешка: Унос је краћи од минималне дужине</string>
+</resources>
diff --git a/packages/Keyguard/res/values-sv/cm_strings.xml b/packages/Keyguard/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..0b2cbaa
--- /dev/null
+++ b/packages/Keyguard/res/values-sv/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-kortet är personligt låst</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Ogiltigt SIM.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Ange SIM-kortets PIN-kod, du har <xliff:g id="number">%d</xliff:g> försök kvar innan du behöver kontakta din operatör för att låsa upp din enhet.</item>
+ <item quantity="other">Ange SIM-kortets PIN-kod, du har <xliff:g id="number">%d</xliff:g> försök kvar innan du behöver kontakta din operatör för att låsa upp din enhet.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Fel: Input kortare än minsta längd</string>
+</resources>
diff --git a/packages/Keyguard/res/values-sw/cm_strings.xml b/packages/Keyguard/res/values-sw/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-sw/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ta-rIN/cm_strings.xml b/packages/Keyguard/res/values-ta-rIN/cm_strings.xml
new file mode 100644
index 0000000..dded59d
--- /dev/null
+++ b/packages/Keyguard/res/values-ta-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM கார்டு பெர்சோ பூட்டப்பட்டது.</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">செல்லுபடியாகாத கார்டு.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">உள்ளிடுக SIM PIN, உங்கள் சாதனத்தை பூட்டுநீக்க உங்கள் கேரியரை தொடர்புகொள்வதற்உ முன்பாக உங்களிடம் <xliff:g id="number">%d</xliff:g> முயற்சி மீதமுள்ளது.</item>
+ <item quantity="other">உள்ளிடுக SIM PIN, உங்களிடம் <xliff:g id="number">%d</xliff:g> முயற்சிகள் இதமுள்ளன.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">பிழை: குறைந்தபட்ச நீளத்தைவிட உள்ளீடு சுருக்கமாக உள்ளது.</string>
+</resources>
diff --git a/packages/Keyguard/res/values-te-rIN/cm_strings.xml b/packages/Keyguard/res/values-te-rIN/cm_strings.xml
new file mode 100644
index 0000000..4404c92
--- /dev/null
+++ b/packages/Keyguard/res/values-te-rIN/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM పెర్సో లాక్ చేయబడింది</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">చెల్లని కార్డ్.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM PIN ఎంటర్ చేయండి, మీకు <xliff:g id="number">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి ప్రయత్నించే ముందు పరికరాన్ని అన్లాక్ చేసేందుకు మీరు మీ కారియరును సంప్రదించాలి.</item>
+ <item quantity="other">SIM PINను ఎంటర్ చేయండి, మీకు <xliff:g id="number">%d</xliff:g> మిగిలి ఉన్నాయి.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">దోషం: ఇన్‌పుట్ కనీస పొడవుకంటే తక్కువగా ఉంది</string>
+</resources>
diff --git a/packages/Keyguard/res/values-th/cm_strings.xml b/packages/Keyguard/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..39f873a
--- /dev/null
+++ b/packages/Keyguard/res/values-th/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">ซิมการ์ดถูกเปโซล็อค</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">ซิมการ์ดไม่ถูกต้อง</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">ใส่รหัสซิมการ์ด สามารถใส่รหัสได้อีก <xliff:g id="number">%d</xliff:g> ก่อนจะต้องติดต่อติดต่อผู้ให้บริการเพื่อปลดล็อคอุปกรณ์ของคุณ</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">ผิดพลาด: ข้อมูลที่ป้อนสั้นกว่าความยาวขั้นต่ำ</string>
+</resources>
diff --git a/packages/Keyguard/res/values-tr/cm_strings.xml b/packages/Keyguard/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..b08f821
--- /dev/null
+++ b/packages/Keyguard/res/values-tr/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM Özel kilitli</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Geçersiz kart.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">SIM PIN kodunuzu girin, <xliff:g id="number">%d</xliff:g> deneme hakkınız kaldı, yoksa cihazınızın kilidini açabilmek için operatörünüz ile iletişim kurmak zorunda kalacaksınız.</item>
+ <item quantity="other">SIM PIN kodunuzu girin, <xliff:g id="number">%d</xliff:g> deneme hakkınız kaldı.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Hata: Giriş en kısa uzunluktan daha kısa</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ug/cm_strings.xml b/packages/Keyguard/res/values-ug/cm_strings.xml
new file mode 100644
index 0000000..885b4a9
--- /dev/null
+++ b/packages/Keyguard/res/values-ug/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM قۇلۇپلاندى</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">ئىناۋەتسىز كارتا.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">بۇ SIM كارتىنىڭ PIN نى كىرگۈزۈڭ، سىزنىڭ يەنە <xliff:g id="number">%d</xliff:g> قېتىم سىناش پۇرسىتىڭىز بار.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">خاتالىق: كىرگۈزگىنىڭىز بەك قىسقا بۇلۇپ قالدى</string>
+</resources>
diff --git a/packages/Keyguard/res/values-ug/strings.xml b/packages/Keyguard/res/values-ug/strings.xml
new file mode 100644
index 0000000..6ad14ee
--- /dev/null
+++ b/packages/Keyguard/res/values-ug/strings.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- App label in the manifest -->
+ <string name="app_name">ئاچقۇچلۇق</string>
+ <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_code">PIN كودىنى كىرگۈزۈڭ</string>
+ <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_puk_code">SIM PUK ۋە يېڭى PIN كودىنى كىرگۈزۈڭ</string>
+ <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_puk_prompt">SIM PUK كودى</string>
+ <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen -->
+ <string name="keyguard_password_enter_pin_prompt">يېڭى SIM كارتا PIN كودى</string>
+ <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+ <string name="keyguard_password_entry_touch_hint"><font size="17">\"بۇ جاينى چېكىپ ئىم كىرگۈزۈڭ\"</font></string>
+ <!-- Instructions telling the user to enter their text password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_password_code">قۇلۇپ ئېچىش ئۈچۈن ئىم كىرگۈزۈڭ</string>
+ <!-- Instructions telling the user to enter their PIN password to unlock the keyguard.
+ Displayed in one line in a large font. -->
+ <string name="keyguard_password_enter_pin_password_code">PIN كىرگۈزۈپ قۇلۇپ ئېچىڭ</string>
+ <!-- Instructions telling the user that they entered the wrong pin while trying
+ to unlock the keyguard. Displayed in one line in a large font. -->
+ <string name="keyguard_password_wrong_pin_code">PIN كودى خاتا.</string>
+ <!-- When the lock screen is showing, the phone is plugged in and the battery is fully
+ charged, say that it is charged. -->
+ <string name="keyguard_charged">توكلاندى</string>
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, say that it's charging. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a fast charger, say that it's charging fast. -->
+ <!-- When the lock screen is showing and the phone plugged in, and the battery
+ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. -->
+ <!-- When the lock screen is showing and the battery is low, warn user to plug
+ in the phone soon. -->
+ <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. -->
+ <string name="keyguard_instructions_when_pattern_disabled">Menu نى بېسىپ قۇلۇپنى ئېچىڭ.</string>
+ <!-- SIM messages -->
+ <!-- When the user inserts a sim card from an unsupported network, it becomes network locked -->
+ <string name="keyguard_network_locked_message">تور قۇلۇپلانغان</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message_short">SIM كارتا يوق</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="tablet">تاختا كومپيۇتېردا SIM كارتا يوق.</string>
+ <!-- Shown when there is no SIM card. -->
+ <string name="keyguard_missing_sim_message" product="default">تېلېفوندا SIM كارتا يوق.</string>
+ <!-- Shown to ask the user to insert a SIM card. -->
+ <string name="keyguard_missing_sim_instructions">SIM كارتا قىستۇرۇڭ.</string>
+ <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. -->
+ <string name="keyguard_missing_sim_instructions_long">SIM كارتا يوقالغان ياكى ئوقۇغىلى بولمايدۇ. SIM كارتا قىستۇرۇڭ.</string>
+ <!-- Shown when SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_message_short">SIM كارتىنى ئىشلەتكىلى بولمايدۇ.</string>
+ <!-- Shown to inform the user to SIM card is permanently disabled. -->
+ <string name="keyguard_permanent_disabled_sim_instructions">سىزنىڭ SIM كارتىڭىز مەڭگۈلۈك توختىتىلدى.\nسىمسىز تور مۇلازىمىتى تەمىنلىگۈچىڭىز بىلەن ئالاقە قىلىپ، يېڭىدىن بىر SIM كارتىغا ئېرىشىڭ.</string>
+ <!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="keyguard_sim_locked_message">SIM كارتا قۇلۇپلانغان.</string>
+ <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <string name="keyguard_sim_puk_locked_message">SIM كارتا PUK نۇمۇر ئارقىلىق قۇلۇپلانغان.</string>
+ <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
+ whether it is valid, and to unlock the sim if it is valid. we display a
+ progress dialog in the meantime. this is the emssage. -->
+ <string name="keyguard_sim_unlock_progress_dialog_message">SIM كارتا قۇلۇپىنى ئېچىۋاتىدۇ…</string>
+ <!-- Time format strings for fall-back clock widget -->
+ <!-- Time format strings for fall-back clock widget -->
+ <string name="keyguard_accessibility_pattern_unlock">ئەدىزەدە قۇلۇپ ئاچىدۇ.</string>
+ <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pin_unlock">بۇ Pin دا قۇلۇپ ئاچىدۇ.</string>
+ <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_password_unlock">ئىمدا قۇلۇپ ئاچىدۇ.</string>
+ <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">ئەندىزە دائىرىسى.</string>
+ <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] -->
+ <string name="keyguard_accessibility_slide_area">سۈرۈش دائىرىسى</string>
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PIN password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description of the SIM PUK password view. [CHAR_LIMIT=none] -->
+ <!-- Accessibility description for the text view that indicates when the next alarm is set (not shown on screen). [CHAR_LIMIT=none] -->
+ <!-- KeyguardPinView - accessibility support -->
+ <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <string name="keyboardview_keycode_delete">ئۆچۈر</string>
+ <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
+ <!-- Message shown in pattern unlock after some number of unsuccessful attempts -->
+ <string name="kg_forgot_pattern_button_text">ئەندىزە ئۇنتۇلغان</string>
+ <!-- Message shown when user enters wrong pattern -->
+ <string name="kg_wrong_pattern">ئەندىزە خاتا</string>
+ <!-- Message shown when user enters wrong password -->
+ <string name="kg_wrong_password">ئىم خاتا</string>
+ <!-- Message shown when user enters wrong PIN -->
+ <string name="kg_wrong_pin">بۇ PIN خاتا</string>
+ <!-- Countdown message shown after too many failed unlock attempts -->
+ <string name="kg_too_many_failed_attempts_countdown"><xliff:g id="NUMBER">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <!-- Instructions for using the pattern unlock screen -->
+ <string name="kg_pattern_instructions">قۇلۇپ ئاچىدىغان ئەندىزە سىزىڭ</string>
+ <!-- Instructions for using the SIM PIN unlock screen -->
+ <string name="kg_sim_pin_instructions">كىرگۈزىدىغىنىڭىز SIM PIN</string>
+ <!-- Instructions for using the SIM PIN unlock screen when there's more than one SIM -->
+ <!-- Instructions for using the PIN unlock screen -->
+ <string name="kg_pin_instructions">كىرگۈزىدىغىنىڭىز PIN</string>
+ <!-- Instructions for using the password unlock screen -->
+ <string name="kg_password_instructions">ئىم كىرگۈزۈڭ</string>
+ <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider -->
+ <string name="kg_puk_enter_puk_hint">بۇ SIM كارتا توختىتىلغان. PUK كودى كىرگۈزۈلگەندىلا ئاندىن ئىشلەتكىلى بولىدۇ. مۇناسىۋەتلىك تەپسىلاتلار ئۈچۈن مۇلازىمەت تەمىنلىگۈچىڭىز بىلەن ئالاقە قىلىڭ.</string>
+ <!-- Hint shown when there are multiple SIMs in the device to ask the user to enter the PUK code given to them by their provider -->
+ <!-- Hint shown in the PUK unlock screen PIN TextView -->
+ <string name="kg_puk_enter_pin_hint">لازىملىق PIN كودىنى كىرگۈزۈڭ</string>
+ <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen -->
+ <string name="kg_enter_confirm_pin_hint">لازىملىق PIN كودىنى جەزملەڭ</string>
+ <!-- Message shown in dialog while the device is unlocking the SIM card -->
+ <string name="kg_sim_unlock_progress_dialog_message">SIM كارتا قۇلۇپىنى ئېچىۋاتىدۇ…</string>
+ <!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
+ <string name="kg_invalid_sim_pin_hint">4-8 خانىلىق PIN نى كىرگۈزۈڭ.</string>
+ <!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
+ <string name="kg_invalid_sim_puk_hint">بۇ PUK كودىدا ئاز دېگەندە 8 ياكى ئۇنىڭدىن كۆپ سان بولىدۇ.</string>
+ <!-- Message shown when the user enters an invalid PUK code -->
+ <string name="kg_invalid_puk">توغرا PUK كودىنى قايتا كىرگۈزۈڭ. ئەگەر خاتا كىرگۈزۈشنىڭ قېتىم سانى بەك كۆپ بولۇپ كەتسە SIM كارتا مەڭگۈلۈك توختىتىلىدۇ.</string>
+ <!-- String shown in PUK screen when PIN codes don't match -->
+ <string name="kg_invalid_confirm_pin_hint" product="default">بۇ PIN كودى ماسلاشمىدى</string>
+ <!-- Message shown when the user exceeds the maximum number of pattern attempts -->
+ <string name="kg_login_too_many_attempts">ئەندىزىسىنى سىناش قېتىم سانى بەك كۆپ بولۇپ كەتتى</string>
+ <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard -->
+ <string name="kg_too_many_failed_pin_attempts_dialog_message">سىز PIN نى <xliff:g id="NUMBER_0">%d</xliff:g> قېتىم خاتا كىرگۈزدىڭىز.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard -->
+ <string name="kg_too_many_failed_password_attempts_dialog_message">سىز قۇلۇپ ئېچىش ئىمنى <xliff:g id="NUMBER_0">%d</xliff:g> قېتىم خاتا كىرگۈزدىڭىز.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message">سىز قۇلۇپ ئېچىش ئەندىزىسىنى <xliff:g id="NUMBER_0">%d</xliff:g> قېتىم خاتا سىزدىڭىز.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the user will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown when user is almost at the limit of password attempts where the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user has exceeded the maximum attempts and the profile will be removed. [CHAR LIMIT=none] -->
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="tablet">سىز قۇلۇپ ئېچىش ئەندىزىسىنى <xliff:g id="NUMBER_0">%d</xliff:g> قېتىم خاتا سىزدىڭىز. ئەگەر <xliff:g id="NUMBER_1">%d</xliff:g> قېتىم سىناپمۇ مۇۋەپپەقىيەتلىك بولمىسا، سىستېما تورخەت ھېساباتىڭىزدىكى تىزىمغا كىرىش ئۇچۇرى بىلەن تاختا كومپيۇتېر قۇلۇپىنى ئېچىشنى تەلەپ قىلىدۇ.\n\nيەنە <xliff:g id="NUMBER_2">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <!-- Message shown in dialog when user is almost at the limit where they will be
+ locked out and may have to enter an alternate username/password to unlock the phone -->
+ <string name="kg_failed_attempts_almost_at_login" product="default">سىز قۇلۇپ ئېچىش ئەندىزىسىنى <xliff:g id="NUMBER_0">%d</xliff:g> قېتىم خاتا سىزدىڭىز. ئەگەر <xliff:g id="NUMBER_1">%d</xliff:g> قېتىم سىناپمۇ مۇۋەپپەقىيەتلىك بولمىسا، سىستېما تورخەت ھېساباتىڭىزدىكى تىزىمغا كىرىش ئۇچۇرى بىلەن تېلېفون قۇلۇپىنى ئېچىشنى تەلەپ قىلىدۇ.\n\nيەنە <xliff:g id="NUMBER_2">%d</xliff:g> سېكۇنتتىن كېيىن قايتا سىناڭ.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN for the last time.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_pin_code_pukked">SIM كارتا PIN كودى توغرا ئەمەس؛ ھازىر مۇلازىمەت سودىگىرىڭىز بىلەن ئالاقە قىلىپ ئۈسكۈنىڭىزنىڭ قۇلۇپىنى ئېچىڭ.</string>
+ <!-- Instructions telling the user that they entered the wrong SIM PIN while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <plurals name="kg_password_wrong_pin_code">
+ <item quantity="other">SIM كارتا PIN كودى توغرا ئەمەس، سىزنىڭ <xliff:g id="NUMBER">%d</xliff:g> قېتىم سىناش پۇرسىتىڭىز بار. ئەگەر يەنىلا مەغلۇپ بولسىڭىز مۇلازىمەت سودىگىرىڭىز بىلەن ئالاقە قىلىپ ئۈسكۈنىڭىزنىڭ قۇلۇپىنى ئېچىڭ.</item>
+ </plurals>
+ <!-- Instructions telling the user that they have exhausted SIM PUK retries and the SIM is now unusable.
+ Displayed in a dialog box. -->
+ <string name="kg_password_wrong_puk_code_dead">SIM كارتىنى ئىشلەتكىلى بولمايدۇ. مۇلازىمەت سودىگىرىڭىز بىلەن ئالاقە قىلىڭ.</string>
+ <!-- Instructions telling the user that they entered the wrong puk while trying
+ to unlock the keyguard. Displayed in a dialog box. -->
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with SIM PIN failed. Displayed in one line in a large font. -->
+ <string name="kg_password_pin_failed">SIM كارتا PIN مەشغۇلاتى مەغلۇپ بولدى!</string>
+ <!-- Instructions telling the user that the operation to unlock the keyguard
+ with PUK failed. Displayed in one line in a large font. -->
+ <string name="kg_password_puk_failed">SIM كارتا PUK مەشغۇلاتى مەغلۇپ بولدى!</string>
+ <!-- Notification telling the user that the PIN1 they entered is valid -->
+ <string name="kg_pin_accepted">كود توغرا</string>
+ <!-- On the keyguard screen, it shows the carrier the phone is connected to.
+ This is displayed if the phone is not connected to a carrier.-->
+ <string name="keyguard_carrier_default">مۇلازىمەت يوق.</string>
+ <!-- Content description of the switch input method button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Description of airplane mode -->
+ <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since the user hasn't used strong authentication since quite some time. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pin needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the password needs to be entered since profiles have just been switched. [CHAR LIMIT=80] -->
+ <!-- An explanation text that the pattern needs to be solved since it hasn't been solved in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the pin needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- An explanation text that the password needs to be entered since it hasn't been entered in a while. [CHAR LIMIT=80]-->
+ <!-- Fingerprint hint message when finger was not recognized.-->
+</resources>
diff --git a/packages/Keyguard/res/values-uk/cm_strings.xml b/packages/Keyguard/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..084c45b
--- /dev/null
+++ b/packages/Keyguard/res/values-uk/cm_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM-карта заблокована оператором</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Невірна картка.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Введіть PIN-код. У вас залишилася <xliff:g id="number">%d</xliff:g> спроба перед тим, як вам доведеться звернутися до оператора для розблокування.</item>
+ <item quantity="few">Введіть PIN-код. У вас залишилася <xliff:g id="number">%d</xliff:g> спроби перед тим, як вам доведеться звернутися до оператора для розблокування.</item>
+ <item quantity="other">Введіть PIN-код. У вас залишилася <xliff:g id="number">%d</xliff:g> спроб перед тим, як вам доведеться звернутися до оператора для розблокування.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-ur-rPK/cm_strings.xml b/packages/Keyguard/res/values-ur-rPK/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-ur-rPK/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-uz-rUZ/cm_strings.xml b/packages/Keyguard/res/values-uz-rUZ/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-uz-rUZ/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-vi/cm_strings.xml b/packages/Keyguard/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..b28f62c
--- /dev/null
+++ b/packages/Keyguard/res/values-vi/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">Thẻ SIM bị khóa Perso</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Thẻ sim không hợp lệ.</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">Nhập mã PIN của SIM, bạn còn <xliff:g id="number">%d</xliff:g> lần nhập trước khi phải liên hệ với nhà mạng để mở khóa thiết bị.</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Lỗi: Dữ liệu nhập ngắn hơn độ dài tối thiểu</string>
+</resources>
diff --git a/packages/Keyguard/res/values-zh-rCN/cm_strings.xml b/packages/Keyguard/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..6f94967
--- /dev/null
+++ b/packages/Keyguard/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM 卡已被锁定</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">无效的 SIM 卡。</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="other">输入 SIM 卡 PIN。您还有 <xliff:g id="number">%d</xliff:g> 次尝试机会;若超出此次数,则必须联系运营商以解锁 SIM 卡。</item>
+ </plurals>
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">错误:输入长度小于最小长度</string>
+</resources>
diff --git a/packages/Keyguard/res/values-zh-rHK/cm_strings.xml b/packages/Keyguard/res/values-zh-rHK/cm_strings.xml
new file mode 100644
index 0000000..fe6d6b8
--- /dev/null
+++ b/packages/Keyguard/res/values-zh-rHK/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">SIM 卡無效。</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values-zh-rTW/cm_strings.xml b/packages/Keyguard/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..9ab7837
--- /dev/null
+++ b/packages/Keyguard/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM/RUIM 卡已被鎖定</string>
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">無效的 SIM 卡。</string>
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">錯誤:輸入少於最小長度</string>
+</resources>
diff --git a/packages/Keyguard/res/values-zu/cm_strings.xml b/packages/Keyguard/res/values-zu/cm_strings.xml
new file mode 100644
index 0000000..0ba09aa
--- /dev/null
+++ b/packages/Keyguard/res/values-zu/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+</resources>
diff --git a/packages/Keyguard/res/values/bools.xml b/packages/Keyguard/res/values/bools.xml
index 2b83787..791b758 100644
--- a/packages/Keyguard/res/values/bools.xml
+++ b/packages/Keyguard/res/values/bools.xml
@@ -17,4 +17,5 @@
<resources>
<bool name="kg_show_ime_at_screen_on">true</bool>
<bool name="kg_use_all_caps">true</bool>
+ <bool name="kg_sim_display_name">true</bool>
</resources>
diff --git a/packages/Keyguard/res/values/cm_colors.xml b/packages/Keyguard/res/values/cm_colors.xml
new file mode 100644
index 0000000..ffdc532
--- /dev/null
+++ b/packages/Keyguard/res/values/cm_colors.xml
@@ -0,0 +1,19 @@
+<?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>
+
+ <color name="keyguard_sim_view_divider">#28FFFFFF</color>
+</resources>
diff --git a/packages/Keyguard/res/values/cm_strings.xml b/packages/Keyguard/res/values/cm_strings.xml
new file mode 100644
index 0000000..3276211
--- /dev/null
+++ b/packages/Keyguard/res/values/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- When the user inserts a sim card with some personalization enabled -->
+ <string name="keyguard_perso_locked_message">SIM card is Perso locked</string>
+
+ <!-- Shown in the lock screen when there is SIM card IO error. -->
+ <string name="lockscreen_sim_error_message_short">Invalid card.</string>
+
+ <!-- Instructions telling the user remaining times when enter SIM PIN view. -->
+ <plurals name="kg_password_default_pin_message">
+ <item quantity="one">Enter SIM PIN, you have <xliff:g id="number">%d</xliff:g> remaining attempt before you must contact your carrier to unlock your device.</item>
+ <item quantity="other">Enter SIM PIN, you have <xliff:g id="number">%d</xliff:g> remaining attempts.</item>
+ </plurals>
+
+ <!-- Shown in the KeyguardSimPinView when entry length is too short. -->
+ <string name="kg_invalid_sim_length">Error: Input shorter than minimum length</string>
+</resources>
diff --git a/packages/Keyguard/res/values/config.xml b/packages/Keyguard/res/values/config.xml
index b398ab2..ca7f204 100644
--- a/packages/Keyguard/res/values/config.xml
+++ b/packages/Keyguard/res/values/config.xml
@@ -28,4 +28,10 @@
<!-- Threshold in micro amperes above which a charger is rated as "fast" -->
<integer name="config_chargingFastThreshold">1500000</integer>
+
+ <!-- Should we listen for fingerprints when the screen is off? Devices
+ with a rear-mounted sensor want this, but certain devices have
+ the sensor embedded in the power key and listening all the time
+ causes a poor experience. -->
+ <bool name="config_fingerprintWakeAndUnlock">true</bool>
</resources>
diff --git a/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
index 159ac4c..f21ce7f 100644
--- a/packages/Keyguard/src/com/android/keyguard/CarrierText.java
+++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
@@ -39,12 +39,14 @@ import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.telephony.TelephonyIntents;
import com.android.settingslib.WirelessUtils;
+import android.telephony.TelephonyManager;
public class CarrierText extends TextView {
private static final boolean DEBUG = KeyguardConstants.DEBUG;
private static final String TAG = "CarrierText";
private static CharSequence mSeparator;
+ private static CharSequence mSubSeparator;
private final boolean mIsEmergencyCallCapable;
@@ -52,6 +54,8 @@ public class CarrierText extends TextView {
private WifiManager mWifiManager;
+ private boolean[] mSimErrorState = new boolean[TelephonyManager.getDefault().getPhoneCount()];
+
private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() {
@Override
public void onRefreshCarrierInfo() {
@@ -65,6 +69,22 @@ public class CarrierText extends TextView {
public void onStartedWakingUp() {
setSelected(true);
};
+
+ public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) {
+ if (slotId < 0) {
+ Log.d(TAG, "onSimStateChanged() - slotId invalid: " + slotId);
+ return;
+ }
+
+ Log.d(TAG,"onSimStateChanged: " + getStatusForIccState(simState));
+ if (getStatusForIccState(simState) == StatusMode.SimIoError) {
+ mSimErrorState[slotId] = true;
+ updateCarrierText();
+ } else if (mSimErrorState[slotId]) {
+ mSimErrorState[slotId] = false;
+ updateCarrierText();
+ }
+ };
};
/**
* The status of this lock screen. Primarily used for widgets on LockScreen.
@@ -77,7 +97,8 @@ public class CarrierText extends TextView {
SimPukLocked, // SIM card is PUK locked because SIM entered wrong too many times
SimLocked, // SIM card is currently locked
SimPermDisabled, // SIM card is permanently disabled due to PUK unlock failure
- SimNotReady; // SIM is not ready yet. May never be on devices w/o a SIM.
+ SimNotReady, // SIM is not ready yet. May never be on devices w/o a SIM.
+ SimIoError; //The sim card is faulty
}
public CarrierText(Context context) {
@@ -101,6 +122,35 @@ public class CarrierText extends TextView {
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
+ /**
+ * Checks if there are faulty cards. Adds the text depending on the slot of the card
+ * @param text: current carrier text based on the sim state
+ * @param noSims: whether a valid sim card is inserted
+ * @return text
+ */
+ private CharSequence updateCarrierTextWithSimIoError(CharSequence text, boolean noSims) {
+ final CharSequence carrier = "";
+ CharSequence carrierTextForSimState = getCarrierTextForSimState(
+ IccCardConstants.State.CARD_IO_ERROR, carrier);
+ for (int index = 0; index < mSimErrorState.length; index++) {
+ if (mSimErrorState[index]) {
+ // In the case when no sim cards are detected but a faulty card is inserted
+ // overwrite the text and only show "Invalid card"
+ if (noSims) {
+ return concatenate(carrierTextForSimState,
+ getContext().getText(com.android.internal.R.string.emergency_calls_only));
+ } else if (index == 0) {
+ // prepend "Invalid card" when faulty card is inserted in slot 0
+ text = concatenate(carrierTextForSimState, text);
+ } else {
+ // concatenate "Invalid card" when faulty card is inserted in slot 1
+ text = concatenate(text, carrierTextForSimState);
+ }
+ }
+ }
+ return text;
+ }
+
protected void updateCarrierText() {
boolean allSimsMissing = true;
boolean anySimReadyAndInService = false;
@@ -119,7 +169,7 @@ public class CarrierText extends TextView {
}
if (carrierTextForSimState != null) {
allSimsMissing = false;
- displayText = concatenate(displayText, carrierTextForSimState);
+ displayText = concatenate(displayText, carrierTextForSimState, mSubSeparator);
}
if (simState == IccCardConstants.State.READY) {
ServiceState ss = mKeyguardUpdateMonitor.mServiceStates.get(subId);
@@ -138,6 +188,25 @@ public class CarrierText extends TextView {
}
}
}
+ /*
+ * In the case where there is only one sim inserted in a multisim device, if
+ * the voice registration service state is reported as 12 (no service with emergency)
+ * for at least one of the sim concatenate the sim state with Emergency calls only"
+ */
+ if (N < TelephonyManager.getDefault().getPhoneCount() &&
+ mKeyguardUpdateMonitor.isEmergencyOnly()) {
+ int presentSubId = mKeyguardUpdateMonitor.getPresentSubId();
+
+ if (DEBUG) {
+ Log.d(TAG, " Present sim - sub id: " + presentSubId);
+ }
+ if (presentSubId != -1) {
+ CharSequence emergencyOnlyText =
+ getContext().getText(com.android.internal.R.string.emergency_calls_only);
+ displayText = getCarrierTextForSimState(
+ mKeyguardUpdateMonitor.getSimState(presentSubId), emergencyOnlyText);
+ }
+ }
if (allSimsMissing) {
if (N != 0) {
// Shows "No SIM card | Emergency calls only" on devices that are voice-capable.
@@ -179,6 +248,7 @@ public class CarrierText extends TextView {
}
}
+ displayText = updateCarrierTextWithSimIoError(displayText, allSimsMissing);
// APM (airplane mode) != no carrier state. There are carrier services
// (e.g. WFC = Wi-Fi calling) which may operate in APM.
if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) {
@@ -192,6 +262,8 @@ public class CarrierText extends TextView {
super.onFinishInflate();
mSeparator = getResources().getString(
com.android.internal.R.string.kg_text_message_separator);
+ mSubSeparator = getResources().getString(
+ com.android.internal.R.string.kg_sub_separator);
boolean shouldMarquee = KeyguardUpdateMonitor.getInstance(mContext).isDeviceInteractive();
setSelected(shouldMarquee); // Allow marquee to work.
}
@@ -243,7 +315,7 @@ public class CarrierText extends TextView {
case NetworkLocked:
carrierText = makeCarrierStringOnEmergencyCapable(
- mContext.getText(R.string.keyguard_network_locked_message), text);
+ getContext().getText(R.string.keyguard_perso_locked_message), text);
break;
case SimMissing:
@@ -270,6 +342,11 @@ public class CarrierText extends TextView {
getContext().getText(R.string.keyguard_sim_puk_locked_message),
text);
break;
+ case SimIoError:
+ carrierText = makeCarrierStringOnEmergencyCapable(
+ getContext().getText(R.string.lockscreen_sim_error_message_short),
+ text);
+ break;
}
return carrierText;
@@ -306,7 +383,7 @@ public class CarrierText extends TextView {
case ABSENT:
return StatusMode.SimMissing;
case NETWORK_LOCKED:
- return StatusMode.SimMissingLocked;
+ return StatusMode.NetworkLocked;
case NOT_READY:
return StatusMode.SimNotReady;
case PIN_REQUIRED:
@@ -319,15 +396,22 @@ public class CarrierText extends TextView {
return StatusMode.SimPermDisabled;
case UNKNOWN:
return StatusMode.SimMissing;
+ case CARD_IO_ERROR:
+ return StatusMode.SimIoError;
}
return StatusMode.SimMissing;
}
private static CharSequence concatenate(CharSequence plmn, CharSequence spn) {
+ return concatenate(plmn, spn, mSeparator);
+ }
+
+ private static CharSequence concatenate(CharSequence plmn, CharSequence spn,
+ CharSequence separator) {
final boolean plmnValid = !TextUtils.isEmpty(plmn);
final boolean spnValid = !TextUtils.isEmpty(spn);
if (plmnValid && spnValid) {
- return new StringBuilder().append(plmn).append(mSeparator).append(spn).toString();
+ return new StringBuilder().append(plmn).append(separator).append(spn).toString();
} else if (plmnValid) {
return plmn;
} else if (spnValid) {
diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
index cbf22c0..93809af 100644
--- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
@@ -16,15 +16,18 @@
package com.android.keyguard;
+import android.app.ActivityManagerNative;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.PowerManager;
+import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.telecom.TelecomManager;
import android.util.AttributeSet;
+import android.util.Slog;
import android.view.View;
import android.widget.Button;
@@ -46,6 +49,8 @@ public class EmergencyButton extends Button {
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ private static final String LOG_TAG = "EmergencyButton";
+
KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@Override
@@ -121,6 +126,11 @@ public class EmergencyButton extends Button {
// TODO: implement a shorter timeout once new PowerManager API is ready.
// should be the equivalent to the old userActivity(EMERGENCY_CALL_TIMEOUT)
mPowerManager.userActivity(SystemClock.uptimeMillis(), true);
+ try {
+ ActivityManagerNative.getDefault().stopLockTaskMode();
+ } catch (RemoteException e) {
+ Slog.w(LOG_TAG, "Failed to stop app pinning");
+ }
if (isInCall()) {
resumeCall();
if (mEmergencyButtonCallback != null) {
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
index b03871a..7fbd658 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
@@ -147,6 +147,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
private void onPasswordChecked(boolean matched, int timeoutMs, boolean isValidPassword) {
if (matched) {
+ mLockPatternUtils.sanitizePassword();
mDismissing = true;
mCallback.reportUnlockAttempt(true, 0);
mCallback.dismiss(true);
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
index 4abb795..b909a60 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
@@ -19,16 +19,25 @@ package com.android.keyguard;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.content.Context;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.view.RenderNode;
import android.view.RenderNodeAnimator;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
+import android.widget.LinearLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
+import cyanogenmod.providers.CMSettings;
+
/**
* Displays a PIN pad for unlocking.
*/
@@ -45,6 +54,8 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
private int mDisappearYTranslation;
private View[][] mViews;
+ private static List<Integer> sNumbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
+
public KeyguardPINView(Context context) {
this(context, null);
}
@@ -102,6 +113,33 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
new View[]{
null, mEcaView, null
}};
+
+ boolean scramblePin = (CMSettings.System.getInt(getContext().getContentResolver(),
+ CMSettings.System.LOCKSCREEN_PIN_SCRAMBLE_LAYOUT, 0) == 1);
+
+ if (scramblePin) {
+ Collections.shuffle(sNumbers);
+ // get all children who are NumPadKey's
+ LinearLayout container = (LinearLayout) findViewById(R.id.container);
+ List<NumPadKey> views = new ArrayList<NumPadKey>();
+ for (int i = 0; i < container.getChildCount(); i++) {
+ if (container.getChildAt(i) instanceof LinearLayout) {
+ LinearLayout nestedLayout = ((LinearLayout) container.getChildAt(i));
+ for (int j = 0; j < nestedLayout.getChildCount(); j++){
+ View view = nestedLayout.getChildAt(j);
+ if (view.getClass() == NumPadKey.class) {
+ views.add((NumPadKey) view);
+ }
+ }
+ }
+ }
+
+ // reset the digits in the views
+ for (int i = 0; i < sNumbers.size(); i++) {
+ NumPadKey view = views.get(i);
+ view.setDigit(sNumbers.get(i));
+ }
+ }
}
@Override
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
index 9a91ca4..446f6c1 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
@@ -132,10 +132,18 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
mLockPatternView = (LockPatternView) findViewById(R.id.lockPatternView);
mLockPatternView.setSaveEnabled(false);
mLockPatternView.setOnPatternListener(new UnlockPatternListener());
+ mLockPatternView.setLockPatternUtils(mLockPatternUtils);
+ mLockPatternView.setLockPatternSize(mLockPatternUtils.getLockPatternSize(KeyguardUpdateMonitor.getCurrentUser()));
+
+ mLockPatternView.setVisibleDots(mLockPatternUtils.isVisibleDotsEnabled(
+ KeyguardUpdateMonitor.getCurrentUser()));
+ mLockPatternView.setShowErrorPath(mLockPatternUtils.isShowErrorPath(
+ KeyguardUpdateMonitor.getCurrentUser()));
// stealth mode will be the same for the life of this screen
mLockPatternView.setInStealthMode(!mLockPatternUtils.isVisiblePatternEnabled(
KeyguardUpdateMonitor.getCurrentUser()));
+ setFocusableInTouchMode(true);
// vibrate mode will be the same for the life of this screen
mLockPatternView.setTactileFeedbackEnabled(mLockPatternUtils.isTactileFeedbackEnabled());
@@ -254,6 +262,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
private void onPatternChecked(boolean matched, int timeoutMs, boolean isValidPattern) {
if (matched) {
+ mLockPatternUtils.sanitizePassword();
mCallback.reportUnlockAttempt(true, 0);
mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
mCallback.dismiss(true);
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
index 77215a7..827b378 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -19,6 +19,7 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
+import android.os.RemoteException;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
@@ -26,6 +27,7 @@ import android.util.Slog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
import android.widget.FrameLayout;
import com.android.internal.widget.LockPatternUtils;
@@ -353,6 +355,12 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
}
}
if (finish) {
+ try {
+ WindowManagerGlobal.getWindowManagerService()
+ .setLiveLockscreenEdgeDetector(false);
+ } catch (RemoteException e){
+ Log.e(TAG, e.getMessage());
+ }
mSecurityCallback.finish(strongAuth);
}
return finish;
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java
index 6012c45..a47e3f5 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java
@@ -202,25 +202,10 @@ public class KeyguardSecurityViewFlipper extends ViewFlipper implements Keyguard
final int widthSize = MeasureSpec.getSize(widthSpec);
final int heightSize = MeasureSpec.getSize(heightSpec);
- int maxWidth = widthSize;
- int maxHeight = heightSize;
final int count = getChildCount();
- for (int i = 0; i < count; i++) {
- final View child = getChildAt(i);
- final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
- if (lp.maxWidth > 0 && lp.maxWidth < maxWidth) {
- maxWidth = lp.maxWidth;
- }
- if (lp.maxHeight > 0 && lp.maxHeight < maxHeight) {
- maxHeight = lp.maxHeight;
- }
- }
final int wPadding = getPaddingLeft() + getPaddingRight();
final int hPadding = getPaddingTop() + getPaddingBottom();
- maxWidth = Math.max(0, maxWidth - wPadding);
- maxHeight = Math.max(0, maxHeight - hPadding);
int width = widthMode == MeasureSpec.EXACTLY ? widthSize : 0;
int height = heightMode == MeasureSpec.EXACTLY ? heightSize : 0;
@@ -228,6 +213,8 @@ public class KeyguardSecurityViewFlipper extends ViewFlipper implements Keyguard
final View child = getChildAt(i);
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ int maxWidth = Math.max(0, lp.maxWidth - wPadding);
+ int maxHeight = Math.max(0, lp.maxHeight - hPadding);
final int childWidthSpec = makeChildMeasureSpec(maxWidth, lp.width);
final int childHeightSpec = makeChildMeasureSpec(maxHeight, lp.height);
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java
index 2033159..0d74184 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java
@@ -50,7 +50,8 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
private ProgressDialog mSimUnlockProgressDialog = null;
private CheckSimPin mCheckSimPinThread;
-
+ private boolean mShowDefaultMessage = true;
+ private int mRemainingAttempts = -1;
private AlertDialog mRemainingAttemptsDialog;
private int mSubId;
private ImageView mSimImageView;
@@ -74,25 +75,8 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
public void resetState() {
super.resetState();
if (DEBUG) Log.v(TAG, "Resetting state");
- KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext);
- mSubId = monitor.getNextSubIdForState(IccCardConstants.State.PIN_REQUIRED);
- if (SubscriptionManager.isValidSubscriptionId(mSubId)) {
- int count = TelephonyManager.getDefault().getSimCount();
- Resources rez = getResources();
- final String msg;
- int color = Color.WHITE;
- if (count < 2) {
- msg = rez.getString(R.string.kg_sim_pin_instructions);
- } else {
- SubscriptionInfo info = monitor.getSubscriptionInfoForSubId(mSubId);
- CharSequence displayName = info != null ? info.getDisplayName() : ""; // don't crash
- msg = rez.getString(R.string.kg_sim_pin_instructions_multi, displayName);
- if (info != null) {
- color = info.getIconTint();
- }
- }
- mSecurityMessageDisplay.setMessage(msg, true);
- mSimImageView.setImageTintList(ColorStateList.valueOf(color));
+ if (mShowDefaultMessage) {
+ showDefaultMessage();
}
}
@@ -108,17 +92,19 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
return 0;
}
- private String getPinPasswordErrorMessage(int attemptsRemaining) {
+ private String getPinPasswordErrorMessage(int attemptsRemaining, boolean isDefault) {
String displayMessage;
-
+ int msgId;
if (attemptsRemaining == 0) {
displayMessage = getContext().getString(R.string.kg_password_wrong_pin_code_pukked);
} else if (attemptsRemaining > 0) {
+ msgId = isDefault ? R.plurals.kg_password_default_pin_message :
+ R.plurals.kg_password_wrong_pin_code;
displayMessage = getContext().getResources()
- .getQuantityString(R.plurals.kg_password_wrong_pin_code, attemptsRemaining,
- attemptsRemaining);
+ .getQuantityString(msgId, attemptsRemaining, attemptsRemaining);
} else {
- displayMessage = getContext().getString(R.string.kg_password_pin_failed);
+ msgId = isDefault ? R.string.kg_sim_pin_instructions : R.string.kg_password_pin_failed;
+ displayMessage = getContext().getString(msgId);
}
if (DEBUG) Log.d(LOG_TAG, "getPinPasswordErrorMessage:"
+ " attemptsRemaining=" + attemptsRemaining + " displayMessage=" + displayMessage);
@@ -150,6 +136,9 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
+ if (mShowDefaultMessage) {
+ showDefaultMessage();
+ }
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback);
}
@@ -228,7 +217,7 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
}
private Dialog getSimRemainingAttemptsDialog(int remaining) {
- String msg = getPinPasswordErrorMessage(remaining);
+ String msg = getPinPasswordErrorMessage(remaining, false);
if (mRemainingAttemptsDialog == null) {
Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage(msg);
@@ -249,7 +238,7 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
if (entry.length() < 4) {
// otherwise, display a message to the user, and don't submit.
- mSecurityMessageDisplay.setMessage(R.string.kg_invalid_sim_pin_hint, true);
+ mSecurityMessageDisplay.setMessage(R.string.kg_invalid_sim_length, true);
resetPasswordText(true);
mCallback.userActivity();
return;
@@ -262,15 +251,21 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
void onSimCheckResponse(final int result, final int attemptsRemaining) {
post(new Runnable() {
public void run() {
+ mRemainingAttempts = attemptsRemaining;
if (mSimUnlockProgressDialog != null) {
mSimUnlockProgressDialog.hide();
}
resetPasswordText(true /* animate */);
if (result == PhoneConstants.PIN_RESULT_SUCCESS) {
+ mRemainingAttempts = -1;
KeyguardUpdateMonitor.getInstance(getContext())
.reportSimUnlocked(mSubId);
- mCallback.dismiss(true);
+ mShowDefaultMessage = true;
+ if (mCallback != null) {
+ mCallback.dismiss(true);
+ }
} else {
+ mShowDefaultMessage = false;
if (result == PhoneConstants.PIN_PASSWORD_INCORRECT) {
if (attemptsRemaining <= 2) {
// this is getting critical - show dialog
@@ -278,7 +273,8 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
} else {
// show message
mSecurityMessageDisplay.setMessage(
- getPinPasswordErrorMessage(attemptsRemaining), true);
+ getPinPasswordErrorMessage(
+ attemptsRemaining, false), true);
}
} else {
// "PIN operation failed!" - no idea what this was and no way to
@@ -309,5 +305,42 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView {
public boolean startDisappearAnimation(Runnable finishRunnable) {
return false;
}
+
+ private void showDefaultMessage() {
+ KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext);
+ mSubId = monitor.getNextSubIdForState(IccCardConstants.State.PIN_REQUIRED);
+ if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
+ return;
+ }
+ if (mRemainingAttempts >= 0) {
+ mSecurityMessageDisplay.setMessage(getPinPasswordErrorMessage(
+ mRemainingAttempts, true), true);
+ return;
+ } else {
+ mSecurityMessageDisplay.setMessage(R.string.kg_sim_pin_instructions, true);
+ }
+
+ int count = TelephonyManager.getDefault().getSimCount();
+ Resources rez = getResources();
+ final String msg;
+ int color = Color.WHITE;
+ if (count < 2) {
+ msg = rez.getString(R.string.kg_sim_pin_instructions);
+ } else {
+ SubscriptionInfo info = monitor.getSubscriptionInfoForSubId(mSubId);
+ if (rez.getBoolean(R.bool.kg_sim_display_name)) {
+ CharSequence displayName = info != null ? info.getDisplayName() : ""; // don't crash
+ msg = rez.getString(R.string.kg_sim_pin_instructions_multi, displayName);
+ } else {
+ msg = rez.getString(R.string.kg_sim_pin_instructions);
+ }
+ if (info != null) {
+ color = info.getIconTint();
+ }
+ }
+ mSecurityMessageDisplay.setMessage(msg, true);
+ mSimImageView.setImageTintList(ColorStateList.valueOf(color));
+
+ }
}
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
index af88239..7ba952b 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
@@ -50,6 +50,7 @@ public class KeyguardSimPukView extends KeyguardPinBasedInputView {
private ProgressDialog mSimUnlockProgressDialog = null;
private CheckSimPuk mCheckSimPukThread;
+ private boolean mShowDefaultMessage = true;
private String mPukText;
private String mPinText;
private StateMachine mStateMachine = new StateMachine();
@@ -133,7 +134,10 @@ public class KeyguardSimPukView extends KeyguardPinBasedInputView {
color = info.getIconTint();
}
}
- mSecurityMessageDisplay.setMessage(msg, true);
+ if (mShowDefaultMessage) {
+ mSecurityMessageDisplay.setMessage(msg, true);
+ }
+ mShowDefaultMessage = true;
mSimImageView.setImageTintList(ColorStateList.valueOf(color));
}
mPasswordEntry.requestFocus();
@@ -328,6 +332,7 @@ public class KeyguardSimPukView extends KeyguardPinBasedInputView {
.reportSimUnlocked(mSubId);
mCallback.dismiss(true);
} else {
+ mShowDefaultMessage = false;
if (result == PhoneConstants.PIN_PASSWORD_INCORRECT) {
if (attemptsRemaining <= 2) {
// this is getting critical - show dialog
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
index f95b0ae..adb5ae9 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
@@ -1,4 +1,7 @@
/*
+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,6 +26,7 @@ import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.UserHandle;
+import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.AttributeSet;
@@ -229,10 +233,20 @@ public class KeyguardStatusView extends GridLayout {
: R.string.abbrev_wday_month_day_no_year);
final String clockView12Skel = res.getString(R.string.clock_12hr_format);
final String clockView24Skel = res.getString(R.string.clock_24hr_format);
- final String key = locale.toString() + dateViewSkel + clockView12Skel + clockView24Skel;
- if (key.equals(cacheKey)) return;
- dateView = DateFormat.getBestDateTimePattern(locale, dateViewSkel);
+ if (res.getBoolean(com.android.internal.R.bool.def_custom_dateformat)) {
+ final String dateformat = Settings.System.getString(context.getContentResolver(),
+ Settings.System.DATE_FORMAT);
+ dateView = dateformat.equals(dateView) ? dateView : dateformat;
+ } else {
+ final String key = locale.toString() + dateViewSkel + clockView12Skel
+ + clockView24Skel;
+ if (key.equals(cacheKey)) {
+ return;
+ }
+ dateView = DateFormat.getBestDateTimePattern(locale, dateViewSkel);
+ cacheKey = key;
+ }
clockView12 = DateFormat.getBestDateTimePattern(locale, clockView12Skel);
// CLDR insists on adding an AM/PM indicator even though it wasn't in the skeleton
@@ -247,7 +261,6 @@ public class KeyguardStatusView extends GridLayout {
clockView24 = clockView24.replace(':', '\uee01');
clockView12 = clockView12.replace(':', '\uee01');
- cacheKey = key;
}
}
}
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index f31df51..70a9f5c 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -69,6 +69,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
+import cyanogenmod.providers.CMSettings;
+
import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
@@ -381,6 +383,36 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
return mSubscriptionInfo;
}
+ public boolean isEmergencyOnly() {
+ boolean isEmerg = false;
+ ServiceState state;
+ for (int slotId = 0; slotId < TelephonyManager.getDefault().getPhoneCount(); slotId++) {
+ state = null;
+ int[] subId = mSubscriptionManager.getSubId(slotId);
+ if (subId != null && subId.length > 0) {
+ state = mServiceStates.get(subId[0]);
+ }
+ if (state != null) {
+ if (state.getVoiceRegState() == ServiceState.STATE_IN_SERVICE)
+ return false;
+ else if (state.isEmergencyOnly()) {
+ isEmerg = true;
+ }
+ }
+ }
+ return isEmerg;
+ }
+
+ public int getPresentSubId() {
+ for (int slotId = 0; slotId < TelephonyManager.getDefault().getPhoneCount(); slotId++) {
+ int[] subId = mSubscriptionManager.getSubId(slotId);
+ if (subId != null && subId.length > 0 && getSimState(subId[0]) != State.ABSENT) {
+ return subId[0];
+ }
+ }
+ return -1;
+ }
+
@Override
public void onTrustManagedChanged(boolean managed, int userId) {
mUserTrustIsManaged.put(userId, managed);
@@ -777,11 +809,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
state = IccCardConstants.State.PIN_REQUIRED;
} else if (IccCardConstants.INTENT_VALUE_LOCKED_ON_PUK.equals(lockedReason)) {
state = IccCardConstants.State.PUK_REQUIRED;
+ } else if (IccCardConstants.INTENT_VALUE_LOCKED_NETWORK.equals(lockedReason)) {
+ state = IccCardConstants.State.NETWORK_LOCKED;
} else {
state = IccCardConstants.State.UNKNOWN;
}
- } else if (IccCardConstants.INTENT_VALUE_LOCKED_NETWORK.equals(stateExtra)) {
- state = IccCardConstants.State.NETWORK_LOCKED;
+ } else if (IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR.equals(stateExtra)) {
+ state = IccCardConstants.State.CARD_IO_ERROR;
} else if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(stateExtra)
|| IccCardConstants.INTENT_VALUE_ICC_IMSI.equals(stateExtra)) {
// This is required because telephony doesn't return to "READY" after
@@ -1051,9 +1085,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean shouldListenForFingerprint() {
- return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep)
- && !mSwitchingUser && !mFingerprintAlreadyAuthenticated
- && !isFingerprintDisabled(getCurrentUser());
+ if (!mSwitchingUser && !mFingerprintAlreadyAuthenticated
+ && !isFingerprintDisabled(getCurrentUser())) {
+ if (mContext.getResources().getBoolean(
+ com.android.keyguard.R.bool.config_fingerprintWakeAndUnlock)) {
+ return mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep;
+ } else {
+ return mDeviceInteractive && (mKeyguardIsVisible || mBouncer);
+ }
+ }
+ return false;
}
private void startListeningForFingerprint() {
@@ -1091,8 +1132,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean isDeviceProvisionedInSettingsDb() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+ return CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 0) != 0;
}
private void watchForDeviceProvisioning() {
@@ -1109,7 +1150,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
+ CMSettings.Secure.getUriFor(CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED),
false, mDeviceProvisionedObserver);
// prevent a race condition between where we check the flag and where we register the
diff --git a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
index ef8bb0b..839c165 100644
--- a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
+++ b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.LayoutInflater;
@@ -29,6 +30,8 @@ import android.widget.TextView;
import com.android.internal.widget.LockPatternUtils;
+import cyanogenmod.providers.CMSettings;
+
public class NumPadKey extends ViewGroup {
// list of "ABC", etc per digit, starting with '0'
static String sKlondike[];
@@ -73,7 +76,6 @@ public class NumPadKey extends ViewGroup {
public NumPadKey(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setFocusable(true);
-
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NumPadKey);
try {
@@ -88,7 +90,6 @@ public class NumPadKey extends ViewGroup {
setAccessibilityDelegate(new ObscureSpeechDelegate(context));
mEnableHaptics = new LockPatternUtils(context).isTactileFeedbackEnabled();
-
mPM = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
@@ -98,32 +99,44 @@ public class NumPadKey extends ViewGroup {
mDigitText.setText(Integer.toString(mDigit));
mKlondikeText = (TextView) findViewById(R.id.klondike_text);
+ updateText();
+ setBackground(mContext.getDrawable(R.drawable.ripple_drawable));
+ setContentDescription(mDigitText.getText().toString());
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ // Reset the "announced headset" flag when detached.
+ ObscureSpeechDelegate.sAnnouncedHeadset = false;
+ }
+
+ public void setDigit(int digit) {
+ mDigit = digit;
+ updateText();
+ }
+
+ private void updateText() {
+ boolean scramblePin = (CMSettings.System.getInt(getContext().getContentResolver(),
+ CMSettings.System.LOCKSCREEN_PIN_SCRAMBLE_LAYOUT, 0) == 1);
if (mDigit >= 0) {
+ mDigitText.setText(Integer.toString(mDigit));
if (sKlondike == null) {
sKlondike = getResources().getStringArray(R.array.lockscreen_num_pad_klondike);
}
if (sKlondike != null && sKlondike.length > mDigit) {
String klondike = sKlondike[mDigit];
final int len = klondike.length();
- if (len > 0) {
+ if (len > 0 || scramblePin) {
mKlondikeText.setText(klondike);
} else {
mKlondikeText.setVisibility(View.INVISIBLE);
}
}
}
-
- setBackground(mContext.getDrawable(R.drawable.ripple_drawable));
- setContentDescription(mDigitText.getText().toString());
}
- @Override
- public void onDetachedFromWindow() {
- super.onDetachedFromWindow();
-
- // Reset the "announced headset" flag when detached.
- ObscureSpeechDelegate.sAnnouncedHeadset = false;
- }
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
diff --git a/packages/PrintSpooler/res/values-as-rIN/strings.xml b/packages/PrintSpooler/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-as-rIN/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-ast-rES/strings.xml b/packages/PrintSpooler/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..a6e8a9d
--- /dev/null
+++ b/packages/PrintSpooler/res/values-ast-rES/strings.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <string name="app_label">Cola d\'impresión</string>
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <string name="more_options_button">Más opciones</string>
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <string name="label_destination">Destín</string>
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <string name="label_copies">Copies</string>
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_copies_summary">Copies:</string>
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <string name="label_paper_size">Tamañu papel</string>
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_paper_size_summary">Tamañu papel:</string>
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <string name="label_color">Color</string>
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <string name="label_duplex">Dambos llaos</string>
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <string name="label_orientation">Orientación</string>
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <string name="label_pages">Páxines</string>
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_all_pages">Too <xliff:g id="page_count" example="100">%1$s</xliff:g></string>
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_page_range">Rangu de <xliff:g id="page_count" example="100">%1$s</xliff:g></string>
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <string name="pages_range_example">ex. 1—5,8,11—13</string>
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <string name="print_preview">Previsualizar impresión</string>
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <string name="install_for_print_preview">Instalar visor PDF pa previsualizar</string>
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <string name="printing_app_crashed">Falló l\'aplicación d\'impresión</string>
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <string name="generating_print_job">Xenerando trabayu d\'impresión</string>
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <string name="save_as_pdf">Guardar como PDF</string>
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <string name="all_printers">Toles imprentadores&#8230;</string>
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <string name="print_dialog">Cuadru de diálogu d\'impresión</string>
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <string name="current_page_template"><xliff:g id="current_page">%1$d</xliff:g>
+ /<xliff:g id="page_count">%2$d</xliff:g></string>
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <string name="page_description_template">Páxina <xliff:g id="current_page" example="1">%1$d</xliff:g>
+ de <xliff:g id="page_count" example="100">%2$d</xliff:g></string>
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="summary_template">Resume, copies <xliff:g id="copies" example="1">%1$s</xliff:g>,
+ tamañu papel <xliff:g id="paper_size" example="A4">%2$s</xliff:g></string>
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="expand_handle">Remanar espansión</string>
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="collapse_handle">Remanar contraición</string>
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_button">Imprentar</string>
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="savetopdf_button">Guardar a PDF</string>
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_expanded">Opciones d\'imprentación espandíes</string>
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_collapsed">Opciones d\'imprentación contrayíes</string>
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <string name="search">Guetar</string>
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <string name="all_printers_label">Toles imprentadores</string>
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <string name="add_print_service_label">Amestar serviciu</string>
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_shown_utterance">Cuadru de gueta visible</string>
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_hidden_utterance">Cuadru de gueta anubríu</string>
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <string name="print_add_printer">Amestar imprentadora</string>
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <string name="print_select_printer">Esbillar imprentadora</string>
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <string name="print_forget_printer">Esborrar imprentadora</string>
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <plurals name="print_search_result_count_utterance">
+ <item quantity="one">Atopóse <xliff:g id="count" example="1">%1$s</xliff:g> imprentadora</item>
+ <item quantity="other">Atopáronse <xliff:g id="count" example="2">%1$s</xliff:g> imprentadores</item>
+ </plurals>
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <string name="choose_print_service">Elexir serviciu d\'impresión</string>
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <string name="print_searching_for_printers">Guetando imprentadores</string>
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <string name="print_no_printers">Nun s\'atoparon imprentadores</string>
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <string name="printing_notification_title_template">Imprentando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <string name="cancelling_notification_title_template">Encaboxando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <string name="failed_notification_title_template">Fallu d\'imprentadora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <string name="blocked_notification_title_template">La imprentadora bloquió <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <plurals name="composite_notification_title_template">
+ <item quantity="one"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g> trabayu d\'impresión</item>
+ <item quantity="other"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g> trabayos d\'impresión</item>
+ </plurals>
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <string name="cancel">Encaboxar</string>
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <string name="restart">Reaniciar</string>
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <string name="no_connection_to_printer">Nun hai conexón cola imprentadora</string>
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <string name="reason_unknown">desconocíu</string>
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <string name="printer_unavailable"><xliff:g id="print_job_name" example="Canon-123GHT">%1$s</xliff:g> – non disponible</string>
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <string-array name="color_mode_labels">
+ <!-- Color mode label: Monochrome color scheme, e.g. one color is used. [CHAR LIMIT=20] -->
+ <item>Blancu y prietu</item>
+ <!-- Color mode label: Color color scheme, e.g. many colors are used. [CHAR LIMIT=20] -->
+ <item>Color</item>
+ </string-array>
+ <!-- Duplex mode labels. -->
+ <string-array name="duplex_mode_labels">
+ <!-- Duplex mode label: No duplex supported. [CHAR LIMIT=20] -->
+ <item>Nengún</item>
+ <!-- Duplex mode label: Turn page sideways along the long edge like a book. [CHAR LIMIT=20] -->
+ <item>Borde llargu</item>
+ <!-- Duplex mode label: Turn page upwards along the short edge like a notepad. [CHAR LIMIT=20] -->
+ <item>Borde curtiu</item>
+ </string-array>
+ <!-- Orientation labels. -->
+ <string-array name="orientation_labels">
+ <!-- Orientation label: Portrait page orientation. [CHAR LIMIT=30] -->
+ <item>Retratu</item>
+ <!-- Orientation label: Landscape page orientation [CHAR LIMIT=30] -->
+ <item>Paisaxe</item>
+ </string-array>
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <string name="print_write_error_message">Nun pudo escribise nel ficheru</string>
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <string name="print_error_default_message">Nun funcionó. Inténtalo otra vegada.</string>
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <string name="print_error_retry">Repitir</string>
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <string name="print_error_printer_unavailable">La imprentadora nun ta disponible agora.</string>
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+ <string name="print_preparing_preview">Preparando previsualización\u2026</string>
+</resources>
diff --git a/packages/PrintSpooler/res/values-be/strings.xml b/packages/PrintSpooler/res/values-be/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-be/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-br-rFR/strings.xml b/packages/PrintSpooler/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-br-rFR/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-bs-rBA/strings.xml b/packages/PrintSpooler/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-bs-rBA/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-csb-rPL/strings.xml b/packages/PrintSpooler/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-csb-rPL/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-cy/strings.xml b/packages/PrintSpooler/res/values-cy/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-cy/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-en-rPT/strings.xml b/packages/PrintSpooler/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-en-rPT/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-eo/strings.xml b/packages/PrintSpooler/res/values-eo/strings.xml
new file mode 100644
index 0000000..b06a0bb
--- /dev/null
+++ b/packages/PrintSpooler/res/values-eo/strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_copies_summary">Kopioj:</string>
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <string name="all_printers">Ĉiuj presiloj&#8230;</string>
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_button">Presi</string>
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <string name="search">Serĉi</string>
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <string name="all_printers_label">Ĉiuj presiloj</string>
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <string name="add_print_service_label">Aldoni servon</string>
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <string name="print_add_printer">Aldoni presilon</string>
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <string name="print_select_printer">Elekti presilon</string>
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <string name="print_forget_printer">Forgesi presilon</string>
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <string name="cancel">Nuligi</string>
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <string name="reason_unknown">nekonata</string>
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <string-array name="color_mode_labels">
+ <!-- Color mode label: Monochrome color scheme, e.g. one color is used. [CHAR LIMIT=20] -->
+ <item>Black &amp; White</item>
+ <!-- Color mode label: Color color scheme, e.g. many colors are used. [CHAR LIMIT=20] -->
+ <item>Koloro</item>
+ </string-array>
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-es-rCO/strings.xml b/packages/PrintSpooler/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-es-rCO/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-es-rMX/strings.xml b/packages/PrintSpooler/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-es-rMX/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-frp-rIT/strings.xml b/packages/PrintSpooler/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-frp-rIT/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-fy-rNL/strings.xml b/packages/PrintSpooler/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-fy-rNL/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-ga-rIE/strings.xml b/packages/PrintSpooler/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-ga-rIE/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-gd-rGB/strings.xml b/packages/PrintSpooler/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-gd-rGB/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-ku/strings.xml b/packages/PrintSpooler/res/values-ku/strings.xml
new file mode 100644
index 0000000..e3ca662
--- /dev/null
+++ b/packages/PrintSpooler/res/values-ku/strings.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <string name="app_label">بەڕێوەبەری چاپکەر</string>
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <string name="more_options_button">بەربژاردەی زیاتر</string>
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <string name="label_destination">ئامانج</string>
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <string name="label_copies">لەبەرگرتنەوەکان</string>
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_copies_summary">لەبەرگرتنەوەکان:</string>
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <string name="label_paper_size">قەبارەی کاغەز</string>
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_paper_size_summary">قەبارەی کاغەز:</string>
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <string name="label_color">رەنگ</string>
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <string name="label_orientation">باری پیشاندان</string>
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <string name="label_pages">پەڕەکان</string>
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_all_pages">هەموو <xliff:g id="page_count" example="100">%1$s</xliff:g></string>
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_page_range">ڕێژەی <xliff:g id="page_count" example="100">%1$s</xliff:g></string>
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <string name="pages_range_example">نموونە . 1—5,8,11—13</string>
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <string name="print_preview">بینینی پێش چاپ</string>
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <string name="install_for_print_preview">دامەزراندنی بینەری PDF بۆ پێشبینین</string>
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <string name="printing_app_crashed">بەرنامەی چاپکردن تێکشکا</string>
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <string name="generating_print_job">سازدانی ئەرکی چاپ</string>
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <string name="save_as_pdf">پاشەکەوت بە PDF</string>
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <string name="all_printers">هەموو چاپکەرەکان&#8230;</string>
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <string name="print_dialog">دیالۆگی چاپ</string>
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <string name="current_page_template"><xliff:g id="current_page">%1$d</xliff:g>
+        /<xliff:g id="page_count">%2$d</xliff:g></string>
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <string name="page_description_template">پەڕە <xliff:g id="current_page" example="1">%1$d</xliff:g>
+        لە <xliff:g id="page_count" example="100">%2$d</xliff:g></string>
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="summary_template">کورتە, لەبەرگرتنەوە <xliff:g id="copies" example="1">%1$s</xliff:g>,
+        قەبارەی پەڕە <xliff:g id="paper_size" example="A4">%2$s</xliff:g></string>
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="expand_handle">بڵاوکردنەوەی دەست</string>
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="collapse_handle">دەست دەکەوێت</string>
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_button">چاپکردن</string>
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="savetopdf_button">پاشەکەوتبکە بۆ PDF</string>
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_expanded">هەڵبژاردەی لەبەرگرتنەوە بڵاوکرایەوە</string>
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_collapsed">هەڵبژادەکانی لەبەرگرتنەوەی دەستکەوت</string>
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <string name="search">گەڕان</string>
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <string name="all_printers_label">هەموو چاپکەرەکان</string>
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <string name="add_print_service_label">زیادکردنی ڕاژە</string>
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_shown_utterance">سنووقی گەڕان پیشاندراوە</string>
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_hidden_utterance">سنووقی گەڕان شاراوەیە</string>
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <string name="print_add_printer">چاپکەر زیاد بکە</string>
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <string name="print_select_printer">چاپکەر دەستنیشان بکە</string>
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <string name="print_forget_printer">چاپکەر لەیادکە</string>
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <plurals name="print_search_result_count_utterance">
+ <item quantity="one"><xliff:g id="count" example="1">%1$s</xliff:g> چاپکەری دۆزراوە</item>
+ <item quantity="other"><xliff:g id="count" example="2">%1$s</xliff:g> چاپکەرەکانی دۆزراوە</item>
+ </plurals>
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <string name="choose_print_service">خزمەتگوزاریی چاپکردن هەڵبژێرە</string>
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <string name="print_searching_for_printers">گەڕان بەدوای چاپکەردا</string>
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <string name="print_no_printers">هیچ چاپکەرێک نەدۆزرایەوە</string>
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <string name="printing_notification_title_template">چاپکردن <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <string name="cancelling_notification_title_template">هەڵوەشاندنەوە <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <string name="failed_notification_title_template">هەڵەی چاپکەر <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <string name="blocked_notification_title_template">چاپکەر بەستراوە <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <plurals name="composite_notification_title_template">
+ <item quantity="one"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g>کاری چاپکردن</item>
+ <item quantity="other"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g> کارەکانی چاپکردن</item>
+ </plurals>
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <string name="cancel">هەڵوەشانەوە</string>
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <string name="restart">دەستپێکردنەوە</string>
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <string name="no_connection_to_printer">پەیوەست نییە بە چاپکەرەوە</string>
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <string name="reason_unknown">نەناسراو</string>
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <string name="printer_unavailable"><xliff:g id="print_job_name" example="Canon-123GHT">%1$s</xliff:g> – بەردەست نییە</string>
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <string-array name="color_mode_labels">
+ <!-- Color mode label: Monochrome color scheme, e.g. one color is used. [CHAR LIMIT=20] -->
+ <item>رەش وamp; سپی</item>
+ <!-- Color mode label: Color color scheme, e.g. many colors are used. [CHAR LIMIT=20] -->
+ <item>ڕەنگ</item>
+ </string-array>
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <string-array name="orientation_labels">
+ <!-- Orientation label: Portrait page orientation. [CHAR LIMIT=30] -->
+ <item>وێنەی شێوە</item>
+ <!-- Orientation label: Landscape page orientation [CHAR LIMIT=30] -->
+ <item>وێنەی سروشت</item>
+ </string-array>
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <string name="print_write_error_message">ناتوانرێت فایلێک بنوسرێت</string>
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <string name="print_error_default_message">ببورە، ئەمە کاری نەکرد. دوبارە هەوڵبدەرەوە.</string>
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <string name="print_error_retry">هەوڵدانەوە</string>
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <string name="print_error_printer_unavailable">ئەم چاپکەرە لە کارانیە ئێستا.</string>
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+ <string name="print_preparing_preview">پیشاندانی ڕێکخستن\u2026</string>
+</resources>
diff --git a/packages/PrintSpooler/res/values-lb/strings.xml b/packages/PrintSpooler/res/values-lb/strings.xml
new file mode 100644
index 0000000..47805f0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-lb/strings.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <string name="app_label">Drock-Tëschespäicher</string>
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <string name="more_options_button">Méi Optiounen</string>
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <string name="label_destination">Destinatioun</string>
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <string name="label_copies">Kopien</string>
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_copies_summary">Kopien:</string>
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <string name="label_paper_size">Pabeiersgréisst</string>
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <string name="label_paper_size_summary">Pabeiersgréisst:</string>
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <string name="label_color">Faarf</string>
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <string name="label_orientation">Orientéierung</string>
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <string name="label_pages">Säiten</string>
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_all_pages">All (<xliff:g id="page_count" example="100">%1$s</xliff:g>)</string>
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <string name="template_page_range">Rei (<xliff:g id="page_count" example="100">%1$s</xliff:g>)</string>
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <string name="pages_range_example">z. B. 1-5,8,11-13</string>
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <string name="print_preview">Drockvirschau</string>
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <string name="install_for_print_preview">Installéier e PDF-Programm fir eng Drockvirschau</string>
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <string name="printing_app_crashed">D\'Drockapp ass ofgestierzt</string>
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <string name="generating_print_job">Drockoptrag gëtt generéiert</string>
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <string name="save_as_pdf">Als PDF späicheren</string>
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <string name="all_printers">All d\'Drécker&#8230;</string>
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <string name="print_dialog">Drockdialogfënster</string>
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <string name="current_page_template"><xliff:g id="current_page">%1$d</xliff:g> / <xliff:g id="page_count">%2$d</xliff:g></string>
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <string name="page_description_template">Säit <xliff:g id="current_page" example="1">%1$d</xliff:g> / <xliff:g id="page_count" example="100">%2$d</xliff:g></string>
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="summary_template">Resumé, <xliff:g id="copies" example="1">%1$s</xliff:g> Kopien, Pabeiersgréisst <xliff:g id="paper_size" example="A4">%2$s</xliff:g></string>
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="expand_handle">Steierelement fir d\'Ausklappen</string>
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="collapse_handle">Steierelement fir d\'Zesummeklappen</string>
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_button">Drécken</string>
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="savetopdf_button">Als PDF späicheren</string>
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_expanded">Drockoptiounen ausgeklappt</string>
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_options_collapsed">Drockoptiounen zesummegeklappt</string>
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <string name="search">Sichen</string>
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <string name="all_printers_label">All d\'Drécker</string>
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <string name="add_print_service_label">Service dobäisetzen</string>
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_shown_utterance">Sichkëscht ugewisen</string>
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_hidden_utterance">Sichkëscht verstoppt</string>
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <string name="print_add_printer">Drécker dobäisetzen</string>
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <string name="print_select_printer">Drécker auswielen</string>
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <string name="print_forget_printer">Drécker vergiessen</string>
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <plurals name="print_search_result_count_utterance">
+ <item quantity="one"><xliff:g id="count" example="1">%1$s</xliff:g> Drécker fonnt</item>
+ <item quantity="other"><xliff:g id="count" example="1">%1$s</xliff:g> Drécker fonnt</item>
+ </plurals>
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <string name="choose_print_service">Drockservice auswielen</string>
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <string name="print_searching_for_printers">Et gëtt no Drécker gesicht</string>
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <string name="print_no_printers">Keen Drécker fonnt</string>
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <string name="printing_notification_title_template"><xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g> gëtt gedréckt</string>
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <string name="cancelling_notification_title_template"><xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g> gëtt ofgebrach</string>
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <string name="failed_notification_title_template">Dréckerfeeler <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <string name="blocked_notification_title_template">Drécker blockéiert <xliff:g id="print_job_name" example="foo.jpg">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <plurals name="composite_notification_title_template">
+ <item quantity="one"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g> Drockoptrag</item>
+ <item quantity="other"><xliff:g id="print_job_name" example="foo.jpg">%1$d</xliff:g> Drockopträg</item>
+ </plurals>
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <string name="cancel">Ofbriechen</string>
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <string name="restart">Nei starten</string>
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <string name="no_connection_to_printer">Keng Connectioun mam Drécker</string>
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <string name="reason_unknown">onbekannt</string>
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <string name="printer_unavailable"><xliff:g id="print_job_name" example="Canon-123GHT">%1$s</xliff:g> – net verfügbar</string>
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <string-array name="color_mode_labels">
+ <!-- Color mode label: Monochrome color scheme, e.g. one color is used. [CHAR LIMIT=20] -->
+ <item>Schwaarz &amp; Wäiss</item>
+ <!-- Color mode label: Color color scheme, e.g. many colors are used. [CHAR LIMIT=20] -->
+ <item>Faarf</item>
+ </string-array>
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <string-array name="orientation_labels">
+ <!-- Orientation label: Portrait page orientation. [CHAR LIMIT=30] -->
+ <item>Héichformat</item>
+ <!-- Orientation label: Landscape page orientation [CHAR LIMIT=30] -->
+ <item>Breetformat</item>
+ </string-array>
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <string name="print_write_error_message">Feeler beim Schreiwen an de Fichier</string>
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <string name="print_error_default_message">Dat ass leider net gaangen. Probéier nees.</string>
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <string name="print_error_retry">Nees probéieren</string>
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <string name="print_error_printer_unavailable">Den Drécker ass momentan net disponibel.</string>
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+ <string name="print_preparing_preview">Virschau gëtt preparéiert\u2026</string>
+</resources>
diff --git a/packages/PrintSpooler/res/values-oc-rFR/strings.xml b/packages/PrintSpooler/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-oc-rFR/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-or-rIN/strings.xml b/packages/PrintSpooler/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..52d0bc0
--- /dev/null
+++ b/packages/PrintSpooler/res/values-or-rIN/strings.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/res/values-ug/strings.xml b/packages/PrintSpooler/res/values-ug/strings.xml
new file mode 100644
index 0000000..05c60a6
--- /dev/null
+++ b/packages/PrintSpooler/res/values-ug/strings.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the PrintSpooler application. [CHAR LIMIT=50] -->
+ <string name="app_label">بېسىشنى بىر تەرەپ قىلىش مۇلازىمىتى</string>
+ <!-- Label of the print dialog's button for more print options. [CHAR LIMIT=25] -->
+ <!-- Label of the destination widget. [CHAR LIMIT=20] -->
+ <string name="label_destination">نىشان</string>
+ <!-- Label of the copies count widget. [CHAR LIMIT=20] -->
+ <string name="label_copies">نۇسخا</string>
+ <!-- Label of the copies count for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size widget. [CHAR LIMIT=20] -->
+ <!-- Label of the paper size for the print options summary. [CHAR LIMIT=20] -->
+ <!-- Label of the color mode widget. [CHAR LIMIT=20] -->
+ <string name="label_color">رەڭ</string>
+ <!-- Label of the printer mode to print on both sides of paper. [CHAR LIMIT=20] -->
+ <!-- Label of the orientation widget. [CHAR LIMIT=20] -->
+ <string name="label_orientation">يۆنىلىش</string>
+ <!-- Label of the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the all pages option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Template for the page range option in the page selection widget. [CHAR LIMIT=20] -->
+ <!-- Page range exmple used as a hint of how to specify such. [CHAR LIMIT=20] -->
+ <string name="pages_range_example">مەسىلەن: 1–5,8,11–13</string>
+ <!-- Title for the pring preview button .[CHAR LIMIT=30] -->
+ <string name="print_preview">بېسىشنى ئالدىن كۆزەت</string>
+ <!-- Title for the pring preview button if there is no PDF viewer isntalled. [CHAR LIMIT=50] -->
+ <string name="install_for_print_preview">ئالدىن كۆزىتىش ئۈچۈن PDF كۆرگۈچ ئورنىتىدۇ</string>
+ <!-- Title of the message that the printing application crashed. [CHAR LIMIT=50] -->
+ <string name="printing_app_crashed">باسىدىغان ئەپ يىمىرىلدى</string>
+ <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] -->
+ <string name="generating_print_job">بېسىش ۋەزىپىسى قۇرۇۋاتىدۇ</string>
+ <!-- Title for the save as PDF option in the printer list. [CHAR LIMIT=30] -->
+ <string name="save_as_pdf">PDF سۈپىتىدە ساقلا</string>
+ <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
+ <string name="all_printers">بارلىق پرىنتېرلار&#8230;</string>
+ <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
+ <string name="print_dialog">بېسىش سۆزلەشكۈ</string>
+ <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
+ <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
+ <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
+ <string name="print_button">باس</string>
+ <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
+ <!-- Select printer activity -->
+ <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+ <string name="search">ئىزدە</string>
+ <!-- Title for the select printer activity. [CHAR LIMIT=30] -->
+ <string name="all_printers_label">بارلىق پرىنتېرلار</string>
+ <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
+ <string name="add_print_service_label">مۇلازىمەت قوش</string>
+ <!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_shown_utterance">ئىزدەش قۇتىسى كۆرۈندى</string>
+ <!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <string name="print_search_box_hidden_utterance">ئىزدەش قۇتىسى يوشۇرۇلدى</string>
+ <!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
+ <string name="print_add_printer">پرىنتېر قوش</string>
+ <!-- Title of the menu item to select a printer. [CHAR LIMIT=25] -->
+ <string name="print_select_printer">پىرىنتېرنى تاللاڭ</string>
+ <!-- Title of the menu item to forget a printer. [CHAR LIMIT=25] -->
+ <string name="print_forget_printer">پىرىنتېرنى ئەستە تۇتما</string>
+ <!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
+ <!-- Add printer dialog -->
+ <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->
+ <string name="choose_print_service">بېسىش مۇلازىمىتىنى تاللاڭ</string>
+ <!-- Title for the prompt shown as a placeholder if no printers are found while not searching. [CHAR LIMIT=50] -->
+ <string name="print_searching_for_printers">پرىنتېرلارنى ئىزدەۋاتىدۇ</string>
+ <!-- Title for the prompt shown as a placeholder if there are no printers while searching. [CHAR LIMIT=50] -->
+ <string name="print_no_printers">پرىنتېر تېپىلمىدى</string>
+ <!-- Notifications -->
+ <!-- Template for the notification label for a printing print job. [CHAR LIMIT=25] -->
+ <string name="printing_notification_title_template">بېسىۋاتقىنى <xliff:g id="PRINT_JOB_NAME">%s</xliff:g></string>
+ <!-- Template for the notification label for a cancelling print job. [CHAR LIMIT=25] -->
+ <string name="cancelling_notification_title_template">بىكار قىلىۋاتقىنى <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g></string>
+ <!-- Template for the notification label for a failed print job. [CHAR LIMIT=25] -->
+ <string name="failed_notification_title_template">پىرىنتېر <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> نى بېسىۋاتقاندا خاتالىق كۆرۈلدى</string>
+ <!-- Template for the notification label for a blocked print job. [CHAR LIMIT=25] -->
+ <string name="blocked_notification_title_template">پىرىنتېر <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> نى بېسىشنى توستى</string>
+ <!-- Template for the notification label for a composite (multiple items) print jobs notification. [CHAR LIMIT=25] -->
+ <!-- Label for the notification button for cancelling a print job. [CHAR LIMIT=25] -->
+ <string name="cancel">ۋاز كەچ</string>
+ <!-- Label for the notification button for restarting a filed print job. [CHAR LIMIT=25] -->
+ <string name="restart">قايتا قوزغات</string>
+ <!-- Message that there is no connection to a printer. [CHAR LIMIT=40] -->
+ <string name="no_connection_to_printer">پرىنتېر بىلەن باغلانمىدى</string>
+ <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
+ <string name="reason_unknown">يوچۇن</string>
+ <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
+ <string name="printer_unavailable"><xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ئىشلەتكىلى بولمايدۇ</string>
+ <!-- Arrays -->
+ <!-- Color mode labels. -->
+ <string-array name="color_mode_labels">
+ <!-- Color mode label: Monochrome color scheme, e.g. one color is used. [CHAR LIMIT=20] -->
+ <item>ئاق&amp;قارا</item>
+ <!-- Color mode label: Color color scheme, e.g. many colors are used. [CHAR LIMIT=20] -->
+ <item>رەڭ</item>
+ </string-array>
+ <!-- Duplex mode labels. -->
+ <!-- Orientation labels. -->
+ <string-array name="orientation_labels">
+ <!-- Orientation label: Portrait page orientation. [CHAR LIMIT=30] -->
+ <item>بويىغا</item>
+ <!-- Orientation label: Landscape page orientation [CHAR LIMIT=30] -->
+ <item>توغرىسىغا</item>
+ </string-array>
+ <!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether
+ they want to allow the application to do this. -->
+ <!-- Title of an application permission, listed so the user can choose whether they want
+ to allow the application to do this. -->
+ <!-- Description of an application permission, listed so the user can choose whether they
+ want to allow the application to do this. -->
+ <!-- Error messages -->
+ <!-- Message for an error when trying to print to a PDF file. [CHAR LIMIT=50] -->
+ <!-- Default message for an error while generating a print job. [CHAR LIMIT=50] -->
+ <!-- Label for the retry button in the error message. [CHAR LIMIT=50] -->
+ <!-- Message for the currently selected printer being unavailable. [CHAR LIMIT=100] -->
+ <!-- Long running operations -->
+ <!-- Message long running operation when preparing print preview. [CHAR LIMIT=50] -->
+</resources>
diff --git a/packages/PrintSpooler/src/com/android/printspooler/renderer/PdfManipulationService.java b/packages/PrintSpooler/src/com/android/printspooler/renderer/PdfManipulationService.java
index 7db2074..11a9a0e 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/renderer/PdfManipulationService.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/renderer/PdfManipulationService.java
@@ -56,6 +56,7 @@ public final class PdfManipulationService extends Service {
private static final int MILS_PER_INCH = 1000;
private static final int POINTS_IN_INCH = 72;
+ private final Object mLock = new Object();
@Override
public IBinder onBind(Intent intent) {
@@ -74,8 +75,6 @@ public final class PdfManipulationService extends Service {
}
private final class PdfRendererImpl extends IPdfRenderer.Stub {
- private final Object mLock = new Object();
-
private Bitmap mBitmap;
private PdfRenderer mRenderer;
@@ -209,8 +208,6 @@ public final class PdfManipulationService extends Service {
}
private final class PdfEditorImpl extends IPdfEditor.Stub {
- private final Object mLock = new Object();
-
private PdfEditor mEditor;
@Override
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index e8a5e43..8f680d7 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -371,6 +371,22 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
}
@Override
+ protected void onDestroy() {
+ if (mState != STATE_INITIALIZING) {
+ mPrintPreviewController.destroy(new Runnable() {
+ @Override
+ public void run() {
+ finish();
+ }
+ });
+ } else {
+ finish();
+ }
+
+ super.onDestroy();
+ }
+
+ @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
event.startTracking();
@@ -655,9 +671,11 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
}
}
- PrinterId printerId = mCurrentPrinter.getId();
- final int index = mDestinationSpinnerAdapter.getPrinterIndex(printerId);
- mDestinationSpinner.setSelection(index);
+ if (mCurrentPrinter != null) {
+ PrinterId printerId = mCurrentPrinter.getId();
+ final int index = mDestinationSpinnerAdapter.getPrinterIndex(printerId);
+ mDestinationSpinner.setSelection(index);
+ }
}
private void startAdvancedPrintOptionsActivity(PrinterInfo printer) {
diff --git a/packages/SettingsLib/res/drawable-hdpi/activities_icon.png b/packages/SettingsLib/res/drawable-hdpi/activities_icon.png
new file mode 100644
index 0000000..d4fb5cb
--- /dev/null
+++ b/packages/SettingsLib/res/drawable-hdpi/activities_icon.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png b/packages/SettingsLib/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png
index 2d9b75e..eebbe00 100644
--- a/packages/SettingsLib/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png
+++ b/packages/SettingsLib/res/drawable-ldrtl-hdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png b/packages/SettingsLib/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png
index b6ebe34..92d7e51 100644
--- a/packages/SettingsLib/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png
+++ b/packages/SettingsLib/res/drawable-ldrtl-mdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png b/packages/SettingsLib/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png
index 8b67b91..95f90bac 100644
--- a/packages/SettingsLib/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png
+++ b/packages/SettingsLib/res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-mdpi/activities_icon.png b/packages/SettingsLib/res/drawable-mdpi/activities_icon.png
new file mode 100644
index 0000000..db3f889
--- /dev/null
+++ b/packages/SettingsLib/res/drawable-mdpi/activities_icon.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-xhdpi/activities_icon.png b/packages/SettingsLib/res/drawable-xhdpi/activities_icon.png
new file mode 100644
index 0000000..b649acb
--- /dev/null
+++ b/packages/SettingsLib/res/drawable-xhdpi/activities_icon.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-xxhdpi/activities_icon.png b/packages/SettingsLib/res/drawable-xxhdpi/activities_icon.png
new file mode 100644
index 0000000..295bba3
--- /dev/null
+++ b/packages/SettingsLib/res/drawable-xxhdpi/activities_icon.png
Binary files differ
diff --git a/packages/SettingsLib/res/drawable-xxxhdpi/activities_icon.png b/packages/SettingsLib/res/drawable-xxxhdpi/activities_icon.png
new file mode 100644
index 0000000..0b05aef
--- /dev/null
+++ b/packages/SettingsLib/res/drawable-xxxhdpi/activities_icon.png
Binary files differ
diff --git a/packages/SettingsLib/res/values-af/cm_strings.xml b/packages/SettingsLib/res/values-af/cm_strings.xml
new file mode 100644
index 0000000..8481dda
--- /dev/null
+++ b/packages/SettingsLib/res/values-af/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Programme</string>
+ <string name="picker_activities">Aktiwiteite</string>
+ <string name="select_custom_app_title">Kies persoonlike program</string>
+ <string name="select_custom_activity_title">Kies persoonlike aktiwiteit</string>
+ <string name="lockscreen_targets_message">Slotskerm kortpaaie</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ar/cm_strings.xml b/packages/SettingsLib/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..883f544
--- /dev/null
+++ b/packages/SettingsLib/res/values-ar/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">التطبيقات</string>
+ <string name="picker_activities">النشاطات</string>
+ <string name="select_custom_app_title">تحديد تطبيق مخصص</string>
+ <string name="select_custom_activity_title">تحديد نشاط مخصص</string>
+ <string name="lockscreen_targets_message">اختصارات شاشة التأمين</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-as-rIN/arrays.xml b/packages/SettingsLib/res/values-as-rIN/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-as-rIN/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-as-rIN/cm_strings.xml b/packages/SettingsLib/res/values-as-rIN/cm_strings.xml
new file mode 100644
index 0000000..a4161d0
--- /dev/null
+++ b/packages/SettingsLib/res/values-as-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">এপ্পসমূহ</string>
+ <string name="picker_activities">কাৰ্যাৱলীসমূহ</string>
+ <string name="select_custom_app_title">কাষ্টম এপ্প চয়ন কৰক</string>
+ <string name="select_custom_activity_title">কাষ্টম কাৰ্যকলাপ চয়ন কৰক</string>
+ <string name="lockscreen_targets_message">লক স্ক্ৰীণ চমুপথ</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-as-rIN/strings.xml b/packages/SettingsLib/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-as-rIN/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ast-rES/arrays.xml b/packages/SettingsLib/res/values-ast-rES/arrays.xml
new file mode 100644
index 0000000..6e3c7ef
--- /dev/null
+++ b/packages/SettingsLib/res/values-ast-rES/arrays.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <string-array name="wifi_status">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>Esplorando\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting. -->
+ <item>Coneutando\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating. -->
+ <item>Autenticando\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address. -->
+ <item>Obteniendo la direición IP\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected. -->
+ <item>Coneutáu</item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>Suspendíu</item>
+ <!-- Status message of Wi-Fi when it is disconnecting. -->
+ <item>Desconeutando\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Desconeutáu</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Incorreutu</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Bloquiada</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Desactivando mala conexón temporalmente</item>
+ </string-array>
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+ <string-array name="wifi_status_with_ssid">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>Esplorando\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting to a network. -->
+ <item>Coneutando a <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating with a network. -->
+ <item>Autenticando con <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address from a network. -->
+ <item>Obteniendo direición IP de <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected to a network. -->
+ <item>Coneutáu a <xliff:g id="network_name">%1$s</xliff:g></item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>Suspendíu</item>
+ <!-- Status message of Wi-Fi when it is disconnecting from a network. -->
+ <item>Desconeutando de <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Desconeutáu</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Incorreutu</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Bloquiada</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Desactivando mala conexón temporalmente</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ast-rES/cm_strings.xml b/packages/SettingsLib/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..a91e12f
--- /dev/null
+++ b/packages/SettingsLib/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicaciones</string>
+ <string name="picker_activities">Actividaes</string>
+ <string name="select_custom_app_title">Esbilla d\'app personalizada</string>
+ <string name="select_custom_activity_title">Esbilla d\'app personalizada</string>
+ <string name="lockscreen_targets_message">Atayos de pantalla de bloquéu</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ast-rES/strings.xml b/packages/SettingsLib/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..f1a1f88
--- /dev/null
+++ b/packages/SettingsLib/res/values-ast-rES/strings.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <string name="wifi_fail_to_scan">Nun puen buscase redes</string>
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <string name="wifi_security_short_wep">WEP</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <string name="wifi_security_short_wpa">WPA</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <string name="wifi_security_short_wpa2">WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <string name="wifi_security_short_wpa_wpa2">WPA/WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <string name="wifi_security_short_psk_generic">@string/wifi_security_short_wpa_wpa2</string>
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_short_eap">802.1x</string>
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <string name="wifi_security_none">Nenguna</string>
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <string name="wifi_security_wep">WEP</string>
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <string name="wifi_security_wpa">WPA PSK</string>
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <string name="wifi_security_wpa2">WPA2 PSK</string>
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <string name="wifi_security_wpa_wpa2">WPA/WPA2 PSK</string>
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <string name="wifi_security_psk_generic">@string/wifi_security_wpa_wpa2</string>
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_eap">802.1x EAP</string>
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <string name="wifi_security_passpoint">Passpoint</string>
+ <!-- Summary for the remembered network. -->
+ <string name="wifi_remembered">Guardada</string>
+ <!-- Status for networks disabled for unknown reason -->
+ <string name="wifi_disabled_generic">Deshabilitada</string>
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <string name="wifi_disabled_network_failure">Fallu de configuración IP</string>
+ <!-- Status for networked disabled from a wifi association failure -->
+ <string name="wifi_disabled_wifi_failure">Fallu de conexón Wi-Fi</string>
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <string name="wifi_disabled_password_failure">Problema d\'autenticación</string>
+ <!-- Summary for the remembered network but currently not in range. -->
+ <string name="wifi_not_in_range">Fuera d\'algame</string>
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <string name="wifi_no_internet">Nun se deteutó l\'accesu a Internet. Nun va volver a coneutase de mou automáticu.</string>
+ <!-- Summary for saved networks -->
+ <string name="saved_network">Guardada por <xliff:g id="name">%1$s</xliff:g></string>
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <string name="connected_via_wfa">Coneutáu por asistente de Wi-Fi</string>
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <string name="connected_via_passpoint">Conexón al traviés de %1$s</string>
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <string name="available_via_passpoint">Disponible al traviés de %1$s</string>
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <string name="wifi_connected_no_internet">Conectáu, ensin Internet</string>
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <string name="bluetooth_disconnected">Desconeutáu</string>
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <string name="bluetooth_disconnecting">Desconeutando\u2026</string>
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <string name="bluetooth_connecting">Coneutando\u2026</string>
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected">Coneutáu</string>
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <string name="bluetooth_pairing">Enllazando\u2026</string>
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected_no_headset">Coneutáu (ensin tfnu)</string>
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected_no_a2dp">Coneutáu (ensin multimedia)</string>
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected_no_map">Coneutáu (ensin accesu a mensaxes)</string>
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected_no_headset_no_a2dp">Coneutáu (ensin tel. nin multimedia)</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <string name="bluetooth_profile_a2dp">Audiu multimedia</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <string name="bluetooth_profile_headset">Audiu del preséu</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <string name="bluetooth_profile_opp">Tresferencia de ficheros</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <string name="bluetooth_profile_hid">Preséu d\'entrada</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <string name="bluetooth_profile_pan">Accesu a Internet</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <string name="bluetooth_profile_pbap">Compartir contautos</string>
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <string name="bluetooth_profile_pbap_summary">Usar pa compartir contautos</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <string name="bluetooth_profile_pan_nap">Compartir conexón d\'internet</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <string name="bluetooth_profile_map">Accesu a mensaxes</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <string name="bluetooth_profile_sap">Accesu SIM</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <string name="bluetooth_profile_dun">Accesu telefónicu a redes</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <string name="bluetooth_a2dp_profile_summary_connected">Conectáu al audiu multimedia</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <string name="bluetooth_headset_profile_summary_connected">Conectáu al audiu del preséu</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <string name="bluetooth_opp_profile_summary_connected">Coneutáu al sirvidor de tresferencia de ficheros</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <string name="bluetooth_map_profile_summary_connected">Coneutáu a mapa</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <string name="bluetooth_sap_profile_summary_connected">Coneutáu a SAP</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <string name="bluetooth_opp_profile_summary_not_connected">Ensin conexón col sirvidor de tresferencia de ficheros</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <string name="bluetooth_hid_profile_summary_connected">Coneutáu a preséu d\'entrada</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <string name="bluetooth_pan_user_profile_summary_connected">Coneutáu a preséu p\'accesu a Internet</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <string name="bluetooth_pan_nap_profile_summary_connected">Compartiendo conexón a Internet col preséu</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <string name="bluetooth_dun_profile_summary_connected">Coneutáu al sirvidor DUN</string>
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <string name="bluetooth_pan_profile_summary_use_for">Usar p\'acceder a Internet</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <string name="bluetooth_map_profile_summary_use_for">Usar pa mapa</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <string name="bluetooth_sap_profile_summary_use_for">Usar p\'accesu a SIM</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <string name="bluetooth_a2dp_profile_summary_use_for">Usar p\'audiu de mediu</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <string name="bluetooth_headset_profile_summary_use_for">Usar p\'audiu del teléfonu</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <string name="bluetooth_opp_profile_summary_use_for">Usu de la tresferencia de ficheros</string>
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <string name="bluetooth_hid_profile_summary_use_for">Usar pa entrada</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <string name="bluetooth_dun_profile_summary_use_for">Usáu pal accesu telefónicu a redes</string>
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <string name="bluetooth_pairing_accept">Enllazar</string>
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <string name="bluetooth_pairing_accept_all_caps">ENLLAZAR</string>
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <string name="bluetooth_pairing_decline">Encaboxar</string>
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <string name="bluetooth_pairing_will_share_phonebook">La vinculación permite acceder a los contautos y al historial de llamaes cuando\'l preséu ta coneutáu.</string>
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <string name="bluetooth_pairing_error_message">Nun pudo enllazase con <xliff:g id="device_name">%1$s</xliff:g>.</string>
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <string name="bluetooth_pairing_pin_error_message">Nun pudo enllazase con <xliff:g id="device_name">%1$s</xliff:g> porque la clave d\'accesu o el PIN son incorreutos.</string>
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <string name="bluetooth_pairing_device_down_error_message">Nun pue afitase comunicación con <xliff:g id="device_name">%1$s</xliff:g>.</string>
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <string name="bluetooth_pairing_rejected_error_message">Enllaz refugáu por <xliff:g id="device_name">%1$s</xliff:g></string>
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_off">Wi-Fi desactiváu</string>
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_wifi">Wi-Fi desconeutáu</string>
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_one_bar">Una barra de Wi-Fi</string>
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_two_bars">Dos barres de Wi-Fi</string>
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_three_bars">Trés barres de Wi-Fi</string>
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_signal_full">Señal de Wi-Fi al máximu</string>
+ <!-- Label for kernel threads in battery usage -->
+ <string name="process_kernel_label">Android OS</string>
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps">Aplicaciones desaniciaes</string>
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps_users">Usuarios y aplicaciones desaniciaos</string>
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_usb">Anclaxe de USB</string>
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_wifi">Zona Wi-Fi portátil</string>
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_bluetooth">Anclaxe de Bluetooth</string>
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_usb_bluetooth">Anclaxe a rede</string>
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_all">Anclaxe a rede y zona Wi-Fi</string>
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <string name="managed_user_title">Perfil de trabayu</string>
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <string name="user_guest">Convidáu</string>
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <string name="unknown">Desconocíu</string>
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+ <string name="running_process_item_user_label">Usuariu: <xliff:g id="user_name">%1$s</xliff:g></string>
+</resources>
diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml
new file mode 100644
index 0000000..e9ab91e
--- /dev/null
+++ b/packages/SettingsLib/res/values-be/arrays.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <string-array name="wifi_status">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>Сканаваньне\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting. -->
+ <item>Connecting\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating. -->
+ <item>Праверка\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address. -->
+ <item>Obtaining IP address\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected. -->
+ <item>Connected</item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>Suspended</item>
+ <!-- Status message of Wi-Fi when it is disconnecting. -->
+ <item>Disconnecting\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Disconnected</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Unsuccessful</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Заблякавана</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Temporarily avoiding poor connection</item>
+ </string-array>
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-be/cm_strings.xml b/packages/SettingsLib/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..138b12d
--- /dev/null
+++ b/packages/SettingsLib/res/values-be/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Дадаткі</string>
+ <string name="picker_activities">Дзеянні</string>
+ <string name="select_custom_app_title">Выбар дадатку</string>
+ <string name="select_custom_activity_title">Выбар дзеяння</string>
+ <string name="lockscreen_targets_message">Значыкі экрану блакавання</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
new file mode 100644
index 0000000..c5fd186
--- /dev/null
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <string name="wifi_security_short_wep">WEP</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <string name="wifi_security_short_wpa">WPA</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <string name="wifi_security_short_wpa2">WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <string name="wifi_security_short_wpa_wpa2">WPA/WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_short_eap">802.1x</string>
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <string name="wifi_security_none">Нічога</string>
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <string name="wifi_security_wpa">WPA PSK</string>
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <string name="wifi_security_wpa2">WPA2 PSK</string>
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <string name="wifi_security_wpa_wpa2">WPA/WPA2 PSK</string>
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <string name="bluetooth_pairing_decline">Скасаваць</string>
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-bg/cm_strings.xml b/packages/SettingsLib/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..7160cc2
--- /dev/null
+++ b/packages/SettingsLib/res/values-bg/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Приложения</string>
+ <string name="picker_activities">Дейности</string>
+ <string name="select_custom_app_title">Изберете приложение</string>
+ <string name="select_custom_activity_title">Изберете потребителска дейност</string>
+ <string name="lockscreen_targets_message">Преки пътища на заключен екран</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-br-rFR/arrays.xml b/packages/SettingsLib/res/values-br-rFR/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-br-rFR/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-br-rFR/strings.xml b/packages/SettingsLib/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-br-rFR/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-bs-rBA/arrays.xml b/packages/SettingsLib/res/values-bs-rBA/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-bs-rBA/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-bs-rBA/strings.xml b/packages/SettingsLib/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-bs-rBA/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ca/cm_strings.xml b/packages/SettingsLib/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..50933db
--- /dev/null
+++ b/packages/SettingsLib/res/values-ca/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicacions</string>
+ <string name="picker_activities">Activitats</string>
+ <string name="select_custom_app_title">Selecciona una aplicació personalitzada</string>
+ <string name="select_custom_activity_title">Selecciona una activitat personalitzada</string>
+ <string name="lockscreen_targets_message">Dreceres de la pantalla de bloqueig</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-cs/cm_strings.xml b/packages/SettingsLib/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..faccd6f
--- /dev/null
+++ b/packages/SettingsLib/res/values-cs/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikace</string>
+ <string name="picker_activities">Aktivity</string>
+ <string name="select_custom_app_title">Zvolte vlastní aplikaci</string>
+ <string name="select_custom_activity_title">Zvolte vlastní aktivitu</string>
+ <string name="lockscreen_targets_message">Ikony zámku obrazovky</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-csb-rPL/arrays.xml b/packages/SettingsLib/res/values-csb-rPL/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-csb-rPL/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-csb-rPL/strings.xml b/packages/SettingsLib/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-csb-rPL/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-cy/arrays.xml b/packages/SettingsLib/res/values-cy/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-cy/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-cy/strings.xml b/packages/SettingsLib/res/values-cy/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-cy/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-da/cm_strings.xml b/packages/SettingsLib/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..0d86cdb
--- /dev/null
+++ b/packages/SettingsLib/res/values-da/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Aktiviteter</string>
+ <string name="select_custom_app_title">Vælg brugerdefineret app</string>
+ <string name="select_custom_activity_title">Vælg brugerdefineret aktivitet</string>
+ <string name="lockscreen_targets_message">Genveje på låseskærm</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-de/cm_strings.xml b/packages/SettingsLib/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..3227f21
--- /dev/null
+++ b/packages/SettingsLib/res/values-de/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Aktivitäten</string>
+ <string name="select_custom_app_title">Benutzerdefinierte Anwendung auswählen</string>
+ <string name="select_custom_activity_title">Benutzerdefinierte Aktivität auswählen</string>
+ <string name="lockscreen_targets_message">Sperrbildschirm-Verknüpfungen</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-el/cm_strings.xml b/packages/SettingsLib/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..f622a7f
--- /dev/null
+++ b/packages/SettingsLib/res/values-el/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Εφαρμογές</string>
+ <string name="picker_activities">Δραστηριότητες</string>
+ <string name="select_custom_app_title">Επιλέξτε προσαρμοσμένη εφαρμογή</string>
+ <string name="select_custom_activity_title">Επιλέξτε προσαρμοσμένη δραστηριότητα</string>
+ <string name="lockscreen_targets_message">Συντομεύσεις οθόνης κλειδώματος</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/cm_strings.xml b/packages/SettingsLib/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..b311b85
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Activities</string>
+ <string name="select_custom_app_title">Select custom app</string>
+ <string name="select_custom_activity_title">Select custom activity</string>
+ <string name="lockscreen_targets_message">Lock screen shortcuts</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rPT/arrays.xml b/packages/SettingsLib/res/values-en-rPT/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rPT/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rPT/strings.xml b/packages/SettingsLib/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rPT/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-eo/arrays.xml b/packages/SettingsLib/res/values-eo/arrays.xml
new file mode 100644
index 0000000..e58c1d5
--- /dev/null
+++ b/packages/SettingsLib/res/values-eo/arrays.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <string-array name="wifi_status">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>Scanning\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting. -->
+ <item>Connecting\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating. -->
+ <item>Authenticating\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address. -->
+ <item>Obtaining IP address\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected. -->
+ <item>Konektita</item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>Suspended</item>
+ <!-- Status message of Wi-Fi when it is disconnecting. -->
+ <item>Disconnecting\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Malkonektita</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Unsuccessful</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Blocked</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Temporarily avoiding poor connection</item>
+ </string-array>
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+ <string-array name="wifi_status_with_ssid">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>Scanning\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting to a network. -->
+ <item>Connecting to <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating with a network. -->
+ <item>Authenticating with <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address from a network. -->
+ <item>Obtaining IP address from <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected to a network. -->
+ <item>Connected to <xliff:g id="network_name">%1$s</xliff:g></item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>Suspended</item>
+ <!-- Status message of Wi-Fi when it is disconnecting from a network. -->
+ <item>Disconnecting from <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Malkonektita</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Unsuccessful</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Blocked</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Temporarily avoiding poor connection</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-eo/strings.xml b/packages/SettingsLib/res/values-eo/strings.xml
new file mode 100644
index 0000000..8af20e3
--- /dev/null
+++ b/packages/SettingsLib/res/values-eo/strings.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <string name="wifi_remembered">Konservita</string>
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <string name="bluetooth_disconnected">Malkonektita</string>
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <string name="bluetooth_connected">Konektita</string>
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <string name="bluetooth_pairing_decline">Nuligi</string>
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps">Forigitaj aplikaĵoj</string>
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps_users">Forigitaj aplikaĵoj kaj uzantoj</string>
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <string name="user_guest">Gasto</string>
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rCO/arrays.xml b/packages/SettingsLib/res/values-es-rCO/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rCO/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rCO/strings.xml b/packages/SettingsLib/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rCO/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rMX/arrays.xml b/packages/SettingsLib/res/values-es-rMX/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rMX/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rMX/cm_strings.xml b/packages/SettingsLib/res/values-es-rMX/cm_strings.xml
new file mode 100644
index 0000000..8f368b9
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rMX/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicaciones</string>
+ <string name="picker_activities">Actividades</string>
+ <string name="select_custom_app_title">Seleccionar aplicación personalizada</string>
+ <string name="select_custom_activity_title">Seleccionar actividad personalizada</string>
+ <string name="lockscreen_targets_message">Atajos de la pantalla de bloqueo</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rMX/strings.xml b/packages/SettingsLib/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rMX/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/cm_strings.xml b/packages/SettingsLib/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..ed7c702
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicaciones</string>
+ <string name="picker_activities">Actividades</string>
+ <string name="select_custom_app_title">Seleccionar aplicación personalizada</string>
+ <string name="select_custom_activity_title">Seleccionar actividad personalizada</string>
+ <string name="lockscreen_targets_message">Atajos de la pantalla bloqueada</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-es/cm_strings.xml b/packages/SettingsLib/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..8f368b9
--- /dev/null
+++ b/packages/SettingsLib/res/values-es/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicaciones</string>
+ <string name="picker_activities">Actividades</string>
+ <string name="select_custom_app_title">Seleccionar aplicación personalizada</string>
+ <string name="select_custom_activity_title">Seleccionar actividad personalizada</string>
+ <string name="lockscreen_targets_message">Atajos de la pantalla de bloqueo</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-et-rEE/cm_strings.xml b/packages/SettingsLib/res/values-et-rEE/cm_strings.xml
new file mode 100644
index 0000000..1658fb1
--- /dev/null
+++ b/packages/SettingsLib/res/values-et-rEE/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Rakendused</string>
+ <string name="picker_activities">Tegevused</string>
+ <string name="select_custom_app_title">Vali kohandatud rakendus</string>
+ <string name="select_custom_activity_title">Vali kohandatud tegevus</string>
+ <string name="lockscreen_targets_message">Lukustuskuva otseteed</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-eu-rES/cm_strings.xml b/packages/SettingsLib/res/values-eu-rES/cm_strings.xml
new file mode 100644
index 0000000..6f1cec3
--- /dev/null
+++ b/packages/SettingsLib/res/values-eu-rES/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikazioak</string>
+ <string name="picker_activities">Aktibitateak</string>
+ <string name="select_custom_app_title">Hautatu aplikazio pertsonalizatua</string>
+ <string name="select_custom_activity_title">Hautatu aktibitate pertsonalizatua</string>
+ <string name="lockscreen_targets_message">Blokeo-pantailako lasterbideak</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fi/cm_strings.xml b/packages/SettingsLib/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..fb10ac5
--- /dev/null
+++ b/packages/SettingsLib/res/values-fi/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Sovellukset</string>
+ <string name="picker_activities">Aktiviteetit</string>
+ <string name="select_custom_app_title">Valitse oma sovellus</string>
+ <string name="select_custom_activity_title">Valitse oma aktiviteetti</string>
+ <string name="lockscreen_targets_message">Lukitusnäytön pikakuvakkeet</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fr/cm_strings.xml b/packages/SettingsLib/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..7cd934f
--- /dev/null
+++ b/packages/SettingsLib/res/values-fr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Applications</string>
+ <string name="picker_activities">Activités</string>
+ <string name="select_custom_app_title">Sélectionner une application personnalisée</string>
+ <string name="select_custom_activity_title">Sélectionner une activité personnalisée</string>
+ <string name="lockscreen_targets_message">Raccourcis de l\'écran de verrouillage</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-frp-rIT/arrays.xml b/packages/SettingsLib/res/values-frp-rIT/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-frp-rIT/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-frp-rIT/strings.xml b/packages/SettingsLib/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-frp-rIT/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-fy-rNL/arrays.xml b/packages/SettingsLib/res/values-fy-rNL/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-fy-rNL/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-fy-rNL/strings.xml b/packages/SettingsLib/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-fy-rNL/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ga-rIE/arrays.xml b/packages/SettingsLib/res/values-ga-rIE/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-ga-rIE/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ga-rIE/strings.xml b/packages/SettingsLib/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-ga-rIE/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-gd-rGB/arrays.xml b/packages/SettingsLib/res/values-gd-rGB/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-gd-rGB/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-gd-rGB/strings.xml b/packages/SettingsLib/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-gd-rGB/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-gl-rES/cm_strings.xml b/packages/SettingsLib/res/values-gl-rES/cm_strings.xml
new file mode 100644
index 0000000..a98f4e9
--- /dev/null
+++ b/packages/SettingsLib/res/values-gl-rES/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicacións</string>
+ <string name="picker_activities">Actividades</string>
+ <string name="select_custom_app_title">Seleccionar aplicación personalizada</string>
+ <string name="select_custom_activity_title">Seleccionar actividade personalizada</string>
+ <string name="lockscreen_targets_message">Atallos da pantalla de bloqueo</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-gu-rIN/cm_strings.xml b/packages/SettingsLib/res/values-gu-rIN/cm_strings.xml
new file mode 100644
index 0000000..e8aa9cc
--- /dev/null
+++ b/packages/SettingsLib/res/values-gu-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">એપ્લિકેશન્સ</string>
+ <string name="picker_activities">પ્રવૃત્તિઓ</string>
+ <string name="select_custom_app_title">કસ્ટમ એપ્લિકેશન પસંદ કરો</string>
+ <string name="select_custom_activity_title">કસ્ટમ પ્રવૃત્તિ પસંદ કરો</string>
+ <string name="lockscreen_targets_message">લૉક સ્ક્રીન શોર્ટકટ્સ</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hr/cm_strings.xml b/packages/SettingsLib/res/values-hr/cm_strings.xml
new file mode 100644
index 0000000..dbf9958
--- /dev/null
+++ b/packages/SettingsLib/res/values-hr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikacije</string>
+ <string name="picker_activities">Aktivnosti</string>
+ <string name="select_custom_app_title">Odaberite aplikaciju</string>
+ <string name="select_custom_activity_title">Odaberite prilagođenu aktivnost</string>
+ <string name="lockscreen_targets_message">Prečaci zaključanog zaslona</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hu/cm_strings.xml b/packages/SettingsLib/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..b2e364f
--- /dev/null
+++ b/packages/SettingsLib/res/values-hu/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Alkalmazások</string>
+ <string name="picker_activities">Tevékenységek</string>
+ <string name="select_custom_app_title">Válassz egyedi alkalmazást</string>
+ <string name="select_custom_activity_title">Válassz egyedi tevékenységet</string>
+ <string name="lockscreen_targets_message">Zárképernyő hivatkozások</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-in/cm_strings.xml b/packages/SettingsLib/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..d9c8315
--- /dev/null
+++ b/packages/SettingsLib/res/values-in/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikasi</string>
+ <string name="picker_activities">Aktivitas</string>
+ <string name="select_custom_app_title">Pilih aplikasi khusus</string>
+ <string name="select_custom_activity_title">Pilih aktivitas khusus</string>
+ <string name="lockscreen_targets_message">Pintasan kunci layar</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-it/cm_strings.xml b/packages/SettingsLib/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..b84a4df
--- /dev/null
+++ b/packages/SettingsLib/res/values-it/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">App</string>
+ <string name="picker_activities">Attività</string>
+ <string name="select_custom_app_title">Seleziona app personalizzata</string>
+ <string name="select_custom_activity_title">Seleziona attività personalizzata</string>
+ <string name="lockscreen_targets_message">Scorciatoie schermata di blocco</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-iw/cm_strings.xml b/packages/SettingsLib/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..36ca0d2
--- /dev/null
+++ b/packages/SettingsLib/res/values-iw/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">יישומים</string>
+ <string name="picker_activities">פעילויות</string>
+ <string name="select_custom_app_title">בחר יישום מותאם אישית</string>
+ <string name="select_custom_activity_title">בחר פעילות מותאמת אישית</string>
+ <string name="lockscreen_targets_message">קיצורי דרך במסך הנעילה</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ja/cm_strings.xml b/packages/SettingsLib/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..7a75cb0
--- /dev/null
+++ b/packages/SettingsLib/res/values-ja/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">アプリ</string>
+ <string name="picker_activities">アクティビティ</string>
+ <string name="select_custom_app_title">カスタムのアプリを選択</string>
+ <string name="select_custom_activity_title">カスタムのアクティビティを選択</string>
+ <string name="lockscreen_targets_message">ロック画面のショートカット</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-kn-rIN/cm_strings.xml b/packages/SettingsLib/res/values-kn-rIN/cm_strings.xml
new file mode 100644
index 0000000..0d5fa43
--- /dev/null
+++ b/packages/SettingsLib/res/values-kn-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">ಅಪ್ಲಿಕೇಶನ್‌ಗಳು</string>
+ <string name="picker_activities">ಚಟುವಟಿಕೆಗಳು</string>
+ <string name="select_custom_app_title">ಕಸ್ಟಮ ಆಪ್ ಆಯ್ಕೆಗೊಳಿಸು</string>
+ <string name="select_custom_activity_title">ಕಸ್ಟಮ್ ಚಟುವಟಿಕೆ ಆಯ್ಕೆಗೊಳಿಸು</string>
+ <string name="lockscreen_targets_message">ಲಾಕ್‌ ಸ್ಕ್ರೀನ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ko/cm_strings.xml b/packages/SettingsLib/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..9669798
--- /dev/null
+++ b/packages/SettingsLib/res/values-ko/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">애플리케이션</string>
+ <string name="picker_activities">액티비티</string>
+ <string name="select_custom_app_title">사용자 정의 앱 선택</string>
+ <string name="select_custom_activity_title">사용자 정의 액티비티 선택</string>
+ <string name="lockscreen_targets_message">잠금 화면 바로 가기</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ku/arrays.xml b/packages/SettingsLib/res/values-ku/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-ku/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ku/strings.xml b/packages/SettingsLib/res/values-ku/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-ku/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-lb/arrays.xml b/packages/SettingsLib/res/values-lb/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-lb/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-lb/cm_strings.xml b/packages/SettingsLib/res/values-lb/cm_strings.xml
new file mode 100644
index 0000000..84a7011
--- /dev/null
+++ b/packages/SettingsLib/res/values-lb/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Appen</string>
+ <string name="picker_activities">Aktivitéiten</string>
+ <string name="select_custom_app_title">Eegen App auswielen</string>
+ <string name="select_custom_activity_title">Eegen Aktivitéit auswielen</string>
+ <string name="lockscreen_targets_message">Spärschierm-Ofkierzungen</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-lb/strings.xml b/packages/SettingsLib/res/values-lb/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-lb/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ml-rIN/cm_strings.xml b/packages/SettingsLib/res/values-ml-rIN/cm_strings.xml
new file mode 100644
index 0000000..b4ba826
--- /dev/null
+++ b/packages/SettingsLib/res/values-ml-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">അപ്ലിക്കേഷനുകൾ</string>
+ <string name="picker_activities">പ്രവർത്തനങ്ങൾ</string>
+ <string name="select_custom_app_title">കസ്റ്റം അപ്ലിക്കേഷൻ തിരഞ്ഞെടുക്കുക</string>
+ <string name="select_custom_activity_title">കസ്റ്റം പ്രവർത്തനം തിരഞ്ഞെടുക്കുക</string>
+ <string name="lockscreen_targets_message">ലോക്ക് സ്ക്രീൻ കുറുക്കുവഴികൾ</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-mr-rIN/cm_strings.xml b/packages/SettingsLib/res/values-mr-rIN/cm_strings.xml
new file mode 100644
index 0000000..32c3597
--- /dev/null
+++ b/packages/SettingsLib/res/values-mr-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">अॅप्स</string>
+ <string name="picker_activities">क्रियाकलाप</string>
+ <string name="select_custom_app_title">सानुकूल अॅप निवडा</string>
+ <string name="select_custom_activity_title">सानुकूल कार्यकलाप निवडा</string>
+ <string name="lockscreen_targets_message">लॉक स्क्रीन शॉर्टकट</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-nb/cm_strings.xml b/packages/SettingsLib/res/values-nb/cm_strings.xml
new file mode 100644
index 0000000..e55d4a1
--- /dev/null
+++ b/packages/SettingsLib/res/values-nb/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Aktiviteter</string>
+ <string name="select_custom_app_title">Velg egendefinert app</string>
+ <string name="select_custom_activity_title">Velg egendefinert aktivitet</string>
+ <string name="lockscreen_targets_message">Låseskjermsnarveier</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-nl/cm_strings.xml b/packages/SettingsLib/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..7dec7e0
--- /dev/null
+++ b/packages/SettingsLib/res/values-nl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Activiteiten</string>
+ <string name="select_custom_app_title">Aangepaste app kiezen</string>
+ <string name="select_custom_activity_title">Aangepaste activiteit kiezen</string>
+ <string name="lockscreen_targets_message">Snelkoppelingen vergrendelingsscherm</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-oc-rFR/arrays.xml b/packages/SettingsLib/res/values-oc-rFR/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-oc-rFR/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-oc-rFR/strings.xml b/packages/SettingsLib/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-oc-rFR/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-or-rIN/arrays.xml b/packages/SettingsLib/res/values-or-rIN/arrays.xml
new file mode 100644
index 0000000..c46bb71
--- /dev/null
+++ b/packages/SettingsLib/res/values-or-rIN/arrays.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-or-rIN/cm_strings.xml b/packages/SettingsLib/res/values-or-rIN/cm_strings.xml
new file mode 100644
index 0000000..34cee36
--- /dev/null
+++ b/packages/SettingsLib/res/values-or-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">ଆପ୍ଲିକେସନଗୁଡିକ</string>
+ <string name="picker_activities">କାର୍ଯ୍ୟକଳାପଗୁଡିକ</string>
+ <string name="select_custom_app_title">କଷ୍ଟମ୍‍ ଆପ୍ଲିକେସନ୍‍ ଚୟନ କରନ୍ତୁ</string>
+ <string name="select_custom_activity_title">କଷ୍ଟମ୍‍ ସଂଚାଳନ ଚୟନ କରନ୍ତୁ</string>
+ <string name="lockscreen_targets_message">ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ସର୍ଟ୍‍କଟ୍‍ଗୁଡିକ</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-or-rIN/strings.xml b/packages/SettingsLib/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..710bdcf
--- /dev/null
+++ b/packages/SettingsLib/res/values-or-rIN/strings.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-pl/cm_strings.xml b/packages/SettingsLib/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..ba5c4f9
--- /dev/null
+++ b/packages/SettingsLib/res/values-pl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikacje</string>
+ <string name="picker_activities">Aktywności</string>
+ <string name="select_custom_app_title">Wskaż aplikację</string>
+ <string name="select_custom_activity_title">Wskaż aktywność</string>
+ <string name="lockscreen_targets_message">Skróty ekranu blokady</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/cm_strings.xml b/packages/SettingsLib/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..02b6e96
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicativos</string>
+ <string name="picker_activities">Atividades</string>
+ <string name="select_custom_app_title">Selecione aplicativo personalizado</string>
+ <string name="select_custom_activity_title">Selecione a atividade personalizada</string>
+ <string name="lockscreen_targets_message">Atalhos da tela de bloqueio</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/cm_strings.xml b/packages/SettingsLib/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..84f31d2
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicações</string>
+ <string name="picker_activities">Atividades</string>
+ <string name="select_custom_app_title">Selecione uma aplicação personalizada</string>
+ <string name="select_custom_activity_title">Selecione uma atividade personalizada</string>
+ <string name="lockscreen_targets_message">Atalhos do ecrã de bloqueio</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ro/cm_strings.xml b/packages/SettingsLib/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..0c87c44
--- /dev/null
+++ b/packages/SettingsLib/res/values-ro/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplicații</string>
+ <string name="picker_activities">Activități</string>
+ <string name="select_custom_app_title">Selectați aplicație personalizată</string>
+ <string name="select_custom_activity_title">Selectați activitate personalizată</string>
+ <string name="lockscreen_targets_message">Comenzi rapide ale ecranului de blocare</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ru/cm_strings.xml b/packages/SettingsLib/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..b3a4c86
--- /dev/null
+++ b/packages/SettingsLib/res/values-ru/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Приложения</string>
+ <string name="picker_activities">Действия</string>
+ <string name="select_custom_app_title">Выбор приложения</string>
+ <string name="select_custom_activity_title">Выбор действия</string>
+ <string name="lockscreen_targets_message">Ярлыки экрана блокировки</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sl/cm_strings.xml b/packages/SettingsLib/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..8b2f8b0
--- /dev/null
+++ b/packages/SettingsLib/res/values-sl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Aplikacije</string>
+ <string name="picker_activities">Dejavnosti</string>
+ <string name="select_custom_app_title">Izberite aplikacijo po meri</string>
+ <string name="select_custom_activity_title">Izberite dejavnost po meri</string>
+ <string name="lockscreen_targets_message">Bližnjice zaklenjenega zaslona</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sr/cm_strings.xml b/packages/SettingsLib/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..8078426
--- /dev/null
+++ b/packages/SettingsLib/res/values-sr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Апликације</string>
+ <string name="picker_activities">Активности</string>
+ <string name="select_custom_app_title">Изабери прилагођену апликацију</string>
+ <string name="select_custom_activity_title">Изабери прилагођену активност</string>
+ <string name="lockscreen_targets_message">Пречица закључаног екрана</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sv/cm_strings.xml b/packages/SettingsLib/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..15ad908
--- /dev/null
+++ b/packages/SettingsLib/res/values-sv/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Appar</string>
+ <string name="picker_activities">Aktiviteter</string>
+ <string name="select_custom_app_title">Välj anpassad app</string>
+ <string name="select_custom_activity_title">Välj anpassad aktivitet</string>
+ <string name="lockscreen_targets_message">Genvägar på låsskärm</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ta-rIN/cm_strings.xml b/packages/SettingsLib/res/values-ta-rIN/cm_strings.xml
new file mode 100644
index 0000000..7011fca
--- /dev/null
+++ b/packages/SettingsLib/res/values-ta-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">பயன்பாடுகள்</string>
+ <string name="picker_activities">செயல்பாடுகள்</string>
+ <string name="select_custom_app_title">தனிப்பயனாக்கப்பட்ட ஆப்-ஐ தேர்ந்தெடு</string>
+ <string name="select_custom_activity_title">தனிப்பயனாக்கப்பட்ட செயல்பாட்டை தேர்ந்தெடு</string>
+ <string name="lockscreen_targets_message">திரை குறுக்குவழிகளை லாக் செய்க</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-te-rIN/cm_strings.xml b/packages/SettingsLib/res/values-te-rIN/cm_strings.xml
new file mode 100644
index 0000000..99cac22
--- /dev/null
+++ b/packages/SettingsLib/res/values-te-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">అనువర్తనాలు</string>
+ <string name="picker_activities">కార్యాచరణలు</string>
+ <string name="select_custom_app_title">అనుకూలిత అనువర్తనాన్ని ఎంపిక చేయుము</string>
+ <string name="select_custom_activity_title">అనుకూలిత కార్యాచరణను ఎంపిక చేయుము</string>
+ <string name="lockscreen_targets_message">లాక్ స్క్రీన్ సత్వరమార్గాలు</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-th/cm_strings.xml b/packages/SettingsLib/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..6fa5d9f
--- /dev/null
+++ b/packages/SettingsLib/res/values-th/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">แอป</string>
+ <string name="picker_activities">กิจกรรม</string>
+ <string name="select_custom_app_title">เลือกแอปเอง</string>
+ <string name="select_custom_activity_title">เลือกกิจกรรมเอง</string>
+ <string name="lockscreen_targets_message">ปุ่มลัดหน้าจอล็อค</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-tr/cm_strings.xml b/packages/SettingsLib/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..aa76305
--- /dev/null
+++ b/packages/SettingsLib/res/values-tr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Uygulamalar</string>
+ <string name="picker_activities">Etkinlikler</string>
+ <string name="select_custom_app_title">Özel uygulama seç</string>
+ <string name="select_custom_activity_title">Özel etkinlik seç</string>
+ <string name="lockscreen_targets_message">Kilit ekranı kısayolları</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ug/arrays.xml b/packages/SettingsLib/res/values-ug/arrays.xml
new file mode 100644
index 0000000..584305e
--- /dev/null
+++ b/packages/SettingsLib/res/values-ug/arrays.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Wi-Fi settings -->
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+ <string-array name="wifi_status">
+ <!-- Status message of Wi-Fi when it is idle. -->
+ <item/>
+ <!-- Status message of Wi-Fi when it is scanning. -->
+ <item>تەكشۈرۈۋاتىدۇ\u2026</item>
+ <!-- Status message of Wi-Fi when it is connecting. -->
+ <item>باغلىنىۋاتىدۇ\u2026</item>
+ <!-- Status message of Wi-Fi when it is authenticating. -->
+ <item>دەلىللەۋاتىدۇ\u2026</item>
+ <!-- Status message of Wi-Fi when it is obtaining IP address. -->
+ <item>IP ئادرېسقا ئېرىشىۋاتىدۇ\u2026</item>
+ <!-- Status message of Wi-Fi when it is connected. -->
+ <item>باغلاندى</item>
+ <!-- Status message of Wi-Fi when it is suspended. -->
+ <item>ۋاقىتلىق توختىتىلدى</item>
+ <!-- Status message of Wi-Fi when it is disconnecting. -->
+ <item>ئۈزۈۋاتىدۇ\u2026</item>
+ <!-- Status message of Wi-Fi when it is disconnected. -->
+ <item>Disconnected</item>
+ <!-- Status message of Wi-Fi when it is a failure. -->
+ <item>Unsuccessful</item>
+ <!-- Status message of Wi-Fi when it is blocked. -->
+ <item>Blocked</item>
+ <!-- Status message of Wi-Fi when connectiong is being verified. -->
+ <item>Temporarily avoiding poor connection</item>
+ </string-array>
+ <!-- Match this with the order of NetworkInfo.DetailedState. -->
+ <!-- Wi-Fi settings. The status messages when the network is known. -->
+</resources>
diff --git a/packages/SettingsLib/res/values-ug/cm_strings.xml b/packages/SettingsLib/res/values-ug/cm_strings.xml
new file mode 100644
index 0000000..ed72f15
--- /dev/null
+++ b/packages/SettingsLib/res/values-ug/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">ئەپلەر</string>
+ <string name="picker_activities">پائالىيەتلەر</string>
+ <string name="select_custom_app_title">ئىختىيارىي ئەپنى تاللاڭ</string>
+ <string name="select_custom_activity_title">ئىختىيارىي پائالىيەتنى تاللاڭ</string>
+ <string name="lockscreen_targets_message">ئېكران قۇلۇپ قىسقا يولى</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ug/strings.xml b/packages/SettingsLib/res/values-ug/strings.xml
new file mode 100644
index 0000000..b5f0c58
--- /dev/null
+++ b/packages/SettingsLib/res/values-ug/strings.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Toast message when Wi-Fi cannot scan for networks -->
+ <string name="wifi_fail_to_scan">تورنى تەكشۈرەلمەيدۇ</string>
+ <!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <string name="wifi_security_short_wep">WEP</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <string name="wifi_security_short_wpa">WPA</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <string name="wifi_security_short_wpa2">WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <string name="wifi_security_short_wpa_wpa2">WPA/WPA2</string>
+ <!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <string name="wifi_security_short_psk_generic">@string/wifi_security_short_wpa_wpa2</string>
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_short_eap">802.1x</string>
+ <!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
+ <string name="wifi_security_none">يوق</string>
+ <!-- Do not translate. Terminology for wifi with WEP security -->
+ <!-- Do not translate. Terminology for wifi with WPA security -->
+ <!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <!-- Do not translate. Concise terminology for Passpoint network -->
+ <!-- Summary for the remembered network. -->
+ <!-- Status for networks disabled for unknown reason -->
+ <!-- Status for networked disabled from a DNS or DHCP failure -->
+ <!-- Status for networked disabled from a wifi association failure -->
+ <!-- Status for networks disabled from authentication failure (wrong password
+ or certificate). -->
+ <!-- Summary for the remembered network but currently not in range. -->
+ <!-- Summary for the remembered network but no internet connection was detected. -->
+ <!-- Summary for saved networks -->
+ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
+ <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
+ <!-- Package name for Settings app-->
+ <!-- Package name for Certinstaller app-->
+ <!-- Summary for Connected wifi network without internet -->
+ <!-- Bluetooth settings. Message when a device is disconnected -->
+ <!-- Bluetooth settings. Message when disconnecting from a device -->
+ <!-- Bluetooth settings. Message when connecting to a device -->
+ <!-- Bluetooth settings. Message when connected to a device. [CHAR LIMIT=40] -->
+ <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for map. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. Message when connected to a device, except for phone/media audio. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the A2DP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the HID profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (accessing Internet through remote device). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PBAP profile. [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible summary string that is used whenever referring to the PBAP profile (sharing contacts). [CHAR LIMIT=60] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (user role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the PAN checkbox preference that describes how checking it
+ will set the PAN profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary
+ for the HID checkbox preference that describes how checking it
+ will set the HID profile as preferred. -->
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Button text for accepting an incoming pairing request in all caps. [CHAR LIMIT=20] -->
+ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] -->
+ <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] -->
+ <!-- Message for the error dialog when BT pairing fails generically. -->
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device is down. -->
+ <!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
+ <!-- Content description of the WIFI signal when WIFI is disabled for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Label for kernel threads in battery usage -->
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+</resources>
diff --git a/packages/SettingsLib/res/values-uk/cm_strings.xml b/packages/SettingsLib/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..00f95a7
--- /dev/null
+++ b/packages/SettingsLib/res/values-uk/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Додатки</string>
+ <string name="picker_activities">Дії</string>
+ <string name="select_custom_app_title">Вибрати власну програму</string>
+ <string name="select_custom_activity_title">Вибрати власну дію</string>
+ <string name="lockscreen_targets_message">Ярлики екрану блокування</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-vi/cm_strings.xml b/packages/SettingsLib/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..a152e18
--- /dev/null
+++ b/packages/SettingsLib/res/values-vi/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Ứ.dụng</string>
+ <string name="picker_activities">Hoạt động</string>
+ <string name="select_custom_app_title">Chọn ứng dụng tuỳ chỉnh</string>
+ <string name="select_custom_activity_title">Chọn hoạt động tuỳ chỉnh</string>
+ <string name="lockscreen_targets_message">Lối tắt màn hình khóa</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/cm_strings.xml b/packages/SettingsLib/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..7fbfad4
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">应用</string>
+ <string name="picker_activities">活动</string>
+ <string name="select_custom_app_title">选择自定义应用</string>
+ <string name="select_custom_activity_title">选择自定义活动</string>
+ <string name="lockscreen_targets_message">锁屏快捷方式</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/cm_strings.xml b/packages/SettingsLib/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..478d992
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">應用程式</string>
+ <string name="picker_activities">活動</string>
+ <string name="select_custom_app_title">選取自訂應用程式</string>
+ <string name="select_custom_activity_title">選取自訂活動</string>
+ <string name="lockscreen_targets_message">鎖定畫面捷徑</string>
+</resources>
diff --git a/packages/SettingsLib/res/values/cm_dimens.xml b/packages/SettingsLib/res/values/cm_dimens.xml
new file mode 100644
index 0000000..0ab24d0
--- /dev/null
+++ b/packages/SettingsLib/res/values/cm_dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2015 The CyanogenMod 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="shortcut_picker_left_padding">40dip</dimen>
+</resources>
diff --git a/packages/SettingsLib/res/values/cm_strings.xml b/packages/SettingsLib/res/values/cm_strings.xml
new file mode 100644
index 0000000..a8348b4
--- /dev/null
+++ b/packages/SettingsLib/res/values/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="profile_applist_title">Apps</string>
+ <string name="picker_activities">Activities</string>
+ <string name="select_custom_app_title">Select custom app</string>
+ <string name="select_custom_activity_title">Select custom activity</string>
+ <string name="lockscreen_targets_message">Lock screen shortcuts</string>
+</resources>
diff --git a/packages/SettingsLib/res/values/dimens.xml b/packages/SettingsLib/res/values/dimens.xml
index 1c4b05f..3ad8f21 100644
--- a/packages/SettingsLib/res/values/dimens.xml
+++ b/packages/SettingsLib/res/values/dimens.xml
@@ -21,4 +21,6 @@
<!-- The translation for disappearing security views after having solved them. -->
<dimen name="disappear_y_translation">-32dp</dimen>
-</resources> \ No newline at end of file
+
+ <dimen name="circle_avatar_size">40dp</dimen>
+</resources>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index b03f100..bc1f16d 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -123,6 +123,8 @@
<string name="bluetooth_profile_map">Message Access</string>
<!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
<string name="bluetooth_profile_sap">SIM Access</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the dun profile. -->
+ <string name="bluetooth_profile_dun">Dial-up Network Access</string>
<!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
<string name="bluetooth_a2dp_profile_summary_connected">Connected to media audio</string>
@@ -142,6 +144,8 @@
<string name="bluetooth_pan_user_profile_summary_connected">Connected to device for Internet access</string>
<!-- Bluetooth settings. Connection options screen. The summary for the checkbox preference when PAN is connected (NAP role). [CHAR LIMIT=25]-->
<string name="bluetooth_pan_nap_profile_summary_connected">Sharing local Internet connection with device</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the DUN checkbox preference when DUN is connected. -->
+ <string name="bluetooth_dun_profile_summary_connected">Connected to Dun Server</string>
<!-- Bluetooth settings. Connection options screen. The summary
for the PAN checkbox preference that describes how checking it
@@ -161,6 +165,8 @@
for the HID checkbox preference that describes how checking it
will set the HID profile as preferred. -->
<string name="bluetooth_hid_profile_summary_use_for">Use for input</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the dun checkbox preference that describes how checking it will set the dun profile as preferred. -->
+ <string name="bluetooth_dun_profile_summary_use_for">Use for Dial-up Network access</string>
<!-- Button text for accepting an incoming pairing request. [CHAR LIMIT=20] -->
<string name="bluetooth_pairing_accept">Pair</string>
@@ -195,4 +201,34 @@
<!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_wifi_signal_full">Wifi signal full.</string>
+ <!-- Label for kernel threads in battery usage -->
+ <string name="process_kernel_label">Android OS</string>
+ <!-- Title of data usage item that represents all uninstalled applications. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps">Removed apps</string>
+ <!-- Title of data usage item that represents all uninstalled applications or removed users. [CHAR LIMIT=48] -->
+ <string name="data_usage_uninstalled_apps_users">Removed apps and users</string>
+
+ <!-- Tethering controls, item title to go into the tethering settings -->
+ <!-- Tethering controls, item title to go into the tethering settings when only USB tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_usb">USB tethering</string>
+ <!-- Tethering controls, item title to go into the tethering settings when only Wifi tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_wifi">Portable hotspot</string>
+ <!-- Tethering controls, item title to go into the tethering settings when only Bluetooth tethering is available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_bluetooth">Bluetooth tethering</string>
+ <!-- Tethering controls, item title to go into the tethering settings when USB and Bluetooth tethering are available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_usb_bluetooth">Tethering</string>
+ <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=25]-->
+ <string name="tether_settings_title_all">Tethering &amp; portable hotspot</string>
+
+ <!-- Title for a work profile. [CHAR LIMIT=25] -->
+ <string name="managed_user_title">Work profile</string>
+
+ <!-- Title for Guest user [CHAR LIMIT=35] -->
+ <string name="user_guest">Guest</string>
+
+ <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
+ <string name="unknown">Unknown</string>
+
+ <!-- [CHAR LIMIT=NONE] Label of a running process that represents another user -->
+ <string name="running_process_item_user_label">User: <xliff:g id="user_name">%1$s</xliff:g></string>
</resources>
diff --git a/packages/SettingsLib/res/xml/timezones.xml b/packages/SettingsLib/res/xml/timezones.xml
index 4426495..147f263 100644
--- a/packages/SettingsLib/res/xml/timezones.xml
+++ b/packages/SettingsLib/res/xml/timezones.xml
@@ -47,6 +47,7 @@
<timezone id="Africa/Harare"></timezone>
<timezone id="Asia/Baghdad"></timezone>
<timezone id="Europe/Moscow"></timezone>
+ <timezone id="Europe/Kiev" localizeInPicker="false"></timezone>
<timezone id="Asia/Kuwait"></timezone>
<timezone id="Africa/Nairobi"></timezone>
<timezone id="Asia/Tehran"></timezone>
diff --git a/packages/SettingsLib/src/com/android/settingslib/AppItem.java b/packages/SettingsLib/src/com/android/settingslib/AppItem.java
new file mode 100644
index 0000000..1729e09
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/AppItem.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2011 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.settingslib;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.SparseBooleanArray;
+
+public class AppItem implements Comparable<AppItem>, Parcelable {
+ public static final int CATEGORY_USER = 0;
+ public static final int CATEGORY_APP_TITLE = 1;
+ public static final int CATEGORY_APP = 2;
+
+ public final int key;
+ public boolean restricted;
+ public int category;
+
+ public SparseBooleanArray uids = new SparseBooleanArray();
+ public long total;
+
+ public AppItem() {
+ this.key = 0;
+ }
+
+ public AppItem(int key) {
+ this.key = key;
+ }
+
+ public AppItem(Parcel parcel) {
+ key = parcel.readInt();
+ uids = parcel.readSparseBooleanArray();
+ total = parcel.readLong();
+ }
+
+ public void addUid(int uid) {
+ uids.put(uid, true);
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(key);
+ dest.writeSparseBooleanArray(uids);
+ dest.writeLong(total);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public int compareTo(AppItem another) {
+ int comparison = Integer.compare(category, another.category);
+ if (comparison == 0) {
+ comparison = Long.compare(another.total, total);
+ }
+ return comparison;
+ }
+
+ public static final Creator<AppItem> CREATOR = new Creator<AppItem>() {
+ @Override
+ public AppItem createFromParcel(Parcel in) {
+ return new AppItem(in);
+ }
+
+ @Override
+ public AppItem[] newArray(int size) {
+ return new AppItem[size];
+ }
+ };
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java
new file mode 100644
index 0000000..cf08f50
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2011 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.settingslib;
+
+import static android.net.NetworkPolicy.CYCLE_NONE;
+import static android.net.NetworkPolicy.LIMIT_DISABLED;
+import static android.net.NetworkPolicy.SNOOZE_NEVER;
+import static android.net.NetworkPolicy.WARNING_DISABLED;
+import static android.net.NetworkTemplate.MATCH_WIFI;
+import static com.android.internal.util.Preconditions.checkNotNull;
+
+import android.net.NetworkPolicy;
+import android.net.NetworkPolicyManager;
+import android.net.NetworkTemplate;
+import android.net.wifi.WifiInfo;
+import android.os.AsyncTask;
+import android.text.TextUtils;
+import android.text.format.Time;
+
+import com.google.android.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * Utility class to modify list of {@link NetworkPolicy}. Specifically knows
+ * about which policies can coexist. This editor offers thread safety when
+ * talking with {@link NetworkPolicyManager}.
+ *
+ * @hide
+ */
+public class NetworkPolicyEditor {
+ // TODO: be more robust when missing policies from service
+
+ public static final boolean ENABLE_SPLIT_POLICIES = false;
+
+ private NetworkPolicyManager mPolicyManager;
+ private ArrayList<NetworkPolicy> mPolicies = Lists.newArrayList();
+
+ public NetworkPolicyEditor(NetworkPolicyManager policyManager) {
+ mPolicyManager = checkNotNull(policyManager);
+ }
+
+ public void read() {
+ final NetworkPolicy[] policies = mPolicyManager.getNetworkPolicies();
+
+ boolean modified = false;
+ mPolicies.clear();
+ for (NetworkPolicy policy : policies) {
+ // TODO: find better place to clamp these
+ if (policy.limitBytes < -1) {
+ policy.limitBytes = LIMIT_DISABLED;
+ modified = true;
+ }
+ if (policy.warningBytes < -1) {
+ policy.warningBytes = WARNING_DISABLED;
+ modified = true;
+ }
+
+ mPolicies.add(policy);
+ }
+
+ // when we cleaned policies above, write back changes
+ if (modified) writeAsync();
+ }
+
+ public void writeAsync() {
+ // TODO: consider making more robust by passing through service
+ final NetworkPolicy[] policies = mPolicies.toArray(new NetworkPolicy[mPolicies.size()]);
+ new AsyncTask<Void, Void, Void>() {
+ @Override
+ protected Void doInBackground(Void... params) {
+ write(policies);
+ return null;
+ }
+ }.execute();
+ }
+
+ public void write(NetworkPolicy[] policies) {
+ mPolicyManager.setNetworkPolicies(policies);
+ }
+
+ public boolean hasLimitedPolicy(NetworkTemplate template) {
+ final NetworkPolicy policy = getPolicy(template);
+ return policy != null && policy.limitBytes != LIMIT_DISABLED;
+ }
+
+ public NetworkPolicy getOrCreatePolicy(NetworkTemplate template) {
+ NetworkPolicy policy = getPolicy(template);
+ if (policy == null) {
+ policy = buildDefaultPolicy(template);
+ mPolicies.add(policy);
+ }
+ return policy;
+ }
+
+ public NetworkPolicy getPolicy(NetworkTemplate template) {
+ for (NetworkPolicy policy : mPolicies) {
+ if (policy.template.equals(template)) {
+ return policy;
+ }
+ }
+ return null;
+ }
+
+ public NetworkPolicy getPolicyMaybeUnquoted(NetworkTemplate template) {
+ NetworkPolicy policy = getPolicy(template);
+ if (policy != null) {
+ return policy;
+ } else {
+ return getPolicy(buildUnquotedNetworkTemplate(template));
+ }
+ }
+
+ @Deprecated
+ private static NetworkPolicy buildDefaultPolicy(NetworkTemplate template) {
+ // TODO: move this into framework to share with NetworkPolicyManagerService
+ final int cycleDay;
+ final String cycleTimezone;
+ final boolean metered;
+
+ if (template.getMatchRule() == MATCH_WIFI) {
+ cycleDay = CYCLE_NONE;
+ cycleTimezone = Time.TIMEZONE_UTC;
+ metered = false;
+ } else {
+ final Time time = new Time();
+ time.setToNow();
+ cycleDay = time.monthDay;
+ cycleTimezone = time.timezone;
+ metered = true;
+ }
+
+ return new NetworkPolicy(template, cycleDay, cycleTimezone, WARNING_DISABLED,
+ LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, metered, true);
+ }
+
+ public int getPolicyCycleDay(NetworkTemplate template) {
+ final NetworkPolicy policy = getPolicy(template);
+ return (policy != null) ? policy.cycleDay : -1;
+ }
+
+ public void setPolicyCycleDay(NetworkTemplate template, int cycleDay, String cycleTimezone) {
+ final NetworkPolicy policy = getOrCreatePolicy(template);
+ policy.cycleDay = cycleDay;
+ policy.cycleTimezone = cycleTimezone;
+ policy.inferred = false;
+ policy.clearSnooze();
+ writeAsync();
+ }
+
+ public long getPolicyWarningBytes(NetworkTemplate template) {
+ final NetworkPolicy policy = getPolicy(template);
+ return (policy != null) ? policy.warningBytes : WARNING_DISABLED;
+ }
+
+ public void setPolicyWarningBytes(NetworkTemplate template, long warningBytes) {
+ final NetworkPolicy policy = getOrCreatePolicy(template);
+ policy.warningBytes = warningBytes;
+ policy.inferred = false;
+ policy.clearSnooze();
+ writeAsync();
+ }
+
+ public long getPolicyLimitBytes(NetworkTemplate template) {
+ final NetworkPolicy policy = getPolicy(template);
+ return (policy != null) ? policy.limitBytes : LIMIT_DISABLED;
+ }
+
+ public void setPolicyLimitBytes(NetworkTemplate template, long limitBytes) {
+ final NetworkPolicy policy = getOrCreatePolicy(template);
+ policy.limitBytes = limitBytes;
+ policy.inferred = false;
+ policy.clearSnooze();
+ writeAsync();
+ }
+
+ public boolean getPolicyMetered(NetworkTemplate template) {
+ NetworkPolicy policy = getPolicy(template);
+ if (policy != null) {
+ return policy.metered;
+ } else {
+ return false;
+ }
+ }
+
+ public void setPolicyMetered(NetworkTemplate template, boolean metered) {
+ boolean modified = false;
+
+ NetworkPolicy policy = getPolicy(template);
+ if (metered) {
+ if (policy == null) {
+ policy = buildDefaultPolicy(template);
+ policy.metered = true;
+ policy.inferred = false;
+ mPolicies.add(policy);
+ modified = true;
+ } else if (!policy.metered) {
+ policy.metered = true;
+ policy.inferred = false;
+ modified = true;
+ }
+
+ } else {
+ if (policy == null) {
+ // ignore when policy doesn't exist
+ } else if (policy.metered) {
+ policy.metered = false;
+ policy.inferred = false;
+ modified = true;
+ }
+ }
+
+ // Remove legacy unquoted policies while we're here
+ final NetworkTemplate unquoted = buildUnquotedNetworkTemplate(template);
+ final NetworkPolicy unquotedPolicy = getPolicy(unquoted);
+ if (unquotedPolicy != null) {
+ mPolicies.remove(unquotedPolicy);
+ modified = true;
+ }
+
+ if (modified) writeAsync();
+ }
+
+ /**
+ * Build a revised {@link NetworkTemplate} that matches the same rule, but
+ * with an unquoted {@link NetworkTemplate#getNetworkId()}. Used to work
+ * around legacy bugs.
+ */
+ private static NetworkTemplate buildUnquotedNetworkTemplate(NetworkTemplate template) {
+ if (template == null) return null;
+ final String networkId = template.getNetworkId();
+ final String strippedNetworkId = WifiInfo.removeDoubleQuotes(networkId);
+ if (!TextUtils.equals(strippedNetworkId, networkId)) {
+ return new NetworkTemplate(
+ template.getMatchRule(), template.getSubscriberId(), strippedNetworkId);
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java
new file mode 100644
index 0000000..621a09c
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java
@@ -0,0 +1,84 @@
+package com.android.settingslib;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.os.UserManager;
+
+import com.android.internal.util.UserIcons;
+import com.android.settingslib.drawable.CircleFramedDrawable;
+
+public final class Utils {
+
+ /**
+ * Return string resource that best describes combination of tethering
+ * options available on this device.
+ */
+ public static int getTetheringLabel(ConnectivityManager cm) {
+ String[] usbRegexs = cm.getTetherableUsbRegexs();
+ String[] wifiRegexs = cm.getTetherableWifiRegexs();
+ String[] bluetoothRegexs = cm.getTetherableBluetoothRegexs();
+
+ boolean usbAvailable = usbRegexs.length != 0;
+ boolean wifiAvailable = wifiRegexs.length != 0;
+ boolean bluetoothAvailable = bluetoothRegexs.length != 0;
+
+ if (wifiAvailable && usbAvailable && bluetoothAvailable) {
+ return R.string.tether_settings_title_all;
+ } else if (wifiAvailable && usbAvailable) {
+ return R.string.tether_settings_title_all;
+ } else if (wifiAvailable && bluetoothAvailable) {
+ return R.string.tether_settings_title_all;
+ } else if (wifiAvailable) {
+ return R.string.tether_settings_title_wifi;
+ } else if (usbAvailable && bluetoothAvailable) {
+ return R.string.tether_settings_title_usb_bluetooth;
+ } else if (usbAvailable) {
+ return R.string.tether_settings_title_usb;
+ } else {
+ return R.string.tether_settings_title_bluetooth;
+ }
+ }
+
+ /**
+ * Returns a label for the user, in the form of "User: user name" or "Work profile".
+ */
+ public static String getUserLabel(Context context, UserInfo info) {
+ String name = info != null ? info.name : null;
+ if (info.isManagedProfile()) {
+ // We use predefined values for managed profiles
+ return context.getString(R.string.managed_user_title);
+ } else if (info.isGuest()) {
+ name = context.getString(R.string.user_guest);
+ }
+ if (name == null && info != null) {
+ name = Integer.toString(info.id);
+ } else if (info == null) {
+ name = context.getString(R.string.unknown);
+ }
+ return context.getResources().getString(R.string.running_process_item_user_label, name);
+ }
+
+ /**
+ * Returns a circular icon for a user.
+ */
+ public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) {
+ if (user.isManagedProfile()) {
+ // We use predefined values for managed profiles
+ Bitmap b = BitmapFactory.decodeResource(context.getResources(),
+ com.android.internal.R.drawable.ic_corp_icon);
+ return CircleFramedDrawable.getInstance(context, b);
+ }
+ if (user.iconPath != null) {
+ Bitmap icon = um.getUserIcon(user.id);
+ if (icon != null) {
+ return CircleFramedDrawable.getInstance(context, icon);
+ }
+ }
+ return CircleFramedDrawable.getInstance(context, UserIcons.convertToBitmap(
+ UserIcons.getDefaultUserIcon(user.id, /* light= */ false)));
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
index 9608daa..873d392 100755..100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
@@ -116,7 +116,11 @@ public final class A2dpProfile implements LocalBluetoothProfile {
List<BluetoothDevice> sinks = getConnectedDevices();
if (sinks != null) {
for (BluetoothDevice sink : sinks) {
- mService.disconnect(sink);
+ if (sink.equals(device)) {
+ // Connect to same device, Ignore it
+ Log.d(TAG,"Not disconnecting device = " + sink);
+ return true;
+ }
}
}
return mService.connect(device);
@@ -124,18 +128,36 @@ public final class A2dpProfile implements LocalBluetoothProfile {
public boolean disconnect(BluetoothDevice device) {
if (mService == null) return false;
- // Downgrade priority as user is disconnecting the headset.
- if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON){
- mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+ if (!deviceList.isEmpty()) {
+ for (BluetoothDevice dev : deviceList) {
+ if (dev.equals(device)) {
+ if (V) Log.d(TAG,"Downgrade priority as user" +
+ "is disconnecting the headset");
+ // Downgrade priority as user is disconnecting the headset.
+ if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ }
+ return mService.disconnect(device);
+ }
+ }
}
- return mService.disconnect(device);
+ return false;
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
}
- return mService.getConnectionState(device);
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+ if (!deviceList.isEmpty()) {
+ for (BluetoothDevice dev : deviceList) {
+ if (dev.equals(device)) {
+ return mService.getConnectionState(device);
+ }
+ }
+ }
+ return BluetoothProfile.STATE_DISCONNECTED;
}
public boolean isPreferred(BluetoothDevice device) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
new file mode 100755
index 0000000..fd76d81
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2011 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.settingslib.bluetooth;
+
+import android.bluetooth.BluetoothA2dpSink;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
+import android.content.Context;
+import android.os.ParcelUuid;
+import android.util.Log;
+
+import com.android.settingslib.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+final class A2dpSinkProfile implements LocalBluetoothProfile {
+ private static final String TAG = "A2dpSinkProfile";
+ private static boolean V = true;
+
+ private BluetoothA2dpSink mService;
+ private boolean mIsProfileReady;
+
+ private final LocalBluetoothAdapter mLocalAdapter;
+ private final CachedBluetoothDeviceManager mDeviceManager;
+
+ static final ParcelUuid[] SRC_UUIDS = {
+ BluetoothUuid.AudioSource,
+ BluetoothUuid.AdvAudioDist,
+ };
+
+ static final String NAME = "A2DPSink";
+ private final LocalBluetoothProfileManager mProfileManager;
+
+ // Order of this profile in device profiles list
+ private static final int ORDINAL = 5;
+
+ // These callbacks run on the main thread.
+ private final class A2dpSinkServiceListener
+ implements BluetoothProfile.ServiceListener {
+
+ public void onServiceConnected(int profile, BluetoothProfile proxy) {
+ if (V) Log.d(TAG,"Bluetooth service connected");
+ mService = (BluetoothA2dpSink) proxy;
+ // We just bound to the service, so refresh the UI for any connected A2DP devices.
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+ while (!deviceList.isEmpty()) {
+ BluetoothDevice nextDevice = deviceList.remove(0);
+ CachedBluetoothDevice device = mDeviceManager.findDevice(nextDevice);
+ // we may add a new device here, but generally this should not happen
+ if (device == null) {
+ Log.w(TAG, "A2dpSinkProfile found new device: " + nextDevice);
+ device = mDeviceManager.addDevice(mLocalAdapter, mProfileManager, nextDevice);
+ }
+ device.onProfileStateChanged(A2dpSinkProfile.this, BluetoothProfile.STATE_CONNECTED);
+ device.refresh();
+ }
+ mIsProfileReady=true;
+ }
+
+ public void onServiceDisconnected(int profile) {
+ if (V) Log.d(TAG,"Bluetooth service disconnected");
+ mIsProfileReady=false;
+ }
+ }
+
+ public boolean isProfileReady() {
+ return mIsProfileReady;
+ }
+
+ A2dpSinkProfile(Context context, LocalBluetoothAdapter adapter,
+ CachedBluetoothDeviceManager deviceManager,
+ LocalBluetoothProfileManager profileManager) {
+ mLocalAdapter = adapter;
+ mDeviceManager = deviceManager;
+ mProfileManager = profileManager;
+ mLocalAdapter.getProfileProxy(context, new A2dpSinkServiceListener(),
+ BluetoothProfile.A2DP_SINK);
+ }
+
+ public boolean isConnectable() {
+ return true;
+ }
+
+ public boolean isAutoConnectable() {
+ return true;
+ }
+
+ public List<BluetoothDevice> getConnectedDevices() {
+ if (mService == null) return new ArrayList<BluetoothDevice>(0);
+ return mService.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.STATE_CONNECTING,
+ BluetoothProfile.STATE_DISCONNECTING});
+ }
+
+ public boolean connect(BluetoothDevice device) {
+ if (mService == null) return false;
+ List<BluetoothDevice> srcs = getConnectedDevices();
+ if (srcs != null) {
+ for (BluetoothDevice src : srcs) {
+ if (src.equals(device)) {
+ // Connect to same device, Ignore it
+ Log.d(TAG,"Ignoring Connect");
+ return true;
+ }
+ }
+ for (BluetoothDevice src : srcs) {
+ mService.disconnect(src);
+ }
+ }
+ return mService.connect(device);
+ }
+
+ public boolean disconnect(BluetoothDevice device) {
+ if (mService == null) return false;
+ // Downgrade priority as user is disconnecting the headset.
+ if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON){
+ mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ }
+ return mService.disconnect(device);
+ }
+
+ public int getConnectionStatus(BluetoothDevice device) {
+ if (mService == null) {
+ return BluetoothProfile.STATE_DISCONNECTED;
+ }
+ return mService.getConnectionState(device);
+ }
+
+ public boolean isPreferred(BluetoothDevice device) {
+ if (mService == null) return false;
+ return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF;
+ }
+
+ public int getPreferred(BluetoothDevice device) {
+ if (mService == null) return BluetoothProfile.PRIORITY_OFF;
+ return mService.getPriority(device);
+ }
+
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ if (mService == null) return;
+ if (preferred) {
+ if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ }
+ } else {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_OFF);
+ }
+ }
+
+ boolean isA2dpPlaying() {
+ if (mService == null) return false;
+ List<BluetoothDevice> srcs = mService.getConnectedDevices();
+ if (!srcs.isEmpty()) {
+ if (mService.isA2dpPlaying(srcs.get(0))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public String toString() {
+ return NAME;
+ }
+
+ public int getOrdinal() {
+ return ORDINAL;
+ }
+
+ public int getNameResource(BluetoothDevice device) {
+ // we need to have same string in UI for even SINK Media Audio.
+ return R.string.bluetooth_profile_a2dp;
+ }
+
+ public int getSummaryResourceForDevice(BluetoothDevice device) {
+ int state = getConnectionStatus(device);
+ switch (state) {
+ case BluetoothProfile.STATE_DISCONNECTED:
+ return R.string.bluetooth_a2dp_profile_summary_use_for;
+
+ case BluetoothProfile.STATE_CONNECTED:
+ return R.string.bluetooth_a2dp_profile_summary_connected;
+
+ default:
+ return Utils.getConnectionStateSummary(state);
+ }
+ }
+
+ public int getDrawableResource(BluetoothClass btClass) {
+ return R.drawable.ic_bt_headphones_a2dp;
+ }
+
+ protected void finalize() {
+ if (V) Log.d(TAG, "finalize()");
+ if (mService != null) {
+ try {
+ BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.A2DP_SINK,
+ mService);
+ mService = null;
+ }catch (Throwable t) {
+ Log.w(TAG, "Error cleaning up A2DP proxy", t);
+ }
+ }
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothDeviceFilter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothDeviceFilter.java
index 8dec86a..0bd8dbd 100644..100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothDeviceFilter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothDeviceFilter.java
@@ -112,11 +112,15 @@ public final class BluetoothDeviceFilter {
if (BluetoothUuid.containsAnyUuid(uuids, A2dpProfile.SINK_UUIDS)) {
return true;
}
+ if (BluetoothUuid.containsAnyUuid(uuids, A2dpSinkProfile.SRC_UUIDS)) {
+ return true;
+ }
if (BluetoothUuid.containsAnyUuid(uuids, HeadsetProfile.UUIDS)) {
return true;
}
} else if (btClass != null) {
if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP) ||
+ btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP_SINK) ||
btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
return true;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
index 4bcbea7..8dc48b3 100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
@@ -196,6 +196,8 @@ public final class BluetoothEventManager {
cachedDevice = mDeviceManager.addDevice(mLocalAdapter, mProfileManager, device);
Log.d(TAG, "DeviceFoundHandler created new CachedBluetoothDevice: "
+ cachedDevice);
+ // callback to UI to create Preference for new device
+ dispatchDeviceAdded(cachedDevice);
}
cachedDevice.setRssi(rssi);
cachedDevice.setBtClass(btClass);
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index d994841..f7b1cee 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -135,6 +135,8 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
if (newProfileState == BluetoothProfile.STATE_CONNECTED) {
if (profile instanceof MapProfile) {
profile.setPreferred(mDevice, true);
+ mRemovedProfiles.remove(profile);
+ mProfiles.add(profile);
} else if (!mProfiles.contains(profile)) {
mRemovedProfiles.remove(profile);
mProfiles.add(profile);
@@ -147,6 +149,8 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
} else if (profile instanceof MapProfile &&
newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
profile.setPreferred(mDevice, false);
+ mProfiles.remove(profile);
+ mRemovedProfiles.add(profile);
} else if (mLocalNapRoleConnected && profile instanceof PanProfile &&
((PanProfile) profile).isLocalRoleNap(mDevice) &&
newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
@@ -521,7 +525,29 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
* Refreshes the UI when framework alerts us of a UUID change.
*/
void onUuidChanged() {
+ Log.d(TAG, " onUuidChanged, mProfile Size " + mProfiles.size());
+ List<LocalBluetoothProfile> mPrevProfiles =
+ new ArrayList<LocalBluetoothProfile>();
+ mPrevProfiles.clear();
+ mPrevProfiles.addAll(mProfiles);
updateProfiles();
+ /*
+ * Check if new profiles are added
+ */
+ if ((mPrevProfiles.containsAll(mProfiles)) && (!mPrevProfiles.isEmpty())) {
+ Log.d(TAG,"UUID not udpated, returning");
+ mProfiles.clear();
+ mProfiles.addAll(mPrevProfiles);
+ return;
+ }
+ for (int i = 0; i<mProfiles.size(); ++i) {
+ if (!mPrevProfiles.contains(mProfiles.get(i))) {
+ mPrevProfiles.add(mProfiles.get(i));
+ }
+ }
+ mProfiles.clear();
+ mProfiles.addAll(mPrevProfiles);
+
ParcelUuid[] uuids = mDevice.getUuids();
long timeout = MAX_UUID_DELAY_FOR_AUTO_CONNECT;
@@ -851,7 +877,8 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
case BluetoothProfile.STATE_DISCONNECTED:
if (profile.isProfileReady()) {
- if (profile instanceof A2dpProfile) {
+ if ((profile instanceof A2dpProfile)||
+ (profile instanceof A2dpSinkProfile)){
a2dpNotConnected = true;
} else if (profile instanceof HeadsetProfile) {
headsetNotConnected = true;
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/DunServerProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/DunServerProfile.java
new file mode 100644
index 0000000..3c72927
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/DunServerProfile.java
@@ -0,0 +1,162 @@
+/*
+*Copyright (c) 2013, 2015, The Linux Foundation. All rights reserved.
+*
+*Redistribution and use in source and binary forms, with or without
+*modification, are permitted provided that the following conditions are
+*met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+*THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+*WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+*MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+*ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+*BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+*CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+*SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+*WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+*OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+*IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.android.settingslib.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothDun;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.util.Log;
+import java.util.HashMap;
+import java.util.List;
+
+import com.android.settingslib.R;
+
+/**
+ * DunServerProfile handles Bluetooth DUN server profile.
+ */
+final class DunServerProfile implements LocalBluetoothProfile {
+ private static final String TAG = "DunServerProfile";
+ private static boolean V = true;
+
+ private BluetoothDun mService;
+ private boolean mIsProfileReady;
+
+ static final String NAME = "DUN Server";
+
+ // Order of this profile in device profiles list
+ private static final int ORDINAL = 11;
+
+ // These callbacks run on the main thread.
+ private final class DunServiceListener
+ implements BluetoothProfile.ServiceListener {
+
+ public void onServiceConnected(int profile, BluetoothProfile proxy) {
+ if (V) Log.d(TAG,"Bluetooth service connected");
+ mService = (BluetoothDun) proxy;
+ mIsProfileReady = true;
+ }
+
+ public void onServiceDisconnected(int profile) {
+ if (V) Log.d(TAG,"Bluetooth service disconnected");
+ mIsProfileReady = false;
+ }
+ }
+
+ public boolean isProfileReady() {
+ return mIsProfileReady;
+ }
+
+ DunServerProfile(Context context) {
+ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ adapter.getProfileProxy(context, new DunServiceListener(),
+ BluetoothProfile.DUN);
+ }
+
+ public boolean isConnectable() {
+ return true;
+ }
+
+ public boolean isAutoConnectable() {
+ return false;
+ }
+
+ public boolean connect(BluetoothDevice device) {
+ return false;
+ }
+
+ public boolean disconnect(BluetoothDevice device) {
+ if (mService == null) return false;
+ return mService.disconnect(device);
+ }
+
+ public int getConnectionStatus(BluetoothDevice device) {
+ if (mService == null) {
+ return BluetoothProfile.STATE_DISCONNECTED;
+ }
+ return mService.getConnectionState(device);
+ }
+
+ public boolean isPreferred(BluetoothDevice device) {
+ return true;
+ }
+
+ public int getPreferred(BluetoothDevice device) {
+ return -1;
+ }
+
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ // ignore: isPreferred is always true for DUN
+ }
+
+ public String toString() {
+ return NAME;
+ }
+
+ public int getOrdinal() {
+ return ORDINAL;
+ }
+
+ public int getNameResource(BluetoothDevice device) {
+ return R.string.bluetooth_profile_dun;
+ }
+
+ public int getSummaryResourceForDevice(BluetoothDevice device) {
+ int state = getConnectionStatus(device);
+ switch (state) {
+ case BluetoothProfile.STATE_DISCONNECTED:
+ return R.string.bluetooth_dun_profile_summary_use_for;
+
+ case BluetoothProfile.STATE_CONNECTED:
+ return R.string.bluetooth_dun_profile_summary_connected;
+ default:
+ return Utils.getConnectionStateSummary(state);
+ }
+ }
+
+ public int getDrawableResource(BluetoothClass btClass) {
+ return R.drawable.ic_bt_network_pan;
+ }
+
+ protected void finalize() {
+ if (V) Log.d(TAG, "finalize()");
+ if (mService != null) {
+ try {
+ BluetoothAdapter.getDefaultAdapter().closeProfileProxy
+ (BluetoothProfile.DUN, mService);
+ mService = null;
+ } catch (Throwable t) {
+ Log.w(TAG, "Error cleaning up DUN proxy", t);
+ }
+ }
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
index f935f31..9c5abf3 100644..100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
@@ -162,6 +162,10 @@ public final class LocalBluetoothAdapter {
if (a2dp != null && a2dp.isA2dpPlaying()) {
return;
}
+ A2dpSinkProfile a2dpSink = mProfileManager.getA2dpSinkProfile();
+ if ((a2dpSink != null) && (a2dpSink.isA2dpPlaying())){
+ return;
+ }
}
if (mAdapter.startDiscovery()) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
index 8f5e1f1..3876468 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
@@ -17,11 +17,14 @@
package com.android.settingslib.bluetooth;
import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothA2dpSink;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothMap;
import android.bluetooth.BluetoothInputDevice;
import android.bluetooth.BluetoothPan;
+import android.bluetooth.BluetoothDun;
+import android.bluetooth.BluetoothPbap;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothUuid;
import android.content.Context;
@@ -32,6 +35,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import android.os.SystemProperties;
/**
* LocalBluetoothProfileManager provides access to the LocalBluetoothProfile
@@ -73,11 +77,13 @@ public final class LocalBluetoothProfileManager {
private final BluetoothEventManager mEventManager;
private A2dpProfile mA2dpProfile;
+ private A2dpSinkProfile mA2dpSinkProfile;
private HeadsetProfile mHeadsetProfile;
private MapProfile mMapProfile;
private final HidProfile mHidProfile;
private OppProfile mOppProfile;
private final PanProfile mPanProfile;
+ private DunServerProfile mDunProfile;
private final PbapServerProfile mPbapProfile;
/**
@@ -121,9 +127,17 @@ public final class LocalBluetoothProfileManager {
addProfile(mMapProfile, MapProfile.NAME,
BluetoothMap.ACTION_CONNECTION_STATE_CHANGED);
- //Create PBAP server profile, but do not add it to list of profiles
- // as we do not need to monitor the profile as part of profile list
+ // enable DUN only if the property is set
+ if (SystemProperties.getBoolean("ro.bluetooth.dun", false) == true) {
+ mDunProfile = new DunServerProfile(context);
+ addProfile(mDunProfile, DunServerProfile.NAME,
+ BluetoothDun.ACTION_CONNECTION_STATE_CHANGED);
+ }
+
+ //Create PBAP server profile
mPbapProfile = new PbapServerProfile(context);
+ addProfile(mPbapProfile, PbapServerProfile.NAME,
+ BluetoothPbap.PBAP_STATE_CHANGED_ACTION);
if (DEBUG) Log.d(TAG, "LocalBluetoothProfileManager construction complete");
}
@@ -136,10 +150,10 @@ public final class LocalBluetoothProfileManager {
* @param uuids
*/
void updateLocalProfiles(ParcelUuid[] uuids) {
- // A2DP
+ // A2DP SRC
if (BluetoothUuid.isUuidPresent(uuids, BluetoothUuid.AudioSource)) {
if (mA2dpProfile == null) {
- if(DEBUG) Log.d(TAG, "Adding local A2DP profile");
+ if(DEBUG) Log.d(TAG, "Adding local A2DP SRC profile");
mA2dpProfile = new A2dpProfile(mContext, mLocalAdapter, mDeviceManager, this);
addProfile(mA2dpProfile, A2dpProfile.NAME,
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
@@ -148,6 +162,17 @@ public final class LocalBluetoothProfileManager {
Log.w(TAG, "Warning: A2DP profile was previously added but the UUID is now missing.");
}
+ if (BluetoothUuid.isUuidPresent(uuids, BluetoothUuid.AudioSink)) {
+ if (mA2dpSinkProfile == null) {
+ if(DEBUG) Log.d(TAG, "Adding local A2DP Sink profile");
+ mA2dpSinkProfile = new A2dpSinkProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ addProfile(mA2dpSinkProfile, A2dpSinkProfile.NAME,
+ BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED);
+ }
+ } else if (mA2dpSinkProfile != null) {
+ Log.w(TAG, "Warning: A2DP Sink profile was previously added but the UUID is now missing.");
+ }
+
// Headset / Handsfree
if (BluetoothUuid.isUuidPresent(uuids, BluetoothUuid.Handsfree_AG) ||
BluetoothUuid.isUuidPresent(uuids, BluetoothUuid.HSP_AG)) {
@@ -288,6 +313,10 @@ public final class LocalBluetoothProfileManager {
if (profile != null) {
return profile.isProfileReady();
}
+ profile = mA2dpSinkProfile;
+ if (profile != null) {
+ return profile.isProfileReady();
+ }
return false;
}
@@ -295,6 +324,13 @@ public final class LocalBluetoothProfileManager {
return mA2dpProfile;
}
+ A2dpSinkProfile getA2dpSinkProfile() {
+ if ((mA2dpSinkProfile != null)&&(mA2dpSinkProfile.isProfileReady()))
+ return mA2dpSinkProfile;
+ else
+ return null;
+ }
+
public HeadsetProfile getHeadsetProfile() {
return mHeadsetProfile;
}
@@ -345,6 +381,12 @@ public final class LocalBluetoothProfileManager {
removedProfiles.remove(mA2dpProfile);
}
+ if (BluetoothUuid.containsAnyUuid(uuids, A2dpSinkProfile.SRC_UUIDS) &&
+ mA2dpSinkProfile != null) {
+ profiles.add(mA2dpSinkProfile);
+ removedProfiles.remove(mA2dpSinkProfile);
+ }
+
if (BluetoothUuid.isUuidPresent(uuids, BluetoothUuid.ObexObjectPush) &&
mOppProfile != null) {
profiles.add(mOppProfile);
@@ -372,6 +414,13 @@ public final class LocalBluetoothProfileManager {
removedProfiles.remove(mMapProfile);
mMapProfile.setPreferred(device, true);
}
+
+ if ((mPbapProfile != null) &&
+ (mPbapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) {
+ profiles.add(mPbapProfile);
+ removedProfiles.remove(mPbapProfile);
+ mPbapProfile.setPreferred(device, true);
+ }
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
index 9e76933..fea7b34 100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
@@ -88,8 +88,13 @@ public final class PbapServerProfile implements LocalBluetoothProfile {
}
public boolean disconnect(BluetoothDevice device) {
- if (mService == null) return false;
- return mService.disconnect();
+ if (mService == null || device == null) return false;
+
+ if (getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)
+ return mService.disconnect();
+
+ Log.d(TAG, "pbap server not connected to " + device.getAddress());
+ return false;
}
public int getConnectionStatus(BluetoothDevice device) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java b/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java
new file mode 100644
index 0000000..8aa5671
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2011 The CyanogenMod 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.settingslib.cm;
+
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.AlertDialog.Builder;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.Intent.ShortcutIconResource;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseExpandableListAdapter;
+import android.widget.ExpandableListView;
+import android.widget.TextView;
+
+import com.android.settingslib.R;
+import com.android.settingslib.cm.ShortcutPickHelper.AppExpandableAdapter.GroupInfo;
+
+public class ShortcutPickHelper {
+
+ private Activity mParent;
+ private AlertDialog mAlertDialog;
+ private OnPickListener mListener;
+ private PackageManager mPackageManager;
+ private static final int REQUEST_PICK_SHORTCUT = 100;
+ private static final int REQUEST_PICK_APPLICATION = 101;
+ private static final int REQUEST_CREATE_SHORTCUT = 102;
+ private int lastFragmentId;
+
+ public interface OnPickListener {
+ void shortcutPicked(String uri, String friendlyName, boolean isApplication);
+ }
+
+ public ShortcutPickHelper(Activity parent, OnPickListener listener) {
+ mParent = parent;
+ mPackageManager = mParent.getPackageManager();
+ mListener = listener;
+ }
+
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (resultCode == Activity.RESULT_OK) {
+ switch (requestCode) {
+ case REQUEST_PICK_APPLICATION:
+ completeSetCustomApp(data);
+ break;
+ case REQUEST_CREATE_SHORTCUT:
+ completeSetCustomShortcut(data);
+ break;
+ case REQUEST_PICK_SHORTCUT:
+ processShortcut(data, REQUEST_PICK_APPLICATION, REQUEST_CREATE_SHORTCUT);
+ break;
+ }
+ } else {
+ mListener.shortcutPicked(null, null, false);
+ }
+ }
+
+ public void pickShortcut(String[] names, ShortcutIconResource[] icons, int fragmentId) {
+ pickShortcut(names, icons, fragmentId, true);
+ }
+
+ public void pickShortcut(String[] names, ShortcutIconResource[] icons, int fragmentId,
+ boolean showActivityPicker) {
+ Bundle bundle = new Bundle();
+
+ ArrayList<String> shortcutNames = new ArrayList<String>();
+ if (names != null) {
+ for (String s : names) {
+ shortcutNames.add(s);
+ }
+ }
+ shortcutNames.add(mParent.getString(R.string.profile_applist_title));
+ if (showActivityPicker) {
+ shortcutNames.add(mParent.getString(R.string.picker_activities));
+ }
+ bundle.putStringArrayList(Intent.EXTRA_SHORTCUT_NAME, shortcutNames);
+
+ ArrayList<ShortcutIconResource> shortcutIcons = new ArrayList<ShortcutIconResource>();
+ if (icons != null) {
+ for (ShortcutIconResource s : icons) {
+ shortcutIcons.add(s);
+ }
+ }
+ shortcutIcons.add(ShortcutIconResource.fromContext(mParent, android.R.drawable.sym_def_app_icon));
+ if (showActivityPicker) {
+ shortcutIcons.add(
+ ShortcutIconResource.fromContext(mParent, R.drawable.activities_icon));
+ }
+ bundle.putParcelableArrayList(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, shortcutIcons);
+
+ Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
+ pickIntent.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));
+ pickIntent.putExtra(Intent.EXTRA_TITLE, mParent.getText(R.string.select_custom_app_title));
+ pickIntent.putExtras(bundle);
+ lastFragmentId = fragmentId;
+ startFragmentOrActivity(pickIntent, REQUEST_PICK_SHORTCUT);
+ }
+
+ private void startFragmentOrActivity(Intent pickIntent, int requestCode) {
+ if (lastFragmentId == 0) {
+ mParent.startActivityForResult(pickIntent, requestCode);
+ } else {
+ Fragment cFrag = mParent.getFragmentManager().findFragmentById(lastFragmentId);
+ if (cFrag != null) {
+ mParent.startActivityFromFragment(cFrag, pickIntent, requestCode);
+ }
+ }
+ }
+
+ private void processShortcut(final Intent intent, int requestCodeApplication, int requestCodeShortcut) {
+ // Handle case where user selected "Applications"
+ String applicationName = mParent.getString(R.string.profile_applist_title);
+ String application2name = mParent.getString(R.string.picker_activities);
+ String shortcutName = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
+ if (applicationName != null && applicationName.equals(shortcutName)) {
+ Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
+ mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
+
+ Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
+ pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
+ startFragmentOrActivity(pickIntent, requestCodeApplication);
+ } else if (application2name != null && application2name.equals(shortcutName)){
+ final List<PackageInfo> pInfos = mPackageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES);
+ ExpandableListView appListView = new ExpandableListView(mParent);
+ AppExpandableAdapter appAdapter = new AppExpandableAdapter(pInfos, mParent);
+ appListView.setAdapter(appAdapter);
+ appListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
+ @Override
+ public boolean onChildClick(ExpandableListView parent, View v,
+ int groupPosition, int childPosition, long id) {
+ Intent shortIntent = new Intent(Intent.ACTION_MAIN);
+ String pkgName = ((GroupInfo)parent.getExpandableListAdapter().getGroup(groupPosition))
+ .info.packageName;
+ String actName = ((GroupInfo)parent.getExpandableListAdapter().getGroup(groupPosition))
+ .info.activities[childPosition].name;
+ shortIntent.setClassName(pkgName, actName);
+ completeSetCustomApp(shortIntent);
+ mAlertDialog.dismiss();
+ return true;
+ }
+ });
+ Builder builder = new Builder(mParent);
+ builder.setView(appListView);
+ mAlertDialog = builder.create();
+ mAlertDialog.setTitle(mParent.getString(R.string.select_custom_activity_title));
+ mAlertDialog.show();
+ mAlertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ mListener.shortcutPicked(null, null, false);
+ }
+ });
+ } else {
+ startFragmentOrActivity(intent, requestCodeShortcut);
+ }
+ }
+
+ public class AppExpandableAdapter extends BaseExpandableListAdapter {
+
+ ArrayList<GroupInfo> allList = new ArrayList<GroupInfo>();
+ final int groupPadding;
+
+ public class LabelCompare implements Comparator<GroupInfo>{
+ @Override
+ public int compare(GroupInfo item1, GroupInfo item2) {
+ String rank1 = item1.label.toLowerCase();
+ String rank2 = item2.label.toLowerCase();
+ int result = rank1.compareTo(rank2);
+ if(result == 0) {
+ return 0;
+ } else if(result < 0) {
+ return -1;
+ } else {
+ return +1;
+ }
+ }
+ }
+
+ class GroupInfo {
+ String label;
+ PackageInfo info;
+ GroupInfo (String l, PackageInfo p) {
+ label = l;
+ info = p;
+ }
+ }
+
+ public AppExpandableAdapter(List<PackageInfo> pInfos, Context context) {
+ for (PackageInfo i : pInfos) {
+ allList.add(new GroupInfo(i.applicationInfo.loadLabel(mPackageManager).toString(), i));
+ }
+ Collections.sort(allList, new LabelCompare());
+ groupPadding = context.getResources().getDimensionPixelSize(R.dimen.shortcut_picker_left_padding);
+ }
+
+ public String getChild(int groupPosition, int childPosition) {
+ return allList.get(groupPosition).info.activities[childPosition].name;
+ }
+
+ public long getChildId(int groupPosition, int childPosition) {
+ return childPosition;
+ }
+
+ public int getChildrenCount(int groupPosition) {
+ if (allList.get(groupPosition).info.activities != null) {
+ return allList.get(groupPosition).info.activities.length;
+ } else {
+ return 0;
+ }
+ }
+
+
+ public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
+ View convertView, ViewGroup parent) {
+ if (convertView == null) {
+ convertView = View.inflate(mParent, android.R.layout.simple_list_item_1, null);
+ convertView.setPadding(groupPadding, 0, 0, 0);
+
+ }
+ TextView textView = (TextView)convertView.findViewById(android.R.id.text1);
+ textView.setText(getChild(groupPosition, childPosition).replaceFirst(allList.get(groupPosition).info.packageName + ".", ""));
+ return convertView;
+ }
+
+ public GroupInfo getGroup(int groupPosition) {
+ return allList.get(groupPosition);
+ }
+
+ public int getGroupCount() {
+ return allList.size();
+ }
+
+ public long getGroupId(int groupPosition) {
+ return groupPosition;
+ }
+
+ public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
+ ViewGroup parent) {
+ if (convertView == null) {
+ convertView = View.inflate(mParent, android.R.layout.simple_list_item_1, null);
+ convertView.setPadding(groupPadding, 0, 0, 0);
+ }
+ TextView textView = (TextView)convertView.findViewById(android.R.id.text1);
+ textView.setText(getGroup(groupPosition).label);
+ return convertView;
+ }
+
+ public boolean isChildSelectable(int groupPosition, int childPosition) {
+ return true;
+ }
+
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ }
+
+ private void completeSetCustomApp(Intent data) {
+ mListener.shortcutPicked(data.toUri(0), getFriendlyActivityName(data, false, mPackageManager), true);
+ }
+
+ private void completeSetCustomShortcut(Intent data) {
+ Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
+ /* preserve shortcut name, we want to restore it later */
+ intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+ String appUri = intent.toUri(0);
+ appUri = appUri.replaceAll("com.android.contacts.action.QUICK_CONTACT", "android.intent.action.VIEW");
+ mListener.shortcutPicked(appUri, getFriendlyShortcutName(intent, mPackageManager), false);
+ }
+
+ private static String getFriendlyActivityName(Intent intent, boolean labelOnly, PackageManager packageManager) {
+ ActivityInfo ai = intent.resolveActivityInfo(packageManager, PackageManager.GET_ACTIVITIES);
+ String friendlyName = null;
+ if (ai != null) {
+ friendlyName = ai.loadLabel(packageManager).toString();
+ if (friendlyName == null && !labelOnly) {
+ friendlyName = ai.name;
+ }
+ }
+ return friendlyName != null || labelOnly ? friendlyName : intent.toUri(0);
+ }
+
+ private static String getFriendlyShortcutName(Intent intent, PackageManager packageManager) {
+ String activityName = getFriendlyActivityName(intent, true, packageManager);
+ String name = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
+
+ if (activityName != null && name != null) {
+ return activityName + ": " + name;
+ }
+ return name != null ? name : intent.toUri(0);
+ }
+
+ public static String getFriendlyNameForUri(String uri, PackageManager packageManager) {
+ if (uri == null) {
+ return null;
+ }
+
+ try {
+ Intent intent = Intent.parseUri(uri, 0);
+ if (Intent.ACTION_MAIN.equals(intent.getAction())) {
+ return getFriendlyActivityName(intent, false, packageManager);
+ }
+ return getFriendlyShortcutName(intent, packageManager);
+ } catch (URISyntaxException e) {
+ }
+
+ return uri;
+ }
+} \ No newline at end of file
diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
index 7b5bfb5..d4e09ca 100644
--- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
@@ -50,7 +50,8 @@ public class ZoneGetter {
public static final String KEY_DISPLAYNAME = "name"; // value: String
public static final String KEY_GMT = "gmt"; // value: String
public static final String KEY_OFFSET = "offset"; // value: int (Integer)
-
+ private static final String XML_ATTR_ID = "id";
+ private static final String XML_ATTR_LOCALIZE_IN_PICKER = "localizeInPicker";
private ZoneGetter() {}
public static String getTimeZoneOffsetAndName(TimeZone tz, Date now) {
@@ -85,7 +86,7 @@ public class ZoneGetter {
// selecting the wrong olson ids.
// Get the list of olson ids to display to the user.
- List<String> olsonIdsToDisplay = readTimezonesToDisplay(context);
+ List<ZoneInfo> olsonIdsToDisplay = readTimezonesToDisplay(context);
// Create a lookup of local zone IDs.
Set<String> localZoneIds = new TreeSet<String>();
@@ -97,9 +98,9 @@ public class ZoneGetter {
// be ambiguous.
Set<String> localZoneNames = new TreeSet<String>();
boolean localLongNamesAreAmbiguous = false;
- for (String olsonId : olsonIdsToDisplay) {
- if (localZoneIds.contains(olsonId)) {
- TimeZone tz = TimeZone.getTimeZone(olsonId);
+ for (ZoneInfo zoneInfo : olsonIdsToDisplay) {
+ if (localZoneIds.contains(zoneInfo.mOlsonId) && zoneInfo.mLocalizeInPicker) {
+ TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId);
String zoneLongName = getZoneLongName(locale, tz, now);
boolean longNameIsUnique = localZoneNames.add(zoneLongName);
if (!longNameIsUnique) {
@@ -111,12 +112,13 @@ public class ZoneGetter {
// Generate the list of zone entries to return.
List<Map<String, Object>> zones = new ArrayList<Map<String, Object>>();
- for (String olsonId : olsonIdsToDisplay) {
- final TimeZone tz = TimeZone.getTimeZone(olsonId);
+ for (ZoneInfo zoneInfo: olsonIdsToDisplay) {
+ final TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId);
// Exemplar location display is the default. The only time we intend to display the long
// name is when the olsonId is local AND long names are not ambiguous.
- boolean isLocalZoneId = localZoneIds.contains(olsonId);
- boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous;
+ boolean isLocalZoneId = localZoneIds.contains(zoneInfo.mOlsonId);
+ boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous
+ && zoneInfo.mLocalizeInPicker;
String displayName = getZoneDisplayName(locale, tz, now, preferLongName);
String gmtOffsetString = getGmtOffsetString(locale, tz, now);
@@ -162,8 +164,8 @@ public class ZoneGetter {
return TimeZoneNames.getExemplarLocation(locale.toString(), tz.getID());
}
- private static List<String> readTimezonesToDisplay(Context context) {
- List<String> olsonIds = new ArrayList<String>();
+ private static List<ZoneInfo> readTimezonesToDisplay(Context context) {
+ List<ZoneInfo> olsonIds = new ArrayList<>();
try (XmlResourceParser xrp = context.getResources().getXml(R.xml.timezones)) {
while (xrp.next() != XmlResourceParser.START_TAG) {
continue;
@@ -177,8 +179,10 @@ public class ZoneGetter {
xrp.next();
}
if (xrp.getName().equals(XMLTAG_TIMEZONE)) {
- String olsonId = xrp.getAttributeValue(0);
- olsonIds.add(olsonId);
+ String olsonId = xrp.getAttributeValue(null, XML_ATTR_ID);
+ boolean localize = xrp.getAttributeBooleanValue(null,
+ XML_ATTR_LOCALIZE_IN_PICKER, true);
+ olsonIds.add(new ZoneInfo(olsonId, localize));
}
while (xrp.getEventType() != XmlResourceParser.END_TAG) {
xrp.next();
@@ -212,4 +216,19 @@ public class ZoneGetter {
isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR);
return gmtString;
}
+
+ private static class ZoneInfo {
+ String mOlsonId;
+ boolean mLocalizeInPicker;
+
+ public ZoneInfo(String olsonId) {
+ mOlsonId = olsonId;
+ mLocalizeInPicker = false;
+ }
+
+ public ZoneInfo(String olsonId, boolean localizeInPicker) {
+ mOlsonId = olsonId;
+ mLocalizeInPicker = localizeInPicker;
+ }
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java b/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java
new file mode 100644
index 0000000..278b57d
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/drawable/CircleFramedDrawable.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2013 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.settingslib.drawable;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
+
+import com.android.settingslib.R;
+
+/**
+ * Converts the user avatar icon to a circularly clipped one.
+ * TODO: Move this to an internal framework class and share with the one in Keyguard.
+ */
+public class CircleFramedDrawable extends Drawable {
+
+ private final Bitmap mBitmap;
+ private final int mSize;
+ private final Paint mPaint;
+
+ private float mScale;
+ private Rect mSrcRect;
+ private RectF mDstRect;
+
+ public static CircleFramedDrawable getInstance(Context context, Bitmap icon) {
+ Resources res = context.getResources();
+ float iconSize = res.getDimension(R.dimen.circle_avatar_size);
+
+ CircleFramedDrawable instance = new CircleFramedDrawable(icon, (int) iconSize);
+ return instance;
+ }
+
+ public CircleFramedDrawable(Bitmap icon, int size) {
+ super();
+ mSize = size;
+
+ mBitmap = Bitmap.createBitmap(mSize, mSize, Bitmap.Config.ARGB_8888);
+ final Canvas canvas = new Canvas(mBitmap);
+
+ final int width = icon.getWidth();
+ final int height = icon.getHeight();
+ final int square = Math.min(width, height);
+
+ final Rect cropRect = new Rect((width - square) / 2, (height - square) / 2, square, square);
+ final RectF circleRect = new RectF(0f, 0f, mSize, mSize);
+
+ final Path fillPath = new Path();
+ fillPath.addArc(circleRect, 0f, 360f);
+
+ canvas.drawColor(0, PorterDuff.Mode.CLEAR);
+
+ // opaque circle matte
+ mPaint = new Paint();
+ mPaint.setAntiAlias(true);
+ mPaint.setColor(Color.BLACK);
+ mPaint.setStyle(Paint.Style.FILL);
+ canvas.drawPath(fillPath, mPaint);
+
+ // mask in the icon where the bitmap is opaque
+ mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
+ canvas.drawBitmap(icon, cropRect, circleRect, mPaint);
+
+ // prepare paint for frame drawing
+ mPaint.setXfermode(null);
+
+ mScale = 1f;
+
+ mSrcRect = new Rect(0, 0, mSize, mSize);
+ mDstRect = new RectF(0, 0, mSize, mSize);
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ final float inside = mScale * mSize;
+ final float pad = (mSize - inside) / 2f;
+
+ mDstRect.set(pad, pad, mSize - pad, mSize - pad);
+ canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, null);
+ }
+
+ public void setScale(float scale) {
+ mScale = scale;
+ }
+
+ public float getScale() {
+ return mScale;
+ }
+
+ @Override
+ public int getOpacity() {
+ return PixelFormat.TRANSLUCENT;
+ }
+
+ @Override
+ public void setAlpha(int alpha) {
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter cf) {
+ }
+
+ @Override
+ public int getIntrinsicWidth() {
+ return mSize;
+ }
+
+ @Override
+ public int getIntrinsicHeight() {
+ return mSize;
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/ChartData.java b/packages/SettingsLib/src/com/android/settingslib/net/ChartData.java
new file mode 100644
index 0000000..e30aac5
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/net/ChartData.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2011 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.settingslib.net;
+
+import android.net.NetworkStatsHistory;
+
+public class ChartData {
+ public NetworkStatsHistory network;
+
+ public NetworkStatsHistory detail;
+ public NetworkStatsHistory detailDefault;
+ public NetworkStatsHistory detailForeground;
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/ChartDataLoader.java b/packages/SettingsLib/src/com/android/settingslib/net/ChartDataLoader.java
new file mode 100644
index 0000000..223c055
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/net/ChartDataLoader.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2011 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.settingslib.net;
+
+import static android.net.NetworkStats.SET_DEFAULT;
+import static android.net.NetworkStats.SET_FOREGROUND;
+import static android.net.NetworkStats.TAG_NONE;
+import static android.net.NetworkStatsHistory.FIELD_RX_BYTES;
+import static android.net.NetworkStatsHistory.FIELD_TX_BYTES;
+import static android.text.format.DateUtils.HOUR_IN_MILLIS;
+
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.net.INetworkStatsSession;
+import android.net.NetworkStatsHistory;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.os.RemoteException;
+
+import com.android.settingslib.AppItem;
+
+/**
+ * Loader for historical chart data for both network and UID details.
+ */
+public class ChartDataLoader extends AsyncTaskLoader<ChartData> {
+ private static final String KEY_TEMPLATE = "template";
+ private static final String KEY_APP = "app";
+ private static final String KEY_FIELDS = "fields";
+
+ private final INetworkStatsSession mSession;
+ private final Bundle mArgs;
+
+ public static Bundle buildArgs(NetworkTemplate template, AppItem app) {
+ return buildArgs(template, app, FIELD_RX_BYTES | FIELD_TX_BYTES);
+ }
+
+ public static Bundle buildArgs(NetworkTemplate template, AppItem app, int fields) {
+ final Bundle args = new Bundle();
+ args.putParcelable(KEY_TEMPLATE, template);
+ args.putParcelable(KEY_APP, app);
+ args.putInt(KEY_FIELDS, fields);
+ return args;
+ }
+
+ public ChartDataLoader(Context context, INetworkStatsSession session, Bundle args) {
+ super(context);
+ mSession = session;
+ mArgs = args;
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+ forceLoad();
+ }
+
+ @Override
+ public ChartData loadInBackground() {
+ final NetworkTemplate template = mArgs.getParcelable(KEY_TEMPLATE);
+ final AppItem app = mArgs.getParcelable(KEY_APP);
+ final int fields = mArgs.getInt(KEY_FIELDS);
+
+ try {
+ return loadInBackground(template, app, fields);
+ } catch (RemoteException e) {
+ // since we can't do much without history, and we don't want to
+ // leave with half-baked UI, we bail hard.
+ throw new RuntimeException("problem reading network stats", e);
+ }
+ }
+
+ private ChartData loadInBackground(NetworkTemplate template, AppItem app, int fields)
+ throws RemoteException {
+ final ChartData data = new ChartData();
+ data.network = mSession.getHistoryForNetwork(template, fields);
+
+ if (app != null) {
+ // load stats for current uid and template
+ final int size = app.uids.size();
+ for (int i = 0; i < size; i++) {
+ final int uid = app.uids.keyAt(i);
+ data.detailDefault = collectHistoryForUid(
+ template, uid, SET_DEFAULT, data.detailDefault);
+ data.detailForeground = collectHistoryForUid(
+ template, uid, SET_FOREGROUND, data.detailForeground);
+ }
+
+ if (size > 0) {
+ data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
+ data.detail.recordEntireHistory(data.detailDefault);
+ data.detail.recordEntireHistory(data.detailForeground);
+ } else {
+ data.detailDefault = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ data.detailForeground = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ data.detail = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ }
+ }
+
+ return data;
+ }
+
+ @Override
+ protected void onStopLoading() {
+ super.onStopLoading();
+ cancelLoad();
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+ cancelLoad();
+ }
+
+ /**
+ * Collect {@link NetworkStatsHistory} for the requested UID, combining with
+ * an existing {@link NetworkStatsHistory} if provided.
+ */
+ private NetworkStatsHistory collectHistoryForUid(
+ NetworkTemplate template, int uid, int set, NetworkStatsHistory existing)
+ throws RemoteException {
+ final NetworkStatsHistory history = mSession.getHistoryForUid(
+ template, uid, set, TAG_NONE, FIELD_RX_BYTES | FIELD_TX_BYTES);
+
+ if (existing != null) {
+ existing.recordEntireHistory(history);
+ return existing;
+ } else {
+ return history;
+ }
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/SummaryForAllUidLoader.java b/packages/SettingsLib/src/com/android/settingslib/net/SummaryForAllUidLoader.java
new file mode 100644
index 0000000..572bae1
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/net/SummaryForAllUidLoader.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2011 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.settingslib.net;
+
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.net.INetworkStatsSession;
+import android.net.NetworkStats;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.os.RemoteException;
+
+public class SummaryForAllUidLoader extends AsyncTaskLoader<NetworkStats> {
+ private static final String KEY_TEMPLATE = "template";
+ private static final String KEY_START = "start";
+ private static final String KEY_END = "end";
+
+ private final INetworkStatsSession mSession;
+ private final Bundle mArgs;
+
+ public static Bundle buildArgs(NetworkTemplate template, long start, long end) {
+ final Bundle args = new Bundle();
+ args.putParcelable(KEY_TEMPLATE, template);
+ args.putLong(KEY_START, start);
+ args.putLong(KEY_END, end);
+ return args;
+ }
+
+ public SummaryForAllUidLoader(Context context, INetworkStatsSession session, Bundle args) {
+ super(context);
+ mSession = session;
+ mArgs = args;
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+ forceLoad();
+ }
+
+ @Override
+ public NetworkStats loadInBackground() {
+ final NetworkTemplate template = mArgs.getParcelable(KEY_TEMPLATE);
+ final long start = mArgs.getLong(KEY_START);
+ final long end = mArgs.getLong(KEY_END);
+
+ try {
+ return mSession.getSummaryForAllUid(template, start, end, false);
+ } catch (RemoteException e) {
+ return null;
+ }
+ }
+
+ @Override
+ protected void onStopLoading() {
+ super.onStopLoading();
+ cancelLoad();
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+ cancelLoad();
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/UidDetail.java b/packages/SettingsLib/src/com/android/settingslib/net/UidDetail.java
new file mode 100644
index 0000000..5e42281
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/net/UidDetail.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2011 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.settingslib.net;
+
+import android.graphics.drawable.Drawable;
+
+public class UidDetail {
+ public CharSequence label;
+ public CharSequence contentDescription;
+ public CharSequence[] detailLabels;
+ public CharSequence[] detailContentDescriptions;
+ public Drawable icon;
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java
new file mode 100644
index 0000000..224b967
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2011 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.settingslib.net;
+
+import android.app.AppGlobals;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.net.TrafficStats;
+import android.os.UserManager;
+import android.os.UserHandle;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.SparseArray;
+
+import com.android.settingslib.R;
+import com.android.settingslib.Utils;
+
+/**
+ * Return details about a specific UID, handling special cases like
+ * {@link TrafficStats#UID_TETHERING} and {@link UserInfo}.
+ */
+public class UidDetailProvider {
+ private static final String TAG = "DataUsage";
+ private final Context mContext;
+ private final SparseArray<UidDetail> mUidDetailCache;
+
+ public static final int OTHER_USER_RANGE_START = -2000;
+
+ public static int buildKeyForUser(int userHandle) {
+ return OTHER_USER_RANGE_START - userHandle;
+ }
+
+ public static boolean isKeyForUser(int key) {
+ return key <= OTHER_USER_RANGE_START;
+ }
+
+ public static int getUserIdForKey(int key) {
+ return OTHER_USER_RANGE_START - key;
+ }
+
+ public UidDetailProvider(Context context) {
+ mContext = context.getApplicationContext();
+ mUidDetailCache = new SparseArray<UidDetail>();
+ }
+
+ public void clearCache() {
+ synchronized (mUidDetailCache) {
+ mUidDetailCache.clear();
+ }
+ }
+
+ /**
+ * Resolve best descriptive label for the given UID.
+ */
+ public UidDetail getUidDetail(int uid, boolean blocking) {
+ UidDetail detail;
+
+ synchronized (mUidDetailCache) {
+ detail = mUidDetailCache.get(uid);
+ }
+
+ if (detail != null) {
+ return detail;
+ } else if (!blocking) {
+ return null;
+ }
+
+ detail = buildUidDetail(uid);
+
+ synchronized (mUidDetailCache) {
+ mUidDetailCache.put(uid, detail);
+ }
+
+ return detail;
+ }
+
+ /**
+ * Build {@link UidDetail} object, blocking until all {@link Drawable}
+ * lookup is finished.
+ */
+ private UidDetail buildUidDetail(int uid) {
+ final Resources res = mContext.getResources();
+ final PackageManager pm = mContext.getPackageManager();
+
+ final UidDetail detail = new UidDetail();
+ detail.label = pm.getNameForUid(uid);
+ detail.icon = pm.getDefaultActivityIcon();
+
+ // handle special case labels
+ switch (uid) {
+ case android.os.Process.SYSTEM_UID:
+ detail.label = res.getString(R.string.process_kernel_label);
+ detail.icon = pm.getDefaultActivityIcon();
+ return detail;
+ case TrafficStats.UID_REMOVED:
+ detail.label = res.getString(UserManager.supportsMultipleUsers()
+ ? R.string.data_usage_uninstalled_apps_users
+ : R.string.data_usage_uninstalled_apps);
+ detail.icon = pm.getDefaultActivityIcon();
+ return detail;
+ case TrafficStats.UID_TETHERING:
+ final ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(
+ Context.CONNECTIVITY_SERVICE);
+ detail.label = res.getString(Utils.getTetheringLabel(cm));
+ detail.icon = pm.getDefaultActivityIcon();
+ return detail;
+ }
+
+ final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+
+ // Handle keys that are actually user handles
+ if (isKeyForUser(uid)) {
+ final int userHandle = getUserIdForKey(uid);
+ final UserInfo info = um.getUserInfo(userHandle);
+ if (info != null) {
+ detail.label = Utils.getUserLabel(mContext, info);
+ detail.icon = Utils.getUserIcon(mContext, um, info);
+ return detail;
+ }
+ }
+
+ // otherwise fall back to using packagemanager labels
+ final String[] packageNames = pm.getPackagesForUid(uid);
+ final int length = packageNames != null ? packageNames.length : 0;
+ try {
+ final int userId = UserHandle.getUserId(uid);
+ UserHandle userHandle = new UserHandle(userId);
+ IPackageManager ipm = AppGlobals.getPackageManager();
+ if (length == 1) {
+ final ApplicationInfo info = ipm.getApplicationInfo(packageNames[0],
+ 0 /* no flags */, userId);
+ if (info != null) {
+ detail.label = info.loadLabel(pm).toString();
+ detail.icon = um.getBadgedIconForUser(info.loadIcon(pm),
+ new UserHandle(userId));
+ }
+ } else if (length > 1) {
+ detail.detailLabels = new CharSequence[length];
+ detail.detailContentDescriptions = new CharSequence[length];
+ for (int i = 0; i < length; i++) {
+ final String packageName = packageNames[i];
+ final PackageInfo packageInfo = pm.getPackageInfo(packageName, 0);
+ final ApplicationInfo appInfo = ipm.getApplicationInfo(packageName,
+ 0 /* no flags */, userId);
+
+ if (appInfo != null) {
+ detail.detailLabels[i] = appInfo.loadLabel(pm).toString();
+ detail.detailContentDescriptions[i] = um.getBadgedLabelForUser(
+ detail.detailLabels[i], userHandle);
+ if (packageInfo.sharedUserLabel != 0) {
+ detail.label = pm.getText(packageName, packageInfo.sharedUserLabel,
+ packageInfo.applicationInfo).toString();
+ detail.icon = um.getBadgedIconForUser(appInfo.loadIcon(pm), userHandle);
+ }
+ }
+ }
+ }
+ detail.contentDescription = um.getBadgedLabelForUser(detail.label, userHandle);
+ } catch (NameNotFoundException e) {
+ Log.w(TAG, "Error while building UI detail for uid "+uid, e);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error while building UI detail for uid "+uid, e);
+ }
+
+ if (TextUtils.isEmpty(detail.label)) {
+ detail.label = Integer.toString(uid);
+ }
+
+ return detail;
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 632a867..f8bcc27 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -124,6 +124,8 @@ public class AccessPoint implements Comparable<AccessPoint> {
private Object mTag;
+ public boolean foundInScanResult = false;
+
public AccessPoint(Context context, Bundle savedState) {
mContext = context;
mConfig = savedState.getParcelable(KEY_CONFIG);
@@ -336,6 +338,10 @@ public class AccessPoint implements Comparable<AccessPoint> {
return str;
}
+ public int getNetworkId() {
+ return networkId;
+ }
+
public String getConfigName() {
if (mConfig != null && mConfig.isPasspoint()) {
return mConfig.providerFriendlyName;
@@ -640,12 +646,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
} else if (config != null) {
return matches(config);
}
- else {
- // Might be an ephemeral connection with no WifiConfiguration. Try matching on SSID.
- // (Note that we only do this if the WifiConfiguration explicitly equals INVALID).
- // TODO: Handle hex string SSIDs.
- return ssid.equals(removeDoubleQuotes(info.getSSID()));
- }
+ return false;
}
public boolean isSaved() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index c28288e..fe8f757 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -180,7 +180,9 @@ public class WifiTracker {
if (mWifiManager.isWifiEnabled()) {
mScanner.resume();
}
- mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ if (!mWorkHandler.hasMessages(WorkHandler.MSG_UPDATE_ACCESS_POINTS)) {
+ mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ }
}
/**
@@ -320,6 +322,7 @@ public class WifiTracker {
continue;
}
AccessPoint accessPoint = getCachedOrCreate(config, cachedAccessPoints);
+ accessPoint.foundInScanResult = false;
if (mLastInfo != null && mLastNetworkInfo != null) {
if (config.isPasspoint() == false) {
accessPoint.update(connectionConfig, mLastInfo, mLastNetworkInfo);
@@ -352,6 +355,7 @@ public class WifiTracker {
boolean found = false;
for (AccessPoint accessPoint : apMap.getAll(result.SSID)) {
if (accessPoint.update(result)) {
+ accessPoint.foundInScanResult = true;
found = true;
break;
}
@@ -505,7 +509,9 @@ public class WifiTracker {
} else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action) ||
WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action) ||
WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) {
- mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ if (!mWorkHandler.hasMessages(WorkHandler.MSG_UPDATE_ACCESS_POINTS)) {
+ mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ }
} else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
WifiManager.EXTRA_NETWORK_INFO);
@@ -513,7 +519,9 @@ public class WifiTracker {
mMainHandler.sendEmptyMessage(MainHandler.MSG_CONNECTED_CHANGED);
- mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ if (!mWorkHandler.hasMessages(WorkHandler.MSG_UPDATE_ACCESS_POINTS)) {
+ mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
+ }
mWorkHandler.obtainMessage(WorkHandler.MSG_UPDATE_NETWORK_INFO, info)
.sendToTarget();
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
diff --git a/packages/SettingsProvider/Android.mk b/packages/SettingsProvider/Android.mk
index 2b833b2..9c7bcb3 100644
--- a/packages/SettingsProvider/Android.mk
+++ b/packages/SettingsProvider/Android.mk
@@ -7,7 +7,7 @@ LOCAL_SRC_FILES := $(call all-subdir-java-files) \
src/com/android/providers/settings/EventLogTags.logtags
LOCAL_JAVA_LIBRARIES := telephony-common ims-common
-
+LOCAL_STATIC_JAVA_LIBRARIES := org.cyanogenmod.platform.sdk
LOCAL_PACKAGE_NAME := SettingsProvider
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
diff --git a/packages/SettingsProvider/res/mipmap-hdpi/ic_launcher_settings.png b/packages/SettingsProvider/res/mipmap-hdpi/ic_launcher_settings.png
index a8ccc89..252e6b4 100644
--- a/packages/SettingsProvider/res/mipmap-hdpi/ic_launcher_settings.png
+++ b/packages/SettingsProvider/res/mipmap-hdpi/ic_launcher_settings.png
Binary files differ
diff --git a/packages/SettingsProvider/res/mipmap-mdpi/ic_launcher_settings.png b/packages/SettingsProvider/res/mipmap-mdpi/ic_launcher_settings.png
index 69709a8..d2ecee9 100644
--- a/packages/SettingsProvider/res/mipmap-mdpi/ic_launcher_settings.png
+++ b/packages/SettingsProvider/res/mipmap-mdpi/ic_launcher_settings.png
Binary files differ
diff --git a/packages/SettingsProvider/res/mipmap-xhdpi/ic_launcher_settings.png b/packages/SettingsProvider/res/mipmap-xhdpi/ic_launcher_settings.png
index c3adce61..fa8c813 100644
--- a/packages/SettingsProvider/res/mipmap-xhdpi/ic_launcher_settings.png
+++ b/packages/SettingsProvider/res/mipmap-xhdpi/ic_launcher_settings.png
Binary files differ
diff --git a/packages/SettingsProvider/res/mipmap-xxhdpi/ic_launcher_settings.png b/packages/SettingsProvider/res/mipmap-xxhdpi/ic_launcher_settings.png
index 52fe978..3fa69e9 100644
--- a/packages/SettingsProvider/res/mipmap-xxhdpi/ic_launcher_settings.png
+++ b/packages/SettingsProvider/res/mipmap-xxhdpi/ic_launcher_settings.png
Binary files differ
diff --git a/packages/SettingsProvider/res/mipmap-xxxhdpi/ic_launcher_settings.png b/packages/SettingsProvider/res/mipmap-xxxhdpi/ic_launcher_settings.png
index 6b92795..72946b7 100644
--- a/packages/SettingsProvider/res/mipmap-xxxhdpi/ic_launcher_settings.png
+++ b/packages/SettingsProvider/res/mipmap-xxxhdpi/ic_launcher_settings.png
Binary files differ
diff --git a/packages/SettingsProvider/res/values-as-rIN/strings.xml b/packages/SettingsProvider/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-as-rIN/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-ast-rES/strings.xml b/packages/SettingsProvider/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..fa15ee4
--- /dev/null
+++ b/packages/SettingsProvider/res/values-ast-rES/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+ <string name="app_label">Axustes d\'almacenamientu</string>
+</resources>
diff --git a/packages/SettingsProvider/res/values-be/strings.xml b/packages/SettingsProvider/res/values-be/strings.xml
new file mode 100644
index 0000000..d25ca6e
--- /dev/null
+++ b/packages/SettingsProvider/res/values-be/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+ <string name="app_label">Захоўванне налад</string>
+</resources>
diff --git a/packages/SettingsProvider/res/values-br-rFR/strings.xml b/packages/SettingsProvider/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-br-rFR/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-bs-rBA/strings.xml b/packages/SettingsProvider/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-bs-rBA/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-csb-rPL/strings.xml b/packages/SettingsProvider/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-csb-rPL/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-cy/strings.xml b/packages/SettingsProvider/res/values-cy/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-cy/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-en-rPT/strings.xml b/packages/SettingsProvider/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-en-rPT/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-eo/strings.xml b/packages/SettingsProvider/res/values-eo/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-eo/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-es-rCO/strings.xml b/packages/SettingsProvider/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-es-rCO/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-es-rMX/strings.xml b/packages/SettingsProvider/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-es-rMX/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-frp-rIT/strings.xml b/packages/SettingsProvider/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-frp-rIT/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-fy-rNL/strings.xml b/packages/SettingsProvider/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-fy-rNL/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-ga-rIE/strings.xml b/packages/SettingsProvider/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-ga-rIE/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-gd-rGB/strings.xml b/packages/SettingsProvider/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-gd-rGB/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-ku/strings.xml b/packages/SettingsProvider/res/values-ku/strings.xml
new file mode 100644
index 0000000..9ae7925
--- /dev/null
+++ b/packages/SettingsProvider/res/values-ku/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+ <string name="app_label">ڕێکخستنی بیرگە</string>
+</resources>
diff --git a/packages/SettingsProvider/res/values-lb/strings.xml b/packages/SettingsProvider/res/values-lb/strings.xml
new file mode 100644
index 0000000..b553066
--- /dev/null
+++ b/packages/SettingsProvider/res/values-lb/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+ <string name="app_label">Astellungsspäicher</string>
+</resources>
diff --git a/packages/SettingsProvider/res/values-oc-rFR/strings.xml b/packages/SettingsProvider/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-oc-rFR/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-or-rIN/strings.xml b/packages/SettingsProvider/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..ce94a95
--- /dev/null
+++ b/packages/SettingsProvider/res/values-or-rIN/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+</resources>
diff --git a/packages/SettingsProvider/res/values-ug/strings.xml b/packages/SettingsProvider/res/values-ug/strings.xml
new file mode 100644
index 0000000..e5a1177
--- /dev/null
+++ b/packages/SettingsProvider/res/values-ug/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2007, 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>
+ <!-- Name of the activity for Settings storage. -->
+ <string name="app_label">ساقلىغۇچ تەڭشىكى</string>
+</resources>
diff --git a/packages/SettingsProvider/res/values/customize.xml b/packages/SettingsProvider/res/values/customize.xml
new file mode 100644
index 0000000..9085d2d
--- /dev/null
+++ b/packages/SettingsProvider/res/values/customize.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (c) 2014, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<resources>
+
+ <!-- Time format,default vlaue is 24 : 24 format,other value is 12 format -->
+ <string name="def_time_format" translatable="false"></string>
+
+ <!-- Date format,yyyy-MM-dd: 2013/07/30; MM-dd-yyyy:07/30/2013; dd-MM-yyyy:30/07/2013 -->
+ <string name="def_date_format" translatable="false"></string>
+
+ <!--
+ Default Input Method, its value is from inputmethod's package name and main class name
+ such as "com.android.inputmethod.pinyin/.PinyinIME"
+ -->
+ <string name="def_input_method" translatable="false"></string>
+
+ <!-- Default for Settings.Global.DATA_ROAMING -->
+ <bool name="def_enable_data_roaming">false</bool>
+
+ <!-- Default for Settings.Global.MOBILE_DATA -->
+ <bool name="def_enable_mobile_data">true</bool>
+
+ <!--
+ Default Enable InputMethods, its value is from inputmethod's package name and main class name
+ such as "com.android.inputmethod.pinyin/.PinyinIME" ;This is a string
+ containing the IDs of all enabled input methods, each ID separated by ':'.
+ -->
+ <string name="def_enable_input_methods" translatable="false"></string>
+
+ <!-- enable accessiblity or not,1:enable;0:disable -->
+ <integer name="def_enable_accessiblity" translatable="false">0</integer>
+
+ <!-- for enable accessiblity services,split by ":" ,example "com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService" -->
+ <string name="def_enable_accessiblity_services" translatable="false"></string>
+
+</resources>
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 1cd2908..9ecbfdd 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -25,15 +25,24 @@
<!-- Comma-separated list of bluetooth, wifi, and cell. -->
<string name="def_airplane_mode_radios" translatable="false">cell,bluetooth,wifi,nfc,wimax</string>
<string name="airplane_mode_toggleable_radios" translatable="false">bluetooth,wifi,nfc</string>
+ <string name="def_bluetooth_disabled_profiles" translatable="false">0</string>
<bool name="def_auto_time">true</bool>
<bool name="def_auto_time_zone">true</bool>
<bool name="def_accelerometer_rotation">true</bool>
+ <!-- Bitmask of allowed display rotation angles:
+ ROTATION_0_MODE: 1
+ ROTATION_90_MODE: 2
+ ROTATION_180_MODE: 4
+ ROTATION_270_MODE: 8
+ Default to 0, 90, 270. -->
+ <integer name="def_accelerometer_rotation_angles">11</integer>
<!-- Default screen brightness, from 0 to 255. 102 is 40%. -->
<integer name="def_screen_brightness">102</integer>
<bool name="def_screen_brightness_automatic_mode">false</bool>
<fraction name="def_window_animation_scale">100%</fraction>
<fraction name="def_window_transition_scale">100%</fraction>
<bool name="def_haptic_feedback">true</bool>
+ <bool name="def_dozeEnabledByDefault">false</bool>
<bool name="def_bluetooth_on">false</bool>
<bool name="def_wifi_display_on">false</bool>
@@ -77,6 +86,7 @@
<string name="def_unlock_sound" translatable="false">/system/media/audio/ui/Unlock.ogg</string>
<string name="def_trusted_sound" translatable="false">/system/media/audio/ui/Trusted.ogg</string>
<string name="def_wireless_charging_started_sound" translatable="false">/system/media/audio/ui/WirelessChargingStarted.ogg</string>
+ <bool name="def_volume_adjust_sounds_enabled">true</bool>
<bool name="def_lockscreen_disabled">false</bool>
<bool name="def_device_provisioned">false</bool>
@@ -177,6 +187,9 @@
>0 is milliseconds of screen-off time after which battery sounds will not play -->
<integer name="def_low_battery_sound_timeout">0</integer>
+ <!-- Default for Settings.System.VIBRATE_WHEN_RINGING enabled -->
+ <bool name="def_vibrate_when_ringing_enabled">false</bool>
+
<!-- Initial value for the Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS setting,
which is a comma separated list of packages that no longer need confirmation
for immersive mode.
@@ -192,6 +205,9 @@
<!-- Default for Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS -->
<bool name="def_lock_screen_allow_private_notifications">true</bool>
+ <!-- Default for Settings.Global.SEND_ACTION_APP_ERROR -->
+ <integer name="def_send_action_app_error">0</integer>
+
<!-- Default for Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED, 1==on -->
<integer name="def_heads_up_enabled">1</integer>
@@ -212,4 +228,13 @@
<!-- Default for Settings.Secure.NFC_PAYMENT_COMPONENT -->
<string name="def_nfc_payment_component"></string>
+
+ <!-- Default for Settings.System.STATUS_BAR_NOTIF_COUNT. -->
+ <integer name="def_notif_count">0</integer>
+
+ <!-- Default protected sms originating address values of Settings.Secure.PROTECTED_SMS_ADDRESSES -->
+ <string-array name="def_protected_sms_list_values"></string-array>
+
+ <!-- Default for Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED -->
+ <integer name="def_captive_portal_detection_enabled" translatable="false">1</integer>
</resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 5a14967..e4b2409 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -23,6 +23,7 @@ import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
+import android.content.res.ThemeConfig;
import android.content.res.XmlResourceParser;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
@@ -40,8 +41,15 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.provider.Settings.Secure;
+import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.content.res.AssetManager;
+import android.util.DisplayMetrics;
+import android.content.pm.PackageManager.NameNotFoundException;
+
import com.android.ims.ImsConfig;
import com.android.internal.content.PackageHelper;
@@ -51,11 +59,13 @@ import com.android.internal.util.XmlUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
+import cyanogenmod.providers.CMSettings;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -76,11 +86,16 @@ class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "SettingsProvider";
private static final String DATABASE_NAME = "settings.db";
+ private static final int TYPE_NONE = -1;
+
// Please, please please. If you update the database version, check to make sure the
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
// is properly propagated through your change. Not doing so will result in a loss of user
// settings.
- private static final int DATABASE_VERSION = 118;
+ private static final int DATABASE_VERSION = 125;
+
+ //Maximum number of phones
+ private static final int MAX_PHONE_COUNT = 3;
private Context mContext;
private int mUserHandle;
@@ -93,6 +108,7 @@ class DatabaseHelper extends SQLiteOpenHelper {
private static final String TABLE_SYSTEM = "system";
private static final String TABLE_SECURE = "secure";
private static final String TABLE_GLOBAL = "global";
+ private String mPublicSrcDir;
static {
mValidTables.add(TABLE_SYSTEM);
@@ -124,6 +140,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
super(context, dbNameForUser(userHandle), null, DATABASE_VERSION);
mContext = context;
mUserHandle = userHandle;
+ try {
+ String packageName = mContext.getPackageName();
+ mPublicSrcDir = mContext.getPackageManager().getApplicationInfo(packageName, 0)
+ .publicSourceDir;
+ } catch (NameNotFoundException e) {
+ e.printStackTrace();
+ }
}
public static boolean isValidTable(String name) {
@@ -717,6 +740,10 @@ class DatabaseHelper extends SQLiteOpenHelper {
Secure.LOCK_PATTERN_ENABLED,
Secure.LOCK_PATTERN_VISIBLE,
Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED,
+ CMSettings.Secure.LOCK_PASS_TO_SECURITY_VIEW,
+ Secure.LOCK_PATTERN_SIZE,
+ Secure.LOCK_DOTS_VISIBLE,
+ Secure.LOCK_SHOW_ERROR_PATH,
"lockscreen.password_type",
"lockscreen.lockoutattemptdeadline",
"lockscreen.patterneverchosen",
@@ -1388,6 +1415,7 @@ class DatabaseHelper extends SQLiteOpenHelper {
if (upgradeVersion == 88) {
if (mUserHandle == UserHandle.USER_OWNER) {
db.beginTransaction();
+ SQLiteStatement stmt = null;
try {
String[] settingsToMove = {
Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD,
@@ -1407,7 +1435,6 @@ class DatabaseHelper extends SQLiteOpenHelper {
Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES,
Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
Settings.Global.CONNECTIVITY_CHANGE_DELAY,
- Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
Settings.Global.CAPTIVE_PORTAL_SERVER,
Settings.Global.NSD_ON,
Settings.Global.SET_INSTALL_LOCATION,
@@ -1423,9 +1450,16 @@ class DatabaseHelper extends SQLiteOpenHelper {
Settings.Global.DEFAULT_DNS_SERVER,
};
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
+
+ stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)"
+ + " VALUES(?,?);");
+ loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
+ R.integer.def_captive_portal_detection_enabled);
+ stmt.close();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
+ if (stmt != null) stmt.close();
}
}
upgradeVersion = 89;
@@ -1871,9 +1905,34 @@ class DatabaseHelper extends SQLiteOpenHelper {
upgradeVersion = 113;
}
- // We skipped 114 to handle a merge conflict with the introduction of theater mode.
+ // We skipped 114 to handle a merge conflict with the introduction of theater mode. Except
+ // in CM we didn't, soooooo...
+ if (upgradeVersion < 114) {
+ // Artificially bump our upgrade version to handle
+ // migration path from cm-11.0 to cm-12.0
+ // without this, heads up would never work if
+ // a user did not wipe data
+ /** CM-13, this option was moved to CMSettings, artificially bump, skip default load.**/
+// upgradeHeadsUpSettingFromNone(db);
+// upgradeDeviceNameFromNone(db);
+
+ // Removal of back/recents is no longer supported
+ // due to pinned apps
+ db.beginTransaction();
+ try {
+ db.execSQL("DELETE FROM system WHERE name='"
+ + CMSettings.System.NAV_BUTTONS + "'");
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+
+ upgradeVersion = 114;
+ }
if (upgradeVersion < 115) {
+ moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
+ new String[] { CMSettings.Secure.STATS_COLLECTION }, true);
if (mUserHandle == UserHandle.USER_OWNER) {
db.beginTransaction();
SQLiteStatement stmt = null;
@@ -1892,6 +1951,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
}
if (upgradeVersion < 116) {
+ moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
+ new String[]{Settings.Secure.VOLUME_LINK_NOTIFICATION}, true);
if (mUserHandle == UserHandle.USER_OWNER) {
db.beginTransaction();
SQLiteStatement stmt = null;
@@ -1920,10 +1981,44 @@ class DatabaseHelper extends SQLiteOpenHelper {
} finally {
db.endTransaction();
}
+
+ // CM11 used "holo" as a system default theme. For CM12 and up its been
+ // switched to "system". So change all "holo" references in themeConfig to "system"
+ final String NAME_THEME_CONFIG = "themeConfig";
+ Cursor c = null;
+ try {
+ String[] projection = new String[]{"value"};
+ String selection = "name=?";
+ String[] selectionArgs = new String[] { NAME_THEME_CONFIG };
+ c = db.query(TABLE_SECURE, projection, selection,
+ selectionArgs, null, null, null);
+ if (c != null && c.moveToFirst()) {
+ String jsonConfig = c.getString(0);
+ if (jsonConfig != null) {
+ jsonConfig = jsonConfig.replace(
+ "\"holo\"", '"' + ThemeConfig.SYSTEM_DEFAULT + '"');
+
+ // Now update the entry
+ SQLiteStatement stmt = db.compileStatement(
+ "UPDATE " + TABLE_SECURE + " SET value = ? "
+ + " WHERE name = ?");
+ stmt.bindString(1, jsonConfig);
+ stmt.bindString(2, NAME_THEME_CONFIG);
+ stmt.execute();
+ }
+ }
+ } finally {
+ if (c != null) c.close();
+ }
upgradeVersion = 117;
}
if (upgradeVersion < 118) {
+ String[] settingsToMove = new String[] {
+ CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
+ };
+ moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
+ settingsToMove, true);
// Reset rotation-lock-for-accessibility on upgrade, since it now hides the display
// setting.
db.beginTransaction();
@@ -1940,6 +2035,110 @@ class DatabaseHelper extends SQLiteOpenHelper {
upgradeVersion = 118;
}
+ /** CM-13 CHANGES -- THIS IS TO SUPPORT LEGACY UPGRADES, DO NOT ADD ANY NEW DEFAULTS HERE
+ * INSTEAD UTILIZE THE CMSETTINGS PROVIDER
+ */
+ if (upgradeVersion == 119) {
+ /** CM-13, this option was moved to CMSettings, artificially bump, skip default load.**/
+// db.beginTransaction();
+// SQLiteStatement stmt = null;
+// try {
+// stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value) VALUES(?,?);");
+// loadDefaultThemeSettings(stmt);
+// db.setTransactionSuccessful();
+// } finally {
+// db.endTransaction();
+// if (stmt != null) stmt.close();
+// }
+ upgradeVersion = 120;
+ }
+
+ if (upgradeVersion < 121) {
+ String[] settingsToMove = CMSettings.Secure.NAVIGATION_RING_TARGETS;
+
+ moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
+ settingsToMove, true);
+ upgradeVersion = 121;
+ }
+
+ if (upgradeVersion < 122) {
+ /** CM-13, this option was moved to CMSettings, artificially bump, skip default load.**/
+// db.beginTransaction();
+// SQLiteStatement stmt = null;
+// try {
+// stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
+// + " VALUES(?,?);");
+// loadBooleanSetting(stmt, CMSettings.Secure.ADVANCED_MODE,
+// com.android.internal.R.bool.config_advancedSettingsMode);
+// db.setTransactionSuccessful();
+// } finally {
+// db.endTransaction();
+// if (stmt != null) stmt.close();
+// }
+ upgradeVersion = 122;
+ }
+
+ if (upgradeVersion < 123) {
+ // only the owner has access to global table, so we need to check that here
+ if (mUserHandle == UserHandle.USER_OWNER) {
+ String[] globalToSecure = new String[] { CMSettings.Secure.POWER_MENU_ACTIONS };
+
+ moveSettingsToNewTable(db, TABLE_GLOBAL, TABLE_SECURE, globalToSecure, true);
+ }
+
+ String[] systemToSecure = new String[] {
+ CMSettings.Global.DEV_FORCE_SHOW_NAVBAR,
+ CMSettings.Secure.KEYBOARD_BRIGHTNESS,
+ CMSettings.Secure.BUTTON_BRIGHTNESS,
+ CMSettings.Secure.BUTTON_BACKLIGHT_TIMEOUT
+ };
+ moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, systemToSecure, true);
+
+ upgradeVersion = 123;
+ }
+
+ if (upgradeVersion < 124) {
+ // Migrate from cm-12.0 if there is no entry from cm-11.0
+ /** CM-13, this option was moved to CMSettings, artificially bump, skip default load.**/
+// db.beginTransaction();
+// SQLiteStatement stmt = null;
+// try {
+// stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
+// + " VALUES(?,?);");
+// int quickPulldown = getIntValueFromSystem(db,
+// CMSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN,
+// R.integer.def_qs_quick_pulldown);
+// loadSetting(stmt, CMSettings.System.QS_QUICK_PULLDOWN, quickPulldown);
+// db.setTransactionSuccessful();
+// } finally {
+// db.endTransaction();
+// if (stmt != null) stmt.close();
+// }
+ upgradeVersion = 124;
+ }
+
+ if (upgradeVersion < 125) {
+ // Force enable advanced settings if the overlay defaults to true
+ /** CM-13, this option was moved to CMSettings, artificially bump, skip default load.**/
+// if (mContext.getResources().getBoolean(
+// com.android.internal.R.bool.config_advancedSettingsMode)) {
+// db.beginTransaction();
+// SQLiteStatement stmt = null;
+// try {
+// stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
+// + " VALUES(?,?);");
+// loadBooleanSetting(stmt, CMSettings.Secure.ADVANCED_MODE,
+// com.android.internal.R.bool.config_advancedSettingsMode);
+// db.setTransactionSuccessful();
+// } finally {
+// db.endTransaction();
+// if (stmt != null) stmt.close();
+// }
+// }
+ upgradeVersion = 125;
+ }
+ /** END CM-13 CHANGES */
+
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
@@ -2065,7 +2264,7 @@ class DatabaseHelper extends SQLiteOpenHelper {
try {
LockPatternUtils lpu = new LockPatternUtils(mContext);
List<LockPatternView.Cell> cellPattern =
- LockPatternUtils.stringToPattern(lockPattern);
+ LockPatternUtils.stringToPattern(lockPattern, lpu.getLockPatternSize(mUserHandle));
lpu.saveLockPattern(cellPattern, null, UserHandle.USER_OWNER);
} catch (IllegalArgumentException e) {
// Don't want corrupted lock pattern to hang the reboot process
@@ -2334,12 +2533,26 @@ class DatabaseHelper extends SQLiteOpenHelper {
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ " VALUES(?,?);");
- loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0);
+ if (mContext.getResources().getBoolean(R.bool.def_vibrate_when_ringing_enabled)) {
+ loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, 1);
+ } else {
+ loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0);
+ }
} finally {
if (stmt != null) stmt.close();
}
}
+ private void loadProtectedSmsSetting(SQLiteStatement stmt) {
+ String[] regAddresses = mContext.getResources()
+ .getStringArray(R.array.def_protected_sms_list_values);
+ if (regAddresses.length > 0) {
+ loadSetting(stmt,
+ Settings.Secure.PROTECTED_SMS_ADDRESSES,
+ TextUtils.join("|", regAddresses));
+ }
+ }
+
private void loadSettings(SQLiteDatabase db) {
loadSystemSettings(db);
loadSecureSettings(db);
@@ -2380,6 +2593,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
R.bool.def_accelerometer_rotation);
+ loadIntegerSetting(stmt, Settings.System.ACCELEROMETER_ROTATION_ANGLES,
+ R.integer.def_accelerometer_rotation_angles);
+
loadDefaultHapticSettings(stmt);
loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
@@ -2397,6 +2613,17 @@ class DatabaseHelper extends SQLiteOpenHelper {
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
+
+ //LEGACY CAF CHANGES
+ if (!TextUtils.isEmpty(mContext.getResources().getString(R.string.def_time_format))) {
+ loadStringSetting(stmt, Settings.System.TIME_12_24,
+ R.string.def_time_format);
+ }
+
+ if (!TextUtils.isEmpty(mContext.getResources().getString(R.string.def_date_format))) {
+ loadStringSetting(stmt, Settings.System.DATE_FORMAT,
+ R.string.def_date_format);
+ }
} finally {
if (stmt != null) stmt.close();
}
@@ -2409,6 +2636,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
R.bool.def_sound_effects_enabled);
loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED,
R.bool.def_haptic_feedback);
+ loadBooleanSetting(stmt, CMSettings.System.VOLUME_ADJUST_SOUNDS_ENABLED,
+ R.bool.def_volume_adjust_sounds_enabled);
loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED,
R.integer.def_lockscreen_sounds_enabled);
@@ -2446,7 +2675,7 @@ class DatabaseHelper extends SQLiteOpenHelper {
// Allow mock locations default, based on build
loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION,
- "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0);
+ "1".equals(SystemProperties.get("persist.env.c.allow.enable")) ? 1 : 0);
loadSecure35Settings(stmt);
@@ -2497,6 +2726,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
com.android.internal.R.string.config_dreamsDefaultComponent);
loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
com.android.internal.R.string.config_dreamsDefaultComponent);
+ loadBooleanSetting(stmt, Settings.Secure.DOZE_ENABLED,
+ R.bool.def_dozeEnabledByDefault);
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
R.bool.def_accessibility_display_magnification_enabled);
@@ -2536,6 +2767,24 @@ class DatabaseHelper extends SQLiteOpenHelper {
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
+
+ //LEGACY CAF CHANGES
+ if (!TextUtils.isEmpty(mContext.getResources().getString(R.string.def_input_method))) {
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+ R.string.def_input_method);
+ }
+
+ if (!TextUtils.isEmpty(mContext.getResources().getString(
+ R.string.def_enable_input_methods))) {
+ loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
+ R.string.def_enable_input_methods);
+ }
+
+ // for accessibility enabled
+ loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,
+ R.integer.def_enable_accessiblity);
+ loadStringSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+ R.string.def_enable_accessiblity_services);
} finally {
if (stmt != null) stmt.close();
}
@@ -2606,10 +2855,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
// Data roaming default, based on build
- loadSetting(stmt, Settings.Global.DATA_ROAMING,
- "true".equalsIgnoreCase(
- SystemProperties.get("ro.com.android.dataroaming",
- "false")) ? 1 : 0);
+ loadRegionLockedBooleanSetting(stmt, Settings.Global.DATA_ROAMING,
+ R.bool.def_enable_data_roaming);
loadBooleanSetting(stmt, Settings.Global.DEVICE_PROVISIONED,
R.bool.def_device_provisioned);
@@ -2629,10 +2876,10 @@ class DatabaseHelper extends SQLiteOpenHelper {
}
// Mobile Data default, based on build
- loadSetting(stmt, Settings.Global.MOBILE_DATA,
- "true".equalsIgnoreCase(
- SystemProperties.get("ro.com.android.mobiledata",
- "true")) ? 1 : 0);
+ loadRegionLockedBooleanSetting(stmt, Settings.Global.MOBILE_DATA,
+ R.bool.def_enable_mobile_data);
+
+ int phoneCount = TelephonyManager.getDefault().getPhoneCount();
loadBooleanSetting(stmt, Settings.Global.NETSTATS_ENABLED,
R.bool.def_netstats_enabled);
@@ -2668,6 +2915,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
R.string.def_car_undock_sound);
loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND,
R.string.def_wireless_charging_started_sound);
+ loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED,
+ R.integer.def_dock_audio_media_enabled);
loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED,
R.integer.def_dock_audio_media_enabled);
@@ -2684,13 +2933,36 @@ class DatabaseHelper extends SQLiteOpenHelper {
// Set the preferred network mode to target desired value or Default
// value defined in RILConstants
- int type;
- type = RILConstants.PREFERRED_NETWORK_MODE;
- loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, type);
+ final String defVal = SystemProperties.get("ro.telephony.default_network", "");
+ final String[] defNetworkSettings = defVal.split(",");
+ final String[] networkSettings = new String[phoneCount];
+ boolean error = defNetworkSettings.length != phoneCount;
+
+ for (int i = 0; i < phoneCount; i++) {
+ if (i < defNetworkSettings.length) {
+ try {
+ networkSettings[i] = String.valueOf(
+ Integer.parseInt(defNetworkSettings[i]));
+ } catch (NumberFormatException ex) {
+ networkSettings[i] = String.valueOf(RILConstants.PREFERRED_NETWORK_MODE);
+ error = true;
+ }
+ } else {
+ networkSettings[i] = String.valueOf(RILConstants.PREFERRED_NETWORK_MODE);
+ error = true;
+ }
+ }
+
+ if (error) {
+ Log.w(TAG, "Invalid ro.telephony.default_network: " + defVal);
+ }
+
+ loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, TextUtils.join(",",
+ networkSettings));
// Set the preferred cdma subscription source to target desired value or default
// value defined in CdmaSubscriptionSourceManager
- type = SystemProperties.getInt("ro.telephony.default_cdma_sub",
+ int type = SystemProperties.getInt("ro.telephony.default_cdma_sub",
CdmaSubscriptionSourceManager.PREFERRED_CDMA_SUBSCRIPTION);
loadSetting(stmt, Settings.Global.CDMA_SUBSCRIPTION_MODE, type);
@@ -2705,11 +2977,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName());
+ loadIntegerSetting(stmt, Settings.Global.SEND_ACTION_APP_ERROR,
+ R.integer.def_send_action_app_error);
+
loadBooleanSetting(stmt, Settings.Global.GUEST_USER_ENABLED,
R.bool.def_guest_user_enabled);
loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED,
ImsConfig.FeatureValueConstants.ON);
-
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
@@ -2717,6 +2991,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
+ loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
+ R.integer.def_captive_portal_detection_enabled);
} finally {
if (stmt != null) stmt.close();
}
@@ -2728,6 +3004,36 @@ class DatabaseHelper extends SQLiteOpenHelper {
stmt.execute();
}
+ private Resources getRegionLockedResources() {
+ Configuration tempConfiguration = new Configuration();
+ String mcc = SystemProperties.get("ro.prebundled.mcc");
+ Resources customResources = null;
+ if (!TextUtils.isEmpty(mcc)) {
+ tempConfiguration.mcc = Integer.parseInt(mcc);
+ AssetManager assetManager = new AssetManager();
+ assetManager.addAssetPath(mPublicSrcDir);
+ customResources = new Resources(assetManager, new DisplayMetrics(),
+ tempConfiguration);
+ }
+
+ return customResources;
+ }
+
+ private void loadRegionLockedStringSetting(SQLiteStatement stmt, String key, int resid) {
+ Resources customResources = getRegionLockedResources();
+ loadSetting(stmt, key, customResources == null ? mContext.getResources().getString(resid)
+ : customResources.getString(resid));
+ }
+
+ private void loadRegionLockedBooleanSetting(SQLiteStatement stmt, String key, int resId) {
+ Resources customResources = getRegionLockedResources();
+ if (customResources == null) {
+ customResources = mContext.getResources();
+ }
+
+ loadSetting(stmt, key, customResources.getBoolean(resId) ? "1" : "0");
+ }
+
private void loadStringSetting(SQLiteStatement stmt, String key, int resid) {
loadSetting(stmt, key, mContext.getResources().getString(resid));
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index b9a9c24..ffe7623 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -36,8 +36,10 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.widget.LockPatternUtils;
+import cyanogenmod.providers.CMSettings;
import libcore.io.IoUtils;
import java.io.BufferedOutputStream;
@@ -159,6 +161,7 @@ public class SettingsBackupAgent extends BackupAgentHelper {
String key_mgmt = "";
boolean certUsed = false;
boolean hasWepKey = false;
+ boolean isEap = false;
final ArrayList<String> rawLines = new ArrayList<String>();
public static Network readFromStream(BufferedReader in) {
@@ -189,6 +192,9 @@ public class SettingsBackupAgent extends BackupAgentHelper {
ssid = line;
} else if (line.startsWith("key_mgmt=")) {
key_mgmt = line;
+ if (line.contains("EAP")) {
+ isEap = true;
+ }
} else if (line.startsWith("client_cert=")) {
certUsed = true;
} else if (line.startsWith("ca_cert=")) {
@@ -197,6 +203,8 @@ public class SettingsBackupAgent extends BackupAgentHelper {
certUsed = true;
} else if (line.startsWith("wep_")) {
hasWepKey = true;
+ } else if (line.startsWith("eap=")) {
+ isEap = true;
}
}
@@ -255,13 +263,13 @@ public class SettingsBackupAgent extends BackupAgentHelper {
// Now build the canonical config key paralleling the WifiConfiguration semantics
final String key;
if (types.get(KeyMgmt.WPA_PSK)) {
- key = bareSsid + KeyMgmt.strings[KeyMgmt.WPA_PSK];
+ key = bareSsid + "-" + KeyMgmt.strings[KeyMgmt.WPA_PSK];
} else if (types.get(KeyMgmt.WPA_EAP) || types.get(KeyMgmt.IEEE8021X)) {
- key = bareSsid + KeyMgmt.strings[KeyMgmt.WPA_EAP];
+ key = bareSsid + "-" + KeyMgmt.strings[KeyMgmt.WPA_EAP];
} else if (hasWepKey) {
- key = bareSsid + "WEP"; // hardcoded this way in WifiConfiguration
+ key = bareSsid + "-WEP"; // hardcoded this way in WifiConfiguration
} else {
- key = bareSsid + KeyMgmt.strings[KeyMgmt.NONE];
+ key = bareSsid + "-" + KeyMgmt.strings[KeyMgmt.NONE];
}
return key;
}
@@ -325,6 +333,13 @@ public class SettingsBackupAgent extends BackupAgentHelper {
continue;
}
}
+ // Don't propagate EAP network definitions
+ if (net.isEap) {
+ if (DEBUG_BACKUP) {
+ Log.v(TAG, "Skipping EAP network " + net.ssid + " / " + net.key_mgmt);
+ }
+ continue;
+ }
if (! mKnownNetworks.contains(net)) {
if (DEBUG_BACKUP) {
Log.v(TAG, "Adding " + net.ssid + " / " + net.key_mgmt);
@@ -353,6 +368,12 @@ public class SettingsBackupAgent extends BackupAgentHelper {
continue;
}
+ if (net.isEap) {
+ // Similarly, omit EAP network definitions to avoid propagating
+ // controlled enterprise network definitions.
+ continue;
+ }
+
net.write(w);
}
}
@@ -883,6 +904,37 @@ public class SettingsBackupAgent extends BackupAgentHelper {
Log.d(TAG, "Restored setting: " + destination + " : "+ key + "=" + value);
}
}
+
+ restoreCMSetting(cachedEntries);
+ }
+
+ private void restoreCMSetting(Map<String, String> cachedEntries) {
+ ContentValues cmSettingsValues = new ContentValues();
+ ContentResolver cr = getContentResolver();
+ for (String key : cachedEntries.keySet()) {
+ Uri uri = null;
+ if (ArrayUtils.contains(CMSettings.System.LEGACY_SYSTEM_SETTINGS, key)) {
+ uri = CMSettings.System.CONTENT_URI;
+ } else if (ArrayUtils.contains(CMSettings.Secure.LEGACY_SECURE_SETTINGS, key)) {
+ uri = CMSettings.Secure.CONTENT_URI;
+ } else if (ArrayUtils.contains(CMSettings.Global.LEGACY_GLOBAL_SETTINGS, key)) {
+ uri = CMSettings.Global.CONTENT_URI;
+ }
+ if (uri != null) {
+ String value = cachedEntries.get(key);
+ cmSettingsValues.clear();
+ cmSettingsValues.put(Settings.NameValueTable.NAME, key);
+ cmSettingsValues.put(Settings.NameValueTable.VALUE, value);
+ try {
+ cr.insert(uri, cmSettingsValues);
+ if (DEBUG) {
+ Log.d(TAG, "Restored cm setting: " + key + " : " + key + "=" + value);
+ }
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, "Failed to migrate " + key + " due to " + e.toString());
+ }
+ }
+ }
}
/**
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 73971ad..c075e0b 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -22,10 +22,12 @@ import android.app.AppOpsManager;
import android.app.backup.BackupManager;
import android.content.BroadcastReceiver;
import android.content.ContentProvider;
+import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -50,6 +52,7 @@ import android.os.Process;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
+import android.preference.PreferenceManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArrayMap;
@@ -72,7 +75,9 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
+import com.android.providers.settings.SettingsState.BaseSetting;
import com.android.providers.settings.SettingsState.Setting;
+import cyanogenmod.providers.CMSettings;
/**
* <p>
@@ -124,6 +129,8 @@ public class SettingsProvider extends ContentProvider {
private static final String TABLE_BOOKMARKS = "bookmarks";
private static final String TABLE_ANDROID_METADATA = "android_metadata";
+ private static final String HAS_REPLAYED_DEFAULTS_FROM_L = "has_replayed_defaults_from_L";
+
// The set of removed legacy tables.
private static final Set<String> REMOVED_LEGACY_TABLES = new ArraySet<>();
static {
@@ -226,17 +233,17 @@ public class SettingsProvider extends ContentProvider {
final int requestingUserId = getRequestingUserId(args);
switch (method) {
case Settings.CALL_METHOD_GET_GLOBAL: {
- Setting setting = getGlobalSetting(name);
+ BaseSetting setting = getGlobalSetting(name);
return packageValueForCallResult(setting);
}
case Settings.CALL_METHOD_GET_SECURE: {
- Setting setting = getSecureSetting(name, requestingUserId);
+ BaseSetting setting = getSecureSetting(name, requestingUserId);
return packageValueForCallResult(setting);
}
case Settings.CALL_METHOD_GET_SYSTEM: {
- Setting setting = getSystemSetting(name, requestingUserId);
+ BaseSetting setting = getSystemSetting(name, requestingUserId);
return packageValueForCallResult(setting);
}
@@ -294,7 +301,10 @@ public class SettingsProvider extends ContentProvider {
switch (args.table) {
case TABLE_GLOBAL: {
if (args.name != null) {
- Setting setting = getGlobalSetting(args.name);
+ BaseSetting setting = getGlobalSetting(args.name);
+ if (CMSettings.Global.shouldInterceptSystemProvider(args.name)) {
+ return forwardedQuery(setting, normalizedProjection, args.table);
+ }
return packageSettingForQuery(setting, normalizedProjection);
} else {
return getAllGlobalSettings(projection);
@@ -304,7 +314,10 @@ public class SettingsProvider extends ContentProvider {
case TABLE_SECURE: {
final int userId = UserHandle.getCallingUserId();
if (args.name != null) {
- Setting setting = getSecureSetting(args.name, userId);
+ BaseSetting setting = getSecureSetting(args.name, userId);
+ if (CMSettings.Secure.shouldInterceptSystemProvider(args.name)) {
+ return forwardedQuery(setting, normalizedProjection, args.table);
+ }
return packageSettingForQuery(setting, normalizedProjection);
} else {
return getAllSecureSettings(userId, projection);
@@ -314,7 +327,10 @@ public class SettingsProvider extends ContentProvider {
case TABLE_SYSTEM: {
final int userId = UserHandle.getCallingUserId();
if (args.name != null) {
- Setting setting = getSystemSetting(args.name, userId);
+ BaseSetting setting = getSystemSetting(args.name, userId);
+ if (CMSettings.System.shouldInterceptSystemProvider(args.name)) {
+ return forwardedQuery(setting, normalizedProjection, args.table);
+ }
return packageSettingForQuery(setting, normalizedProjection);
} else {
return getAllSystemSettings(userId, projection);
@@ -604,16 +620,32 @@ public class SettingsProvider extends ContentProvider {
}
}
- private Setting getGlobalSetting(String name) {
+ private BaseSetting getGlobalSetting(String name) {
if (DEBUG) {
Slog.v(LOG_TAG, "getGlobalSetting(" + name + ")");
}
// Get the value.
+ BaseSetting setting;
synchronized (mLock) {
- return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
+ setting = mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
UserHandle.USER_OWNER, name);
}
+
+ // If CMSettingsProvider owns this key, override the value
+ if (CMSettings.Global.shouldInterceptSystemProvider(name)) {
+ final ContentResolver cr = getContext().getContentResolver();
+ final String value = CMSettings.Global.
+ getStringForUser(cr, name, UserHandle.USER_OWNER);
+
+ if (setting == null) {
+ setting = new BaseSetting(name, value, null);
+ } else {
+ setting.update(value, null);
+ }
+ }
+
+ return setting;
}
private boolean updateGlobalSetting(String name, String value, int requestingUserId) {
@@ -650,6 +682,20 @@ public class SettingsProvider extends ContentProvider {
return false;
}
+ // If CMSettingsProvider wants to own this key, let it.
+ if (CMSettings.Global.shouldInterceptSystemProvider(name)) {
+ switch (operation) {
+ case MUTATION_OPERATION_INSERT:
+ case MUTATION_OPERATION_UPDATE:
+ final ContentResolver cr = getContext().getContentResolver();
+ return CMSettings.Global.putStringForUser(cr, name, value,
+ UserHandle.USER_OWNER);
+ case MUTATION_OPERATION_DELETE:
+ // unsupported
+ return false;
+ }
+ }
+
// Perform the mutation.
synchronized (mLock) {
switch (operation) {
@@ -713,7 +759,7 @@ public class SettingsProvider extends ContentProvider {
}
}
- private Setting getSecureSetting(String name, int requestingUserId) {
+ private BaseSetting getSecureSetting(String name, int requestingUserId) {
if (DEBUG) {
Slog.v(LOG_TAG, "getSecureSetting(" + name + ", " + requestingUserId + ")");
}
@@ -730,10 +776,25 @@ public class SettingsProvider extends ContentProvider {
}
// Get the value.
+ BaseSetting setting;
synchronized (mLock) {
- return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
+ setting = mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
owningUserId, name);
}
+
+ // If CMSettingsProvider owns this key, override the value
+ if (CMSettings.Secure.shouldInterceptSystemProvider(name)) {
+ final ContentResolver cr = getContext().getContentResolver();
+ final String value = CMSettings.Secure.getStringForUser(cr, name, owningUserId);
+
+ if (setting == null) {
+ setting = new BaseSetting(name, value, null);
+ } else {
+ setting.update(value, null);
+ }
+ }
+
+ return setting;
}
private boolean insertSecureSetting(String name, String value, int requestingUserId) {
@@ -788,6 +849,19 @@ public class SettingsProvider extends ContentProvider {
return updateLocationProvidersAllowedLocked(value, owningUserId);
}
+ // If CMSettingsProvider wants to own this key, let it.
+ if (CMSettings.Secure.shouldInterceptSystemProvider(name)) {
+ switch (operation) {
+ case MUTATION_OPERATION_INSERT:
+ case MUTATION_OPERATION_UPDATE:
+ final ContentResolver cr = getContext().getContentResolver();
+ return CMSettings.Secure.putStringForUser(cr, name, value, owningUserId);
+ case MUTATION_OPERATION_DELETE:
+ // unsupported
+ return false;
+ }
+ }
+
// Mutate the value.
synchronized (mLock) {
switch (operation) {
@@ -847,7 +921,7 @@ public class SettingsProvider extends ContentProvider {
}
}
- private Setting getSystemSetting(String name, int requestingUserId) {
+ private BaseSetting getSystemSetting(String name, int requestingUserId) {
if (DEBUG) {
Slog.v(LOG_TAG, "getSystemSetting(" + name + ", " + requestingUserId + ")");
}
@@ -859,10 +933,25 @@ public class SettingsProvider extends ContentProvider {
final int owningUserId = resolveOwningUserIdForSystemSettingLocked(callingUserId, name);
// Get the value.
+ BaseSetting setting;
synchronized (mLock) {
- return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SYSTEM,
+ setting = mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SYSTEM,
owningUserId, name);
}
+
+ // If CMSettingsProvider owns this key, override the value
+ if (CMSettings.System.shouldInterceptSystemProvider(name)) {
+ final ContentResolver cr = getContext().getContentResolver();
+ final String value = CMSettings.System.getStringForUser(cr, name, owningUserId);
+
+ if (setting == null) {
+ setting = new BaseSetting(name, value, null);
+ } else {
+ setting.update(value, null);
+ }
+ }
+
+ return setting;
}
private boolean insertSystemSetting(String name, String value, int requestingUserId) {
@@ -916,6 +1005,19 @@ public class SettingsProvider extends ContentProvider {
return false;
}
+ // If CMSettingsProvider wants to own this key, let it.
+ if (CMSettings.System.shouldInterceptSystemProvider(name)) {
+ switch (operation) {
+ case MUTATION_OPERATION_INSERT:
+ case MUTATION_OPERATION_UPDATE:
+ final ContentResolver cr = getContext().getContentResolver();
+ return CMSettings.System.putStringForUser(cr, name, value, owningUserId);
+ case MUTATION_OPERATION_DELETE:
+ // unsupported
+ return false;
+ }
+ }
+
// Mutate the value.
synchronized (mLock) {
switch (operation) {
@@ -1010,6 +1112,11 @@ public class SettingsProvider extends ContentProvider {
return;
}
+ if (CMSettings.System.shouldInterceptSystemProvider(name)) {
+ // this setting will be forwarded to CMSettingsProvider
+ return;
+ }
+
switch (operation) {
case MUTATION_OPERATION_INSERT:
// Insert updates.
@@ -1107,7 +1214,7 @@ public class SettingsProvider extends ContentProvider {
// skip prefix
value = value.substring(1);
- Setting settingValue = getSecureSetting(
+ BaseSetting settingValue = getSecureSetting(
Settings.Secure.LOCATION_PROVIDERS_ALLOWED, owningUserId);
String oldProviders = (settingValue != null) ? settingValue.getValue() : "";
@@ -1187,7 +1294,7 @@ public class SettingsProvider extends ContentProvider {
"get/set setting for user", null);
}
- private static Bundle packageValueForCallResult(Setting setting) {
+ private static Bundle packageValueForCallResult(BaseSetting setting) {
if (setting == null) {
return NULL_SETTING;
}
@@ -1215,7 +1322,31 @@ public class SettingsProvider extends ContentProvider {
throw new IllegalArgumentException("Invalid URI:" + uri);
}
- private static MatrixCursor packageSettingForQuery(Setting setting, String[] projection) {
+ private MatrixCursor forwardedQuery(BaseSetting setting, String[] projection, String table) {
+ if (setting == null) {
+ return new MatrixCursor(projection, 0);
+ }
+ MatrixCursor cursor = new MatrixCursor(projection, 1);
+ switch (table) {
+ case TABLE_SYSTEM:
+ setting.update(CMSettings.System.getString(getContext().getContentResolver(),
+ setting.getName()), setting.getPackageName());
+ break;
+ case TABLE_GLOBAL:
+ setting.update(CMSettings.Global.getString(getContext().getContentResolver(),
+ setting.getName()), setting.getPackageName());
+ break;
+ case TABLE_SECURE:
+ setting.update(CMSettings.Secure.getString(getContext().getContentResolver(),
+ setting.getName()), setting.getPackageName());
+ break;
+
+ }
+ appendSettingToCursor(cursor, setting);
+ return cursor;
+ }
+
+ private static MatrixCursor packageSettingForQuery(BaseSetting setting, String[] projection) {
if (setting == null) {
return new MatrixCursor(projection, 0);
}
@@ -1240,7 +1371,7 @@ public class SettingsProvider extends ContentProvider {
return projection;
}
- private static void appendSettingToCursor(MatrixCursor cursor, Setting setting) {
+ private static void appendSettingToCursor(MatrixCursor cursor, BaseSetting setting) {
final int columnCount = cursor.getColumnCount();
String[] values = new String[columnCount];
@@ -1855,7 +1986,11 @@ public class SettingsProvider extends ContentProvider {
}
private final class UpgradeController {
- private static final int SETTINGS_VERSION = 122;
+ private static final int SETTINGS_VERSION = 123;
+ /**
+ * This is the 12.1 database version (DO NOT INCREMENT)
+ */
+ private static final int CM_SETTINGS_DB_VERSION = 125;
private final int mUserId;
@@ -1869,11 +2004,28 @@ public class SettingsProvider extends ContentProvider {
SettingsRegistry.SETTINGS_TYPE_SECURE, mUserId);
// Try an update from the current state.
- final int oldVersion = secureSettings.getVersionLocked();
+ final int oldVersion = secureSettings.getVersionLocked(); //125
final int newVersion = SETTINGS_VERSION;
// If up do date - done.
- if (oldVersion == newVersion) {
+ //
+ // CYANOGENMOD
+ // We moved our settings out to another settings provider (CMSettingsProvider)
+ // however, we still have a problem of being a few versions ahead of AOSP.
+ // We could approach this in the manner we have previously, and bump the version
+ // to replay the defaults for specific os upgrade changes and have that maintenance
+ // overhead forever OR we can take the approach below:
+ //
+ // Logic as follows:
+ // Until version 125 of this "DATABASE"
+ // force replay AOSP defaults as they get introduced
+ // once 125 is hit, we never have to maintain this again.
+ if ((oldVersion == newVersion || oldVersion == CM_SETTINGS_DB_VERSION)) {
+ if (oldVersion == CM_SETTINGS_DB_VERSION && !hasReplayedDefaultsFromL()) {
+ forceReplayAOSPDefaults(mUserId);
+ forceMigrateProfilesEnabled(mUserId);
+ setDefaultsReplayedFromLFlag();
+ }
return;
}
@@ -1913,6 +2065,18 @@ public class SettingsProvider extends ContentProvider {
systemSettings.setVersionLocked(newVersion);
}
+ private boolean hasReplayedDefaultsFromL() {
+ SharedPreferences sharedPreferences = PreferenceManager
+ .getDefaultSharedPreferences(getContext());
+ return sharedPreferences.getBoolean(HAS_REPLAYED_DEFAULTS_FROM_L, false);
+ }
+
+ private void setDefaultsReplayedFromLFlag() {
+ SharedPreferences sharedPreferences = PreferenceManager
+ .getDefaultSharedPreferences(getContext());
+ sharedPreferences.edit().putBoolean(HAS_REPLAYED_DEFAULTS_FROM_L, true).apply();
+ }
+
private SettingsState getGlobalSettingsLocked() {
return getSettingsLocked(SETTINGS_TYPE_GLOBAL, UserHandle.USER_OWNER);
}
@@ -2007,11 +2171,74 @@ public class SettingsProvider extends ContentProvider {
}
currentVersion = 122;
}
+
+ if (currentVersion == 122) {
+ final SettingsState globalSettings = getGlobalSettingsLocked();
+ String defaultDisabledProfiles = (getContext().getResources().getString(
+ R.string.def_bluetooth_disabled_profiles));
+ globalSettings.insertSettingLocked(Settings.Global.BLUETOOTH_DISABLED_PROFILES,
+ defaultDisabledProfiles, SettingsState.SYSTEM_PACKAGE_NAME);
+ currentVersion = 123;
+ }
+
// vXXX: Add new settings above this point.
// Return the current version.
return currentVersion;
}
+
+ private void forceReplayAOSPDefaults(int userId) {
+ // v119: Reset zen + ringer mode.
+ if (userId == UserHandle.USER_OWNER) {
+ final SettingsState globalSettings = getGlobalSettingsLocked();
+ globalSettings.updateSettingLocked(Settings.Global.ZEN_MODE,
+ Integer.toString(Settings.Global.ZEN_MODE_OFF),
+ SettingsState.SYSTEM_PACKAGE_NAME);
+ globalSettings.updateSettingLocked(Settings.Global.MODE_RINGER,
+ Integer.toString(AudioManager.RINGER_MODE_NORMAL),
+ SettingsState.SYSTEM_PACKAGE_NAME);
+ }
+
+ // v120: Add double tap to wake setting.
+ SettingsState secureSettings = getSecureSettingsLocked(userId);
+ secureSettings.insertSettingLocked(Settings.Secure.DOUBLE_TAP_TO_WAKE,
+ getContext().getResources().getBoolean(
+ R.bool.def_double_tap_to_wake) ? "1" : "0",
+ SettingsState.SYSTEM_PACKAGE_NAME);
+
+ // Version 122: allow OEMs to set a default payment component in resources.
+ // Note that we only write the default if no default has been set;
+ // if there is, we just leave the default at whatever it currently is.
+ String defaultComponent = (getContext().getResources().getString(
+ R.string.def_nfc_payment_component));
+ Setting currentSetting = secureSettings.getSettingLocked(
+ Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT);
+ if (defaultComponent != null && !defaultComponent.isEmpty() &&
+ currentSetting == null) {
+ secureSettings.insertSettingLocked(
+ Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT,
+ defaultComponent,
+ SettingsState.SYSTEM_PACKAGE_NAME);
+ }
+ }
+
+ private void forceMigrateProfilesEnabled(int userId) {
+ final SettingsState systemSettings = getSystemSettingsLocked(userId);
+ final Setting settingLocked = systemSettings.getSettingLocked(
+ CMSettings.System.SYSTEM_PROFILES_ENABLED);
+ if (settingLocked != null) {
+ final String value = settingLocked.getValue();
+ if (value != null) {
+ CMSettings.System.putStringForUser(getContext().getContentResolver(),
+ CMSettings.System.SYSTEM_PROFILES_ENABLED,
+ value,
+ userId);
+ systemSettings.deleteSettingLocked(
+ CMSettings.System.SYSTEM_PROFILES_ENABLED);
+ }
+ }
+ }
+
}
}
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index 95d7772..8a25c65 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -552,22 +552,21 @@ final class SettingsState {
}
}
- public final class Setting {
- private String name;
- private String value;
- private String packageName;
- private String id;
+ public static class BaseSetting {
+ protected String name;
+ protected String value;
+ protected String packageName;
+ protected String id;
- public Setting(String name, String value, String packageName) {
- init(name, value, packageName, String.valueOf(mNextId++));
+ protected BaseSetting() {
+ // for sub classes
}
- public Setting(String name, String value, String packageName, String id) {
- mNextId = Math.max(mNextId, Long.valueOf(id) + 1);
- init(name, value, packageName, id);
+ public BaseSetting(String name, String value, String packageName) {
+ init(name, value, packageName, null);
}
- private void init(String name, String value, String packageName, String id) {
+ protected void init(String name, String value, String packageName, String id) {
this.name = name;
this.value = value;
this.packageName = packageName;
@@ -596,6 +595,33 @@ final class SettingsState {
}
this.value = value;
this.packageName = packageName;
+ return true;
+ }
+ }
+
+ public final class Setting extends BaseSetting {
+
+ public Setting(String name, String value, String packageName) {
+ init(name, value, packageName, String.valueOf(mNextId++));
+ }
+
+ public Setting(String name, String value, String packageName, String id) {
+ mNextId = Math.max(mNextId, Long.valueOf(id) + 1);
+ init(name, value, packageName, id);
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public boolean update(String value, String packageName) {
+ if (Objects.equal(value, this.value)) {
+ return false;
+ }
+ this.value = value;
+ this.packageName = packageName;
this.id = String.valueOf(mNextId++);
return true;
}
diff --git a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
index e453cf5..2cd1f29 100644
--- a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
+++ b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
@@ -76,7 +76,7 @@ public class SharedStorageAgent extends FullBackupAgent {
if (slash > 0) {
try {
int i = Integer.parseInt(relpath.substring(0, slash));
- if (i <= mVolumes.length) {
+ if (i < mVolumes.length) {
outFile = new File(mVolumes[i].getPath(), relpath.substring(slash + 1));
if (DEBUG) Slog.i(TAG, " => " + outFile.getAbsolutePath());
} else {
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 6a20733..61504b3 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -48,6 +48,8 @@
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="cyanogenmod.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<!-- Development tool permissions granted to the shell. -->
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
@@ -98,7 +100,6 @@
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
<uses-permission android:name="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"/>
- <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
<uses-permission android:name="android.permission.CHANGE_APP_IDLE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
@@ -107,6 +108,7 @@
<uses-permission android:name="android.permission.REGISTER_CONNECTION_MANAGER" />
<uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
<uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
+ <uses-permission android:name="cyanogenmod.permission.ACCESS_THEME_MANAGER" />
<application android:label="@string/app_label">
<provider
@@ -142,6 +144,7 @@
android:name=".BugreportReceiver"
android:permission="android.permission.DUMP">
<intent-filter>
+ <action android:name="android.intent.action.BUGREPORT_STARTED" />
<action android:name="android.intent.action.BUGREPORT_FINISHED" />
</intent-filter>
</receiver>
diff --git a/packages/Shell/res/values-as-rIN/strings.xml b/packages/Shell/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-as-rIN/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-ast-rES/strings.xml b/packages/Shell/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..829ce93
--- /dev/null
+++ b/packages/Shell/res/values-ast-rES/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <string name="app_label">Shell</string>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <string name="bugreport_finished_title">Informe de fallu capturáu</string>
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">Esliza a esquierda pa compartir l\'informe de fallu</string>
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="default">Toca pa compartir l\'informe de fallu</string>
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <string name="bugreport_confirm">Los informes de fallos contienen datos de los distintos ficheros de rexistru del sistema, incluyida información personal y privada. Comparte los informes de fallos namái con aplicaciones y usuarios nos que confíes.</string>
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <string name="bugreport_confirm_repeat">Amosar esti mensaxe la próxima vegada</string>
+ <!-- Title for documents backend that offers bugreports. -->
+ <string name="bugreport_storage_title">Informes de fallu</string>
+</resources>
diff --git a/packages/Shell/res/values-be/strings.xml b/packages/Shell/res/values-be/strings.xml
new file mode 100644
index 0000000..aa0b3d8
--- /dev/null
+++ b/packages/Shell/res/values-be/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <string name="app_label">Абалонка</string>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <string name="bugreport_finished_title">Справаздача пра збой захавана</string>
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">Правядзіце пальцам налева, каб падзяліцца сваёй справаздачай пра збой</string>
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="default">Націсніце, каб падзяліцца сваёй справаздачай пра збой</string>
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <string name="bugreport_confirm">Справаздача пра памылку ўтрымлівае дадзеныя з файлаў сістэмнай гiсторыi, у тым ліку персанальную і прыватную інфармацыю. Дзялiцеся справаздачамi пра памылкі толькi з праверанымi карыстальнiкамi i праграмамі.</string>
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <string name="bugreport_confirm_repeat"> Паказваць гэта паведамленне у наступны раз</string>
+ <!-- Title for documents backend that offers bugreports. -->
+ <string name="bugreport_storage_title">Справаздача пра памылкі</string>
+</resources>
diff --git a/packages/Shell/res/values-br-rFR/strings.xml b/packages/Shell/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-br-rFR/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-bs-rBA/strings.xml b/packages/Shell/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-bs-rBA/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-csb-rPL/strings.xml b/packages/Shell/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-csb-rPL/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-cy/strings.xml b/packages/Shell/res/values-cy/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-cy/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-en-rPT/strings.xml b/packages/Shell/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-en-rPT/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-eo/strings.xml b/packages/Shell/res/values-eo/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-eo/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-es-rCO/strings.xml b/packages/Shell/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-es-rCO/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-es-rMX/strings.xml b/packages/Shell/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-es-rMX/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-frp-rIT/strings.xml b/packages/Shell/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-frp-rIT/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-fy-rNL/strings.xml b/packages/Shell/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-fy-rNL/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-ga-rIE/strings.xml b/packages/Shell/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-ga-rIE/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-gd-rGB/strings.xml b/packages/Shell/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-gd-rGB/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-ku/strings.xml b/packages/Shell/res/values-ku/strings.xml
new file mode 100644
index 0000000..455fbb2
--- /dev/null
+++ b/packages/Shell/res/values-ku/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <string name="app_label">توێکڵ</string>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <string name="bugreport_finished_title">ڕاپۆرتی کەموکورتیەکان وێنەگیرا</string>
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="default">ده‌ستی لێده‌ بۆ په‌رشکردنی ڕاپۆرتی که‌موکوڕییه‌کانت</string>
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <string name="bugreport_confirm">ڕاپۆرتى که‌موکوڕییه‌کان داتا له‌ خۆ ده‌گرێت لە تۆمارى سيستم فايلی جۆراوجۆره‌وه‌، هەروەك زانياريى تايبەت و كەسى. تۆماری که‌موکوڕییه‌کان ته‌نها له‌گه‌ڵ ئه‌و که‌س و به‌رنامانه‌دا په‌رش بکه‌ که‌ متمانه‌ت پێیانه‌.</string>
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <string name="bugreport_confirm_repeat">جاری داهاتوو ئه‌م په‌یامه‌ پیشان بده‌</string>
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-lb/strings.xml b/packages/Shell/res/values-lb/strings.xml
new file mode 100644
index 0000000..04e5358
--- /dev/null
+++ b/packages/Shell/res/values-lb/strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <string name="app_label">Shell</string>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <string name="bugreport_finished_title">Feelerbericht opgefaangen</string>
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">No lénks wësche fir de Feelerbericht ze deelen</string>
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="default">Drécken, fir de Feelerbericht ze deelen</string>
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <string name="bugreport_confirm">Feelerberichter hunn Daten aus de verschiddene Protokollfichiere vum System, dorënner perséinlech a privat Informatiounen. Deel just Feelerberichter mat Appen a Leit deenen s du traus.</string>
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <string name="bugreport_confirm_repeat">Weis dëse Message déi nächst Kéier un</string>
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-oc-rFR/strings.xml b/packages/Shell/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-oc-rFR/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-or-rIN/strings.xml b/packages/Shell/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..a4de2af
--- /dev/null
+++ b/packages/Shell/res/values-or-rIN/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <!-- Title for documents backend that offers bugreports. -->
+</resources>
diff --git a/packages/Shell/res/values-ug/strings.xml b/packages/Shell/res/values-ug/strings.xml
new file mode 100644
index 0000000..366d73e
--- /dev/null
+++ b/packages/Shell/res/values-ug/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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>
+ <string name="app_label">Shell</string>
+ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
+ <string name="bugreport_finished_title">خاتالىق دوكلاتى تۇتۇلدى</string>
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">سولغا سىيرىسىڭىز خاتالىق دوكلاتىڭىزنى ھەمبەھىرلەيدۇ</string>
+ <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="default">چېكىپلا خاتالىق دوكلاتىنى ھەمبەھىرلىيەلەيسىز</string>
+ <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
+ <string name="bugreport_confirm">خاتالىق دوكلاتىدىكى سانلىق مەلۇماتلار سىستېمىنىڭ ھەر قايسى خاتىرە ھۆججەتلىرىدىن كەلگەن بولۇپ، ئۇنىڭدا شەخسىي ئۇچۇر ۋە شەخسىيەت ئۇچۇرلىرى بار. پەقەت سىز ئىشىنىدىغان ئەپ ۋە ئىشلەتكۈچى بىلەنلا خاتالىق دوكلاتىنى ھەمبەھىرلىنىڭ.</string>
+ <!-- Checkbox that indicates this dialog should be shown again when the next bugreport is taken. [CHAR LIMIT=50] -->
+ <string name="bugreport_confirm_repeat">بۇ ئۇچۇرنى كېيىنكى قېتىم كۆرسەت</string>
+ <!-- Title for documents backend that offers bugreports. -->
+ <string name="bugreport_storage_title">مەسىلە مەلۇم قىلىش</string>
+</resources>
diff --git a/packages/Shell/res/values/cm_strings.xml b/packages/Shell/res/values/cm_strings.xml
new file mode 100644
index 0000000..0d81dd6
--- /dev/null
+++ b/packages/Shell/res/values/cm_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The CyanogenMod 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>
+ <!-- Text to let user know a bug report is currently being collected -->
+ <string name="notification_bug_report_active_title">Collecting bug report\u2026</string>
+ <string name="notification_bug_report_active_text">Please wait a few minutes</string>
+</resources>
diff --git a/packages/Shell/src/com/android/shell/BugreportReceiver.java b/packages/Shell/src/com/android/shell/BugreportReceiver.java
index d83b516..6e39111 100644
--- a/packages/Shell/src/com/android/shell/BugreportReceiver.java
+++ b/packages/Shell/src/com/android/shell/BugreportReceiver.java
@@ -65,6 +65,8 @@ public class BugreportReceiver extends BroadcastReceiver {
private static final String EXTRA_BUGREPORT = "android.intent.extra.BUGREPORT";
private static final String EXTRA_SCREENSHOT = "android.intent.extra.SCREENSHOT";
+ public static final String ACTION_BUGREPORT_STARTED = "android.intent.action.BUGREPORT_STARTED";
+
/**
* Always keep the newest 8 bugreport files; 4 reports and 4 screenshots are
* roughly 17MB of disk space.
@@ -79,6 +81,19 @@ public class BugreportReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final Configuration conf = context.getResources().getConfiguration();
+ if (ACTION_BUGREPORT_STARTED.equals(intent.getAction())) {
+ Notification.Builder builder = new Notification.Builder(context)
+ .setSmallIcon(com.android.internal.R.drawable.stat_sys_adb)
+ .setOngoing(true)
+ .setProgress(0, 0, true)
+ .setContentTitle(context
+ .getString(R.string.notification_bug_report_active_title))
+ .setContentText(context
+ .getString(R.string.notification_bug_report_active_text));
+ NotificationManager.from(context).notify(TAG, 0, builder.build());
+ return;
+ }
+
final File bugreportFile = getFileExtra(intent, EXTRA_BUGREPORT);
final File screenshotFile = getFileExtra(intent, EXTRA_SCREENSHOT);
diff --git a/packages/StatementService/res/values-ast-rES/strings.xml b/packages/StatementService/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..dcf9f6e
--- /dev/null
+++ b/packages/StatementService/res/values-ast-rES/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="service_name">Serviciu de verificación d\'Intención de filtru</string>
+</resources>
diff --git a/packages/StatementService/res/values-ug/strings.xml b/packages/StatementService/res/values-ug/strings.xml
new file mode 100644
index 0000000..bc39d79
--- /dev/null
+++ b/packages/StatementService/res/values-ug/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="service_name">دەلىللەش مۇلازىمىتىنى ئۆتكۈزۋېتىشنى سىناپ بېقىش</string>
+</resources>
diff --git a/packages/SystemUI/Android.mk b/packages/SystemUI/Android.mk
index 51fea2a..b614975 100644
--- a/packages/SystemUI/Android.mk
+++ b/packages/SystemUI/Android.mk
@@ -6,8 +6,14 @@ LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
src/com/android/systemui/EventLogTags.logtags
-LOCAL_STATIC_JAVA_LIBRARIES := Keyguard
+LOCAL_STATIC_JAVA_LIBRARIES := Keyguard \
+ org.cyanogenmod.platform.internal \
+ android-support-v7-palette \
+ android-support-v4 \
+ uicommon
+
LOCAL_JAVA_LIBRARIES := telephony-common
+LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest_cm.xml
LOCAL_PACKAGE_NAME := SystemUI
LOCAL_CERTIFICATE := platform
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 80f4d4c..d45b52b 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -41,7 +41,6 @@
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
- <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
@@ -50,6 +49,7 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+ <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_AVRCP_CT_DATA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
@@ -135,6 +135,9 @@
android:protectionLevel="signature" />
<uses-permission android:name="com.android.systemui.permission.SELF" />
+ <!-- blur surface -->
+ <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
+
<application
android:name=".SystemUIApplication"
android:persistent="true"
@@ -177,13 +180,6 @@
</intent-filter>
</receiver>
- <receiver android:name=".qs.tiles.HotspotTile$APChangedReceiver"
- androidprv:primaryUserOnly="true">
- <intent-filter>
- <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
- </intent-filter>
- </receiver>
-
<activity android:name=".usb.UsbStorageActivity"
android:label="@*android:string/usb_storage_activity_title"
android:excludeFromRecents="true">
@@ -397,6 +393,20 @@
</intent-filter>
</activity>
+ <activity
+ android:name=".settings.NotificationBrightnessDialog"
+ android:label="@string/quick_settings_brightness_dialog_title"
+ android:theme="@android:style/Theme.DeviceDefault.Dialog"
+ android:finishOnCloseSystemDialogs="true"
+ android:launchMode="singleInstance"
+ android:excludeFromRecents="true"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.SHOW_NOTIFICATION_BRIGHTNESS_DIALOG" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<!-- Doze with notifications, run in main sysui process for every user -->
<service
android:name=".doze.DozeService"
@@ -411,5 +421,6 @@
<action android:name="com.android.systemui.action.CLEAR_TUNER" />
</intent-filter>
</receiver>
+
</application>
</manifest>
diff --git a/packages/SystemUI/AndroidManifest_cm.xml b/packages/SystemUI/AndroidManifest_cm.xml
new file mode 100644
index 0000000..bb1c70d
--- /dev/null
+++ b/packages/SystemUI/AndroidManifest_cm.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (c) 2015 The CyanogenMod 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.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.systemui">
+
+ <uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="cyanogenmod.permission.WRITE_SECURE_SETTINGS" />
+ <!-- Quick Settings Tile Listener -->
+ <uses-permission android:name="cyanogenmod.permission.BIND_CUSTOM_TILE_LISTENER_SERVICE"/>
+
+ <!-- Development shortcut -->
+ <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
+ <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
+
+ <!-- Sync tile -->
+ <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+
+ <!-- Publish dynamic tiles -->
+ <uses-permission android:name="cyanogenmod.permission.PUBLISH_CUSTOM_TILE" />
+
+ <uses-permission android:name="cyanogenmod.permission.HARDWARE_ABSTRACTION_ACCESS" />
+
+ <!-- Visualizer -->
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
+
+ <!-- Performance Manager -->
+ <uses-permission android:name="cyanogenmod.permission.PERFORMANCE_ACCESS" />
+
+ <!-- Live lock screen manager -->
+ <uses-permission android:name="cyanogenmod.permission.LIVE_LOCK_SCREEN_MANAGER_ACCESS_PRIVATE" />
+
+ <!-- Weather Provider -->
+ <uses-permission android:name="cyanogenmod.permission.READ_WEATHER" />
+
+ <!-- Theme manager -->
+ <uses-permission android:name="cyanogenmod.permission.ACCESS_THEME_MANAGER" />
+
+ <!-- NFC Tile -->
+ <uses-permission android:name="android.permission.NFC" />
+
+ <application>
+ <provider android:name=".cm.SpamMessageProvider"
+ android:permission="android.permission.INTERACT_ACROSS_USERS_FULL"
+ android:exported="true"
+ android:authorities="com.cyanogenmod.spam" />
+
+ <activity
+ android:name=".cm.LockscreenShortcutsActivity"
+ android:icon="@drawable/tuner"
+ android:label="@string/lockscreen_targets_message"
+ android:theme="@android:style/Theme.Material.Settings"
+ android:process=":cmsettings"
+ android:exported="true" />
+
+ <activity android:name=".tuner.TunerActivity$DemoModeActivity"
+ android:icon="@drawable/tuner"
+ android:theme="@android:style/Theme.Material.Settings"
+ android:label="@string/demo_mode"
+ android:process=":tuner"
+ android:exported="true"
+ android:permission="android.permission.STATUS_BAR" />
+
+ <activity android:name=".tuner.TunerActivity$StatusBarIconActivity"
+ android:icon="@drawable/tuner"
+ android:theme="@android:style/Theme.Material.Settings"
+ android:label="@string/status_bar"
+ android:process=":tuner"
+ android:exported="true"
+ android:permission="android.permission.STATUS_BAR" />
+ </application>
+</manifest>
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index 47e24e8..d6944a5 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -13,3 +13,5 @@
-keep class com.android.systemui.statusbar.phone.PhoneStatusBar
-keep class com.android.systemui.statusbar.tv.TvStatusBar
-keep class com.android.systemui.recents.*
+
+-dontwarn com.cyngn.**
diff --git a/packages/SystemUI/res/anim/battery_circle.xml b/packages/SystemUI/res/anim/battery_circle.xml
new file mode 100644
index 0000000..e76fdbe
--- /dev/null
+++ b/packages/SystemUI/res/anim/battery_circle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<objectAnimator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:interpolator/linear"
+ android:propertyName="trimPathEnd"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/battery_landscape.xml b/packages/SystemUI/res/anim/battery_landscape.xml
new file mode 100644
index 0000000..9583acb
--- /dev/null
+++ b/packages/SystemUI/res/anim/battery_landscape.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<objectAnimator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:interpolator/linear"
+ android:propertyName="pathData"
+ android:valueFrom="@string/battery_landscape_path_empty"
+ android:valueTo="@string/battery_landscape_path_full"
+ android:valueType="pathType"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/battery_portrait.xml b/packages/SystemUI/res/anim/battery_portrait.xml
new file mode 100644
index 0000000..c1a80bb
--- /dev/null
+++ b/packages/SystemUI/res/anim/battery_portrait.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<objectAnimator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:interpolator/linear"
+ android:propertyName="pathData"
+ android:valueFrom="@string/battery_portrait_path_empty"
+ android:valueTo="@string/battery_portrait_path_full"
+ android:valueType="pathType"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtomed.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtomed.xml
new file mode 100644
index 0000000..1479734
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtomed.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="250"
+android:propertyName="rotation"
+android:valueFrom="-180"
+android:valueTo="-90"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtoshort.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtoshort.xml
new file mode 100644
index 0000000..4bc7324
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_longtoshort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="400"
+android:propertyName="rotation"
+android:valueFrom="-180"
+android:valueTo="0"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort.xml
new file mode 100644
index 0000000..ea2e135
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="400"
+android:propertyName="rotation"
+android:valueFrom="-90"
+android:valueTo="0"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort_reverse.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort_reverse.xml
new file mode 100644
index 0000000..4b252cb
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_medtoshort_reverse.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="250"
+android:propertyName="rotation"
+android:valueFrom="-90"
+android:valueTo="0"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_shorttolong.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_shorttolong.xml
new file mode 100644
index 0000000..72103e4
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_shorttolong.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="400"
+android:propertyName="rotation"
+android:valueFrom="0"
+android:valueTo="-180"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_staymed.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_staymed.xml
new file mode 100644
index 0000000..186179c
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_staymed.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="250"
+android:propertyName="rotation"
+android:valueFrom="-90"
+android:valueTo="-90"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_tolong.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_tolong.xml
new file mode 100644
index 0000000..6fa46e9
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_tolong.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="250"
+android:propertyName="rotation"
+android:valueFrom="-90"
+android:valueTo="-180"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_screen_timeout_tomed.xml b/packages/SystemUI/res/anim/ic_qs_screen_timeout_tomed.xml
new file mode 100644
index 0000000..7ee79ba
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_screen_timeout_tomed.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+
+android:duration="250"
+android:propertyName="rotation"
+android:valueFrom="0"
+android:valueTo="-90"/> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_cross_anim.xml b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_cross_anim.xml
new file mode 100755
index 0000000..4e5fbe5
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_cross_anim.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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.
+-->
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+<objectAnimator
+ android:duration="350"
+ android:propertyName="pathData"
+ android:valueFrom="M 4.4 3 L 4.7 3.3"
+ android:valueTo="M 4.4 3 L 21 19.6"
+ android:valueType="pathType"
+ android:interpolator="@interpolator/ic_hotspot_disable_cross_1_pathdata_interpolator" />
+<objectAnimator
+ android:duration="17"
+ android:propertyName="strokeAlpha"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:interpolator="@android:interpolator/linear" />
+</set>
diff --git a/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_mask_anim.xml b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_mask_anim.xml
new file mode 100755
index 0000000..977caec
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_mask_anim.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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.
+-->
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+<objectAnimator
+ android:duration="350"
+ android:propertyName="pathData"
+ android:valueFrom="M24,24H0V0h1.4l2.9,3l1.4-1.4L4.2,0H24V24z"
+ android:valueTo="M24,24H0V0h1.4l19.8,19.8l1.4-1.4L4.2,0H24V24z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+</set> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_root_anim.xml b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_root_anim.xml
new file mode 100755
index 0000000..4e63d73
--- /dev/null
+++ b/packages/SystemUI/res/anim/ic_qs_tile_delete_disable_root_anim.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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.
+-->
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+<objectAnimator
+ android:duration="350"
+ android:propertyName="alpha"
+ android:valueFrom="1.0"
+ android:valueTo="0.3"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+</set> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_mini_settings.png b/packages/SystemUI/res/drawable-hdpi/ic_mini_settings.png
new file mode 100755
index 0000000..4759a1c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_mini_settings.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
index a93916f..5bde6ef 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add.png
new file mode 100644
index 0000000..66e0c12
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_land.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_land.png
new file mode 100644
index 0000000..63da6d2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_side.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_side.png
new file mode 100644
index 0000000..956ebe4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_add_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_side.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_side.png
new file mode 100644
index 0000000..0d12637
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_left.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_left.png
new file mode 100755
index 0000000..ad9ae23
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_left.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_right.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_right.png
new file mode 100755
index 0000000..5324ad9
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_ime_right.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big.png
new file mode 100644
index 0000000..5b30293
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big_land.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big_land.png
new file mode 100644
index 0000000..99413a8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_menu_big_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_recent_side.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_recent_side.png
new file mode 100644
index 0000000..24ad426
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_recent_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png
new file mode 100644
index 0000000..b31c2c7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000..5ad767c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_side.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_side.png
new file mode 100644
index 0000000..f8e9b08
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png
deleted file mode 100644
index 7b0fcc7..0000000
--- a/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png
deleted file mode 100644
index 73e9c96..0000000
--- a/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_mini_settings.png b/packages/SystemUI/res/drawable-mdpi/ic_mini_settings.png
new file mode 100755
index 0000000..878169b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_mini_settings.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
index 7ae6079..c8c8102 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add.png
new file mode 100644
index 0000000..cf9fda6
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_land.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_land.png
new file mode 100644
index 0000000..ec8dfa4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_side.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_side.png
new file mode 100644
index 0000000..6231b21
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_add_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_side.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_side.png
new file mode 100644
index 0000000..5854b38
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_left.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_left.png
new file mode 100755
index 0000000..1f08402
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_left.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_right.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_right.png
new file mode 100755
index 0000000..7626499
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_ime_right.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big.png
new file mode 100644
index 0000000..c2dd22b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big_land.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big_land.png
new file mode 100644
index 0000000..4345844
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_menu_big_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_recent_side.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_recent_side.png
new file mode 100644
index 0000000..286bd00
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_recent_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png
new file mode 100644
index 0000000..885c130
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000..2487dfb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_side.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_side.png
new file mode 100644
index 0000000..0ff41f5
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png
deleted file mode 100644
index a02e21c..0000000
--- a/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png
deleted file mode 100644
index 4af2617..0000000
--- a/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_mini_settings.png b/packages/SystemUI/res/drawable-xhdpi/ic_mini_settings.png
new file mode 100755
index 0000000..84807e8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_mini_settings.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
index aae807b..77eeda1 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add.png
new file mode 100644
index 0000000..75ba404
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_land.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_land.png
new file mode 100644
index 0000000..30f4415
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_side.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_side.png
new file mode 100644
index 0000000..916fe9a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_add_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_side.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_side.png
new file mode 100644
index 0000000..7504d32
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_left.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_left.png
new file mode 100755
index 0000000..4183e20
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_left.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_right.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_right.png
new file mode 100755
index 0000000..ab1c7b4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_ime_right.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big.png
new file mode 100644
index 0000000..83f8d78
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big_land.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big_land.png
new file mode 100644
index 0000000..fe74ae9
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_menu_big_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_recent_side.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_recent_side.png
new file mode 100644
index 0000000..db596cc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_recent_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png
new file mode 100644
index 0000000..007faa3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000..e997c37
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_side.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_side.png
new file mode 100644
index 0000000..69f1a0b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_side.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png
deleted file mode 100644
index 24bdbb6..0000000
--- a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png
deleted file mode 100644
index 6ecd2d3..0000000
--- a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_mini_settings.png b/packages/SystemUI/res/drawable-xxhdpi/ic_mini_settings.png
new file mode 100755
index 0000000..78bbc25
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_mini_settings.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png
index fa7de0e..ea09774 100644
--- a/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add.png
new file mode 100644
index 0000000..af182a6
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add_land.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add_land.png
new file mode 100644
index 0000000..cb601f3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_add_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_left.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_left.png
new file mode 100644
index 0000000..08cbeef
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_left.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_right.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_right.png
new file mode 100644
index 0000000..db4e888
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_ime_right.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big.png
new file mode 100644
index 0000000..9664962
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big_land.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big_land.png
new file mode 100644
index 0000000..bb677dc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_menu_big_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search.png
new file mode 100644
index 0000000..9fcc72d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000..b2ae541
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_search_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image.png
deleted file mode 100644
index 5e733ef..0000000
--- a/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image_error.png
deleted file mode 100644
index ecc2c83..0000000
--- a/packages/SystemUI/res/drawable-xxhdpi/stat_notify_image_error.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxxhdpi/ic_mini_settings.png b/packages/SystemUI/res/drawable-xxxhdpi/ic_mini_settings.png
new file mode 100755
index 0000000..6a6536e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xxxhdpi/ic_mini_settings.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable/cid.xml b/packages/SystemUI/res/drawable/cid.xml
new file mode 100644
index 0000000..614a050
--- /dev/null
+++ b/packages/SystemUI/res/drawable/cid.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <group>
+ <path
+ android:name="torso"
+ android:pathData="M35.616,28.128l-4.185-11.17c-0.37-0.966-1.233-1.561-2.11-1.862c-0.638-0.219-1.94-0.47-4.366-0.59h-1.91 c-2.427,0.12-3.729,0.371-4.367,0.59c-0.877,0.301-1.74,0.896-2.11,1.862l-4.185,11.17c-0.496,1.122,0.396,1.59,1.148,1.385 c0.809-0.221,1.518-0.506,2.084-1.866c0.309-0.742,2.818-7.124,2.818-7.124l-1.542,27.45c0,0,0.603,0,2.095,0 c0.967,0,2.209-1.01,2.419-3.358l0.931-12.818h0.709h0.104h0.562h0.241h0.005h0.085h0.005h0.241h0.562h0.104h0.709l0.931,12.818 c0.21,2.348,1.452,3.358,2.419,3.358c1.492,0,2.095,0,2.095,0l-1.542-27.45c0,0,2.509,6.382,2.818,7.124 c0.566,1.36,1.275,1.645,2.084,1.866C35.221,29.718,36.112,29.25,35.616,28.128Z M24,25.331c-1.817,0-3.295-1.478-3.295-3.295 c0-1.817,1.478-3.295,3.295-3.295c1.817,0,3.295,1.478,3.295,3.295C27.295,23.853,25.817,25.331,24,25.331z M26.616,22.036 c0,1.443-1.174,2.616-2.616,2.616c-1.443,0-2.616-1.174-2.616-2.616c0-1.442,1.174-2.616,2.616-2.616 C25.442,19.42,26.616,20.593,26.616,22.036z"
+ android:fillColor="#FFFFFF" />
+ <path
+ android:name="head"
+ android:pathData="M29.081,3.012l0.962-2.35c0.096-0.235-0.016-0.503-0.251-0.599c-0.235-0.096-0.503,0.016-0.599,0.251l-0.997,2.435 c-1.1-0.252-2.503-0.348-4.18-0.348v0.006h0V2.4c-0.219,0-0.432,0.002-0.642,0.006h-0.001c-1.396,0.023-2.581,0.124-3.537,0.343 l-0.997-2.435c-0.096-0.235-0.364-0.347-0.599-0.251c-0.235,0.096-0.347,0.364-0.251,0.599l0.962,2.35 c-1.277,0.483-1.955,1.3-1.955,2.612v2.752V9.09v0.784c0,2.411,2.284,3.151,6.377,3.218v0.004h0.254 c0.128,0.001,0.258,0.002,0.389,0.002v-0.002h0v0.002c0.131,0,0.261-0.001,0.389-0.002h0.018c4.242-0.042,6.613-0.764,6.613-3.221 V9.09V8.376V5.624C31.037,4.311,30.358,3.495,29.081,3.012Z M20.407,9.78c-1.16,0-2.1-0.94-2.1-2.1c0-1.16,0.94-2.1,2.1-2.1 c1.16,0,2.1,0.94,2.1,2.1C22.507,8.84,21.567,9.78,20.407,9.78z M24.237,11.303h-0.443c-0.326,0-0.591-0.264-0.591-0.591 c0-0.012,0.003-0.024,0.004-0.036h1.617c0.001,0.012,0.004,0.023,0.004,0.036C24.828,11.039,24.563,11.303,24.237,11.303z M27.625,9.78c-1.16,0-2.1-0.94-2.1-2.1c0-1.16,0.94-2.1,2.1-2.1c1.16,0,2.1,0.94,2.1,2.1C29.724,8.84,28.784,9.78,27.625,9.78z"
+ android:fillColor="#FFFFFF" />
+ </group>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_battery_bolt.xml b/packages/SystemUI/res/drawable/ic_battery_bolt.xml
new file mode 100644
index 0000000..9da9bb5
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_bolt.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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"
+ android:viewportHeight="24"
+ android:tint="@color/batterymeter_bolt_color">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M10.5,7h5l-2,4h3l-7,6l2-5H8.5L10.5,7z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_circle.xml b/packages/SystemUI/res/drawable/ic_battery_circle.xml
new file mode 100644
index 0000000..8f39adb
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_circle.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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
+ android:id="@+id/battery_frame"
+ android:drawable="@drawable/ic_battery_circle_frame"/>
+
+ <item
+ android:id="@+id/battery_fill"
+ android:drawable="@drawable/ic_battery_circle_avd"/>
+
+ <item
+ android:id="@+id/battery_charge_indicator"
+ android:drawable="@drawable/ic_battery_bolt"/>
+
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_circle_avd.xml b/packages/SystemUI/res/drawable/ic_battery_circle_avd.xml
new file mode 100644
index 0000000..5e8fb1b
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_circle_avd.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_battery_circle_fill" >
+
+ <target
+ android:name="battery_level"
+ android:animation="@anim/battery_circle" />
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_circle_fill.xml b/packages/SystemUI/res/drawable/ic_battery_circle_fill.xml
new file mode 100644
index 0000000..6944535
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_circle_fill.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <!-- Path will be tinted based on battery level -->
+ <path
+ android:name="battery_level"
+ android:strokeColor="#000000"
+ android:strokeLineJoin="round"
+ android:strokeWidth="3"
+ android:pathData="@string/battery_circle_path" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_circle_frame.xml b/packages/SystemUI/res/drawable/ic_battery_circle_frame.xml
new file mode 100644
index 0000000..675c030
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_circle_frame.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <!-- Path will be tinted based on light/dark modes -->
+ <path
+ android:name="frame"
+ android:strokeColor="#000000"
+ android:strokeLineJoin="round"
+ android:strokeWidth="3"
+ android:pathData="@string/battery_circle_path"/>
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_landscape.xml b/packages/SystemUI/res/drawable/ic_battery_landscape.xml
new file mode 100644
index 0000000..81da041
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_landscape.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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
+ android:id="@+id/battery_frame"
+ android:drawable="@drawable/ic_battery_landscape_frame"/>
+
+ <item
+ android:id="@+id/battery_fill"
+ android:drawable="@drawable/ic_battery_landscape_avd"/>
+
+ <item
+ android:id="@+id/battery_charge_indicator">
+ <rotate
+ android:pivotX="50%"
+ android:pivotY="50%"
+ android:fromDegrees="90"
+ android:toDegrees="90"
+ android:drawable="@drawable/ic_battery_bolt"/>
+ </item>
+
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_landscape_avd.xml b/packages/SystemUI/res/drawable/ic_battery_landscape_avd.xml
new file mode 100644
index 0000000..41060e8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_landscape_avd.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_battery_landscape_fill" >
+
+ <target
+ android:name="battery_level"
+ android:animation="@anim/battery_landscape" />
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_landscape_fill.xml b/packages/SystemUI/res/drawable/ic_battery_landscape_fill.xml
new file mode 100644
index 0000000..5d75bc6
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_landscape_fill.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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="26dp"
+ android:height="24dp"
+ android:viewportWidth="26"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="@string/battery_landscape_clip_path" />
+
+ <!-- Path will be tinted based on battery level -->
+ <path
+ android:name="battery_level"
+ android:fillColor="#000000"
+ android:pathData="@string/battery_landscape_path_empty" />
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_landscape_frame.xml b/packages/SystemUI/res/drawable/ic_battery_landscape_frame.xml
new file mode 100644
index 0000000..bb66797
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_landscape_frame.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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="26dp"
+ android:height="24dp"
+ android:viewportWidth="26"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="@string/battery_landscape_clip_path" />
+
+ <!-- Path will be tinted based on light/dark modes -->
+ <path
+ android:name="frame"
+ android:fillColor="#000000"
+ android:pathData="M 1 4 H 25 V 20 H 1 V 4 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_portrait.xml b/packages/SystemUI/res/drawable/ic_battery_portrait.xml
new file mode 100644
index 0000000..141bf1b
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_portrait.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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
+ android:id="@+id/battery_frame"
+ android:drawable="@drawable/ic_battery_portrait_frame"/>
+
+ <item
+ android:id="@+id/battery_fill"
+ android:drawable="@drawable/ic_battery_portrait_avd"/>
+
+ <item
+ android:id="@+id/battery_charge_indicator"
+ android:drawable="@drawable/ic_battery_bolt"/>
+
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_portrait_avd.xml b/packages/SystemUI/res/drawable/ic_battery_portrait_avd.xml
new file mode 100644
index 0000000..2768f5d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_portrait_avd.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_battery_portrait_fill" >
+
+ <target
+ android:name="battery_level"
+ android:animation="@anim/battery_portrait" />
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_portrait_fill.xml b/packages/SystemUI/res/drawable/ic_battery_portrait_fill.xml
new file mode 100644
index 0000000..6742181
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_portrait_fill.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="@string/battery_portrait_clip_path" />
+
+ <!-- Path will be tinted based on battery level -->
+ <path
+ android:name="battery_level"
+ android:fillColor="#000000"
+ android:pathData="@string/battery_portrait_path_empty" />
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_battery_portrait_frame.xml b/packages/SystemUI/res/drawable/ic_battery_portrait_frame.xml
new file mode 100644
index 0000000..6bf92fb
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_battery_portrait_frame.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="@string/battery_portrait_clip_path" />
+
+ <!-- Path will be tinted based on light/dark modes -->
+ <path
+ android:name="frame"
+ android:fillColor="#000000"
+ android:pathData="M19,2v19H5V2H19z" />
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_adb.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_adb.xml
new file mode 100644
index 0000000..6b33a66
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_adb.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M 37.727707,9.975208 L 40.285946,3.7258741 C 40.541238,3.1009409
+40.243401,2.3882503 39.618464,2.1329586 38.993529,1.8776669 38.28084,2.1755027
+38.025548,2.8004407 L 35.374234,9.275815 C 32.449014,8.605674 28.718028,8.350381
+24.258396,8.350381 l 0,0.01596 0,0 0,-0.01862 c -0.582384,0 -1.148814,0.0053
+-1.707266,0.01596 l -0.0027,0 c -3.712371,0.06116 -6.863631,0.329751
+-9.405913,0.912136 L 10.491243,2.8004407 C 10.235951,2.1755075
+9.5232609,1.8776669 8.8983273,2.1329586 8.2733938,2.3882503 7.9755532,3.1009409
+8.2308452,3.7258741 L 10.789084,9.975208 c -3.3959157,1.284439
+-5.1989153,3.45708 -5.1989153,6.94607 l 0,7.31837 0,1.898735 0,2.084884 c
+0,6.411552 6.0738233,8.379428 16.9583033,8.557599 l 0,0.01064 0.67546,0 c
+0.340389,0.0027 0.686097,0.0053 1.034464,0.0053 l 0,-0.0053 0,0 0,0.0053 c
+0.348368,0 0.694075,-0.0027 1.034465,-0.0053 l 0.04786,0 c 11.280713,-0.11169
+17.585893,-2.031699 17.585893,-8.565578 l 0,-2.087543 0,-1.898735 0,-7.31837 C
+42.929314,13.429631 41.123615,11.259649 37.7277,9.975211 Z M 14.661013,27.973293
+c -3.084777,0 -5.5845131,-2.499733 -5.5845131,-5.584512 0,-3.084778
+2.4997361,-5.584511 5.5845131,-5.584511 3.084778,0 5.584512,2.499733
+5.584512,5.584511 0,3.084779 -2.499734,5.584512 -5.584512,5.584512 z m
+10.185086,4.050102 -1.178065,0 c -0.86693,0 -1.571642,-0.702054
+-1.571642,-1.571642 0,-0.03192 0.008,-0.06382 0.01064,-0.09573 l 4.300073,0 c
+0.0027,0.03192 0.01064,0.06116 0.01064,0.09573 0,0.869588 -0.704712,1.571642
+-1.571641,1.571642 z m 9.00968,-4.050102 c -3.084778,0 -5.584512,-2.499733
+-5.584512,-5.584512 0,-3.084778 2.499734,-5.584511 5.584512,-5.584511 3.084777,0
+5.584512,2.499733 5.584512,5.584511 -0.0027,3.084779 -2.502394,5.584512
+-5.584512,5.584512 z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:strokeWidth="16"
+ android:strokeLineJoin="round"
+ android:strokeLineCap="round"
+ android:pathData="M 23.2448199 33.152538 L 24.8907709 33.152538 Q 25.9999988 33.152538
+25.9999988 34.2617659 L 25.9999988 44.6534791 Q 25.9999988 45.762707 24.8907709 45.762707
+L 23.2448199 45.762707 Q 22.135592 45.762707 22.135592 44.6534791 L 22.135592 34.2617659
+Q 22.135592 33.152538 23.2448199 33.152538 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_ime_selector.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_ime_selector.xml
new file mode 100644
index 0000000..07ee10a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_ime_selector.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M40 10H8c-2.21 0-3.98 1.79-3.98 4L4 34c0 2.21 1.79 4 4 4h32c2.21 0 4-1.79
+4-4V14c0-2.21-1.79-4-4-4zm-18 6h4v4h-4v-4zm0 6h4v4h-4v-4zm-6-6h4v4h-4v-4zm0
+6h4v4h-4v-4zm-2 4h-4v-4h4v4zm0-6h-4v-4h4v4zm18
+14H16v-4h16v4zm0-8h-4v-4h4v4zm0-6h-4v-4h4v4zm6 6h-4v-4h4v4zm0-6h-4v-4h4v4z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_live_display.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_live_display.xml
new file mode 100644
index 0000000..fc1c4d6
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_live_display.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M19,5v14H5V5H19
+M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z
+M10.7,13.3h2.6L12,9.2L10.7,13.3z
+M14.6,17l-0.8-2.2h-3.6L9.4,17H7.3l3.6-10h2.2l3.6,10H14.6z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_next_alarm.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_next_alarm.xml
new file mode 100644
index 0000000..184d407
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_next_alarm.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M44 11.44l-9.19-7.71-2.57 3.06 9.19 7.71L44 11.44zM15.76 6.78l-2.57-3.06L4
+11.43l2.57 3.06 9.19-7.71zM25 16h-3v12l9.49 5.71L33
+31.24l-8-4.74V16zm-1.01-8C14.04 8 6 16.06 6 26s8.04 18 17.99 18S42 35.94 42 26
+33.94 8 23.99 8zM24 40c-7.73 0-14-6.27-14-14s6.27-14 14-14 14 6.27 14 14-6.26
+14-14 14z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_su.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_su.xml
new file mode 100644
index 0000000..5d582d2
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_su.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:strokeWidth="1"
+ android:pathData="M 28.79,43.78 L 22.26,43.78 31.33,3.52 37.88,3.52 Z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:strokeWidth="1"
+ android:pathData="M 15.46,43.78 L 8.54,43.78 17.69,3.52 24.41,3.52 Z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:strokeWidth="1"
+ android:pathData="M 7.53,15.86 L 43.53,15.86 43.53,20.34 7.53,20.34 Z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:strokeWidth="1"
+ android:pathData="M 4.68,28.68 L 41.69,28.68 41.69,33.15 4.68,33.15 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_dynamic_qs_themes.xml b/packages/SystemUI/res/drawable/ic_dynamic_qs_themes.xml
new file mode 100644
index 0000000..14802e9
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_dynamic_qs_themes.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M21,5V3h-2v6c0,0.6-0.4,1-1,1s-1-0.4-1-1V3h-2v10c0,0.6-0.4,1-1,1s-1-0.4-1-1V7c0-0.6-0.4-1-1-1s-1,0.4-1,1v4
+c0,0.6-0.4,1-1,1s-1-0.4-1-1V8c0-0.6-0.4-1-1-1S7,7.4,7,8v8c0,0.6-0.4,1-1,1s-1-0.4-1-1V3H3v2H2v4h1v10c0,1.1,0.9,2,2,2h14
+c1.1,0,2-0.9,2-2V9h1V5H21z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_empty_space.xml b/packages/SystemUI/res/drawable/ic_empty_space.xml
new file mode 100644
index 0000000..7327894
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_empty_space.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M7.41,7.84 L12,12.42 L16.59,7.84 L18,9.25 L12,15.25 L6,9.25 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_keyboard_arrow_down.xml b/packages/SystemUI/res/drawable/ic_keyboard_arrow_down.xml
new file mode 100644
index 0000000..59f9daa
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_keyboard_arrow_down.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M7.41,7.84 L12,12.42 L16.59,7.84 L18,9.25 L12,15.25 L6,9.25 Z" />
+ <path
+ android:pathData="M0,-0.75 L24,-0.75 L24,23.25 L0,23.25 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_keyboard_arrow_left.xml b/packages/SystemUI/res/drawable/ic_keyboard_arrow_left.xml
new file mode 100644
index 0000000..182c865
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_keyboard_arrow_left.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M15.41,16.09 L10.83,11.5 L15.41,6.91 L14,5.5 L8,11.5 L14,17.5 Z" />
+ <path
+ android:pathData="M0,-0.5 L24,-0.5 L24,23.5 L0,23.5 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_keyboard_arrow_right.xml b/packages/SystemUI/res/drawable/ic_keyboard_arrow_right.xml
new file mode 100644
index 0000000..68e056e
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_keyboard_arrow_right.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M8.59,16.34 L13.17,11.75 L8.59,7.16 L10,5.75 L16,11.75 L10,17.75 Z" />
+ <path
+ android:pathData="M0,-0.25 L24,-0.25 L24,23.75 L0,23.75 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_keyboard_arrow_up.xml b/packages/SystemUI/res/drawable/ic_keyboard_arrow_up.xml
new file mode 100644
index 0000000..3b222a2
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_keyboard_arrow_up.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#000000"
+ android:pathData="M7.41,15.41 L12,10.83 L16.59,15.41 L18,14 L12,8 L6,14 Z" />
+ <path
+ android:pathData="M0,0 L24,0 L24,24 L0,24 Z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_lockscreen_shortcuts_blank.xml b/packages/SystemUI/res/drawable/ic_lockscreen_shortcuts_blank.xml
new file mode 100644
index 0000000..1debdda
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_lockscreen_shortcuts_blank.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="@dimen/keyguard_affordance_icon_width"
+ android:height="@dimen/keyguard_affordance_icon_height"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#666666"
+ android:pathData="M14 10h4V6h-4v4zm0 16h4v-4h-4v4zm0 16h4v-4h-4v4zm8-8h4v-4h-4v4zm0 8h4v-4h-4v4zM6
+42h4v-4H6v4zm0-8h4v-4H6v4zm0-8h4v-4H6v4zm0-8h4v-4H6v4zm0-8h4V6H6v4zm16
+16h4v-4h-4v4zm16 8h4v-4h-4v4zm0-8h4v-4h-4v4zm0 16h4v-4h-4v4zm0-24h4v-4h-4v4zm-16
+0h4v-4h-4v4zM38 6v4h4V6h-4zm-16 4h4V6h-4v4zm8
+32h4v-4h-4v4zm0-16h4v-4h-4v4zm0-16h4V6h-4v4z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_off.xml b/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_off.xml
new file mode 100644
index 0000000..e8b999d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_off.xml
@@ -0,0 +1,58 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="64"
+ android:viewportHeight="64">
+
+ <group
+ android:translateY="-988.583">
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M14.9929
+1051.24c-0.860426-0.1558-1.60181-0.6484-2.08043-1.3823-0.191527-0.2937-0.318133-0.5822-0.424976-0.9684l-0.07925-0.2865-0.0077-21.1653-0.0077-21.1652-5.65481-5.6547c-3.75978-3.75965-5.65481-5.67485-5.65481-5.71485
+0-0.039 0.455164-0.5152 1.31263-1.3725 1.14594-1.1458 1.32404-1.3124
+1.40251-1.3124 0.07978 0 3.23905 3.1492 28.1024 28.0124 22.4142 22.4142 28.0125
+28.0275 28.0125 28.0876 0 0.1096-2.59052 2.6999-2.70019 2.6999-0.0594
+0-0.66925-0.5944-2.93987-2.8651l-2.86494-2.8651-0.0162 1.6726-0.0162
+1.6726-0.0793 0.2911c-0.30675 1.127-1.135 1.9557-2.26722 2.2684l-0.29117
+0.08-16.755 0.01c-14.361
+0-16.7886-0.001-16.9903-0.038zm29.8303-12.2447v-0.2925l-5.22747-5.2275-5.22747-5.2275h-6.00753-6.00753l-0.00079-0.6975-0.00078-0.6975
+1.09505-1.08 1.09504-1.08 0.0351-2.175c0.0201-1.2482 0.0254-2.5792
+0.0124-3.1234l-0.0227-0.9485-2.86164-2.8615-2.86164-2.8615v13.2824 13.2825h12.99
+12.99v-0.2925zm-13.44-7.2523c-0.53478-0.1072-1.03604-0.424-1.36654-0.8636-0.30042-0.3997-0.45617-0.8284-0.48472-1.3341l-0.0174-0.3075h1.93454c1.06399
+0 2.13918 0.01 2.38931 0.02l0.45477 0.02v0.1413c0 0.222-0.0844 0.6501-0.17092
+0.8667-0.30319 0.7593-0.93372 1.2975-1.70726 1.4573-0.26299 0.054-0.76232
+0.055-1.03182
+0.0006zm16.6574-0.5628-3.21745-3.2175v-13.5675-13.5674h-12.99-12.99v0.51c0
+0.509-0.00012 0.51-0.0675 0.51-0.0496
+0-0.90464-0.8371-3.225-3.15755l-3.15745-3.1575v-1.4258c0-0.7988 0.01359-1.5341
+0.03091-1.6722 0.161018-1.2841 1.06546-2.3221
+2.32624-2.6698l0.297859-0.082h16.845 16.845l0.29117 0.08c1.13269 0.3129 1.95549
+1.1357 2.26839 2.2684l0.0804 0.2912 0.008 21.0374 0.008 21.0375h-0.0677c-0.0498
+0-0.91619-0.8486-3.28515-3.2176zm-14.04-14.0399c-3.73959-3.7397-5.07747-5.0954-5.07747-5.145
+0-0.037 0.004-0.067 0.008-0.067s0.27081-0.095 0.59194-0.21c0.32114-0.1155
+0.58578-0.21 0.5881-0.21 0.002 0 0.0113-0.1857 0.02-0.4125 0.0255-0.6681
+0.17539-1.0612 0.54652-1.4337 0.34072-0.342 0.70204-0.4938 1.17524-0.4938
+0.48816 0 0.81887 0.1266 1.1524 0.4412 0.24603 0.2321 0.38341 0.4468 0.49534
+0.774 0.0706 0.2064 0.0839 0.3013 0.0959 0.6823 0.0107 0.3401 0.0231 0.4425
+0.0537 0.4425 0.0218 0 0.30704 0.096 0.63378 0.2132 1.18372 0.4249 2.01459
+0.9295 2.74561 1.6675 0.50334 0.5081 0.83969 0.9774 1.15692 1.6143 0.51647
+1.0368 0.81228 2.2666 0.93638 3.8931 0.0267 0.35 0.0876 2.4717 0.0896 3.1193
+0.00057 0.1902-0.004 0.2025-0.0669 0.2025-0.0498 0-1.40242-1.3349-5.145-5.0775z" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_on.xml b/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_on.xml
new file mode 100644
index 0000000..96eb36c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_ambientdisplay_on.xml
@@ -0,0 +1,51 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="64"
+ android:viewportHeight="64">
+
+ <group
+ android:translateY="-988.583">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M15.0133
+1051.24c-1.3615-0.2479-2.37425-1.2789-2.57968-2.6262-0.06554-0.4298-0.06571-55.8484-0.00018-56.28
+0.09875-0.65024 0.367851-1.20544 0.812983-1.6773 0.402211-0.42637
+0.920053-0.7356 1.49909-0.8952l0.299302-0.0825h16.845 16.845l0.291174
+0.0804c1.24697 0.34447 2.13039 1.32473 2.32019 2.57456 0.06515 0.42898 0.06541
+55.8484 0.0003 56.28-0.188067 1.2461-1.07608 2.2305-2.32306 2.5752l-0.288567
+0.08h-16.755c-13.5267 0-16.7958
+0-16.9665-0.034zm29.8065-31.1862v-19.23h-12.99-12.99v19.23 19.23h12.99
+12.99v-19.23zm-13.459
+11.687c-1.03547-0.2354-1.77837-1.1208-1.83292-2.1845l-0.01654-0.3225h1.87175c1.02946
+0 2.10645 0.01 2.3933 0.02l0.521553 0.02-0.01945 0.253c-0.02847 0.3705-0.09559
+0.6134-0.267159 0.9672-0.135477 0.2794-0.18522 0.3474-0.439626 0.6013-0.31197
+0.3114-0.571617 0.4707-0.976866 0.5995-0.269196 0.085-0.949163 0.111-1.23404
+0.046zm-9.04096-4.1842v-0.6872l1.10534-1.0831 1.10534-1.0831
+0.02483-1.2072c0.01366-0.664 0.02781-2.213 0.03145-3.4422 0.007-2.3727
+0.01776-2.5909 0.162279-3.3 0.234013-1.1483 0.861931-2.2993 1.7263-3.1643
+0.762874-0.7634 1.91951-1.4813 3.00204-1.8633 0.262572-0.093 0.512691-0.1813
+0.555819-0.1969l0.07842-0.029 0.01577-0.426c0.01284-0.3469 0.03018-0.4706
+0.09332-0.666 0.197394-0.6109 0.642609-1.0525 1.21018-1.2004 0.365688-0.095
+0.860153-0.043 1.2089 0.1282 0.234414 0.1149 0.589851 0.4783 0.725931 0.7422
+0.171483 0.3325 0.207933 0.491 0.225975 0.9825 0.01148 0.3126 0.02671 0.4425
+0.0519 0.4425 0.01961 0 0.2844 0.088 0.588423 0.1954 2.74734 0.9715 4.21726
+2.7794 4.71985 5.805 0.171696 1.0336 0.211308 1.7926 0.259098 4.9646l0.03345
+2.22 1.10911 1.095 1.1091 1.095-0.0014 0.6825-0.0014 0.6825h-9.57-9.57v-0.6872z" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_battery_saver_off.xml b/packages/SystemUI/res/drawable/ic_qs_battery_saver_off.xml
new file mode 100644
index 0000000..0301872
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_battery_saver_off.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_battery_saver_on.xml b/packages/SystemUI/res/drawable/ic_qs_battery_saver_on.xml
new file mode 100644
index 0000000..0e11796
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_battery_saver_on.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_caffeine_off.xml b/packages/SystemUI/res/drawable/ic_qs_caffeine_off.xml
new file mode 100644
index 0000000..59d52e8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_caffeine_off.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_caffeine_on.xml b/packages/SystemUI/res/drawable/ic_qs_caffeine_on.xml
new file mode 100644
index 0000000..48b6773
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_caffeine_on.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_compass_off.xml b/packages/SystemUI/res/drawable/ic_qs_compass_off.xml
new file mode 100644
index 0000000..e1ebfec
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_compass_off.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M42,39.2L8.8,6L6,8.8l9.8,9.8l-1.5,3.7c-0.4,1-0.4,2.2,0,3.3l7.8,19.1c0.7,1.7,3.1,1.7,3.8,0l4.6-11.3
+l8.6,8.6L42,39.2Z
+M24,28c-2.2,0-4-1.8-4-4c0-0.4,0.1-0.7,0.1-1l4.9,4.9C24.7,27.9,24.4,28,24,28z
+M33.8,25.3L19.1,10.7l3-7.4
+c0.7-1.7,3.1-1.7,3.8,0l7.8,19.1C34.1,23.3,34.1,24.4,33.8,25.3z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_compass_on.xml b/packages/SystemUI/res/drawable/ic_qs_compass_on.xml
new file mode 100644
index 0000000..f66f64c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_compass_on.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M25.9,3.3l7.8,19.1c0.4,1,0.4,2.2,0,3.3l-7.8,19.1c-0.7,1.7-3.1,1.7-3.8,0l-7.8-19.1c-0.4-1-0.4-2.2,0-3.3
+l7.8-19.1C22.8,1.6,25.2,1.6,25.9,3.3Z
+M24,20c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,20,24,20z
+M26,14v-4c0-1.1-0.9-2-2-2 s-2,0.9-2,2v4c0,1.1,0.9,2,2,2S26,15.1,26,14z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_dnd_on_priority.xml b/packages/SystemUI/res/drawable/ic_qs_dnd_on_priority.xml
new file mode 100644
index 0000000..f6f3c89
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_dnd_on_priority.xml
@@ -0,0 +1,25 @@
+<!--
+ 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.
+-->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="64.0dip"
+ android:height="64.0dip"
+ android:viewportWidth="48.0"
+ android:viewportHeight="48.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M24,4C12.95,4,4,12.95,4,24s8.95,20,20,20s20-8.95,20-20S35.05,4,24,4z M34,26h-8v8h-4v-8h-8v-4h8v-8h4v8h8V26z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_edit_tiles.xml b/packages/SystemUI/res/drawable/ic_qs_edit_tiles.xml
new file mode 100644
index 0000000..218228d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_edit_tiles.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M4,32h4v4H4V32z M4,20h4v-4C5.8,16,4,17.8,4,20z M8,44v-4H4 C4,42.2,5.8,44,8,44z
+M4,28h4v-4H4V28z M12,44h4v-4h-4V44z
+M44,8v20c0,2.2-1.8,4-4,4h-8v4h-4v-4h-8c-2.2,0-4-1.8-4-4v-8h-4v-4h4V8
+c0-2.2,1.8-4,4-4h20C42.2,4,44,5.8,44,8z M40,8H20v20h20V8z
+M28,44c2.2,0,4-1.8,4-4h-4V44z M20,44h4v-4h-4V44z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_heads_up_off.xml b/packages/SystemUI/res/drawable/ic_qs_heads_up_off.xml
new file mode 100644
index 0000000..904ccdf
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_heads_up_off.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M11.5,22.0c1.1,0.0 2.0,-0.9 2.0,-2.0l-4.0,0.0C9.5,21.1 10.4,22.0 11.5,22.0zM18.0,10.5c0.0,-3.1 -2.1,-5.6 -5.0,-6.3L13.0,3.5C13.0,2.7 12.3,2.0 11.5,2.0C10.7,2.0 10.0,2.7 10.0,3.5l0.0,0.7C9.5,4.3 9.0,4.5 8.6,4.7l9.4,9.4L18.0,10.5zM17.7,19.0l2.0,2.0l1.3,-1.3L4.3,3.0L3.0,4.3l2.9,2.9C5.3,8.2 5.0,9.3 5.0,10.5L5.0,16.0l-2.0,2.0l0.0,1.0L17.7,19.0z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_heads_up_on.xml b/packages/SystemUI/res/drawable/ic_qs_heads_up_on.xml
new file mode 100644
index 0000000..9c5983d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_heads_up_on.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M11.5,22.0c1.1,0.0 2.0,-0.9 2.0,-2.0l-4.0,0.0C9.5,21.1 10.4,22.0 11.5,22.0zM18.0,16.0l0.0,-5.5c0.0,-3.1 -2.1,-5.6 -5.0,-6.3L13.0,3.5C13.0,2.7 12.3,2.0 11.5,2.0C10.7,2.0 10.0,2.7 10.0,3.5l0.0,0.7c-2.9,0.7 -5.0,3.2 -5.0,6.3L5.0,16.0l-2.0,2.0l0.0,1.0l17.0,0.0l0.0,-1.0L18.0,16.0z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_location_battery_saving.xml b/packages/SystemUI/res/drawable/ic_qs_location_battery_saving.xml
new file mode 100644
index 0000000..efd8f16
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_location_battery_saving.xml
@@ -0,0 +1,28 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M24.0,4.0c-7.7,0.0 -14.0,6.3 -14.0,14.0c0.0,10.5 14.0,26.0 14.0,26.0s14.0,-15.5 14.0,-26.0C38.0,10.3 31.7,4.0 24.0,4.0zM24.0,23.0c-2.8,0.0 -5.0,-2.2 -5.0,-5.0s2.2,-5.0 5.0,-5.0c2.8,0.0 5.0,2.2 5.0,5.0S26.8,23.0 24.0,23.0z"/>
+ <path
+ android:pathData="M24.0,4.0c-7.7,0.0 -14.0,6.3 -14.0,14.0c0.0,10.5 14.0,26.0 14.0,26.0l0.0,-21.0 c-2.8,0.0 -5.0,-2.2 -5.0,-5.0s2.2,-5.0 5.0,-5.0l0.0,-9.0z"
+ android:fillColor="#FFFFFFFF"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_location_off.xml b/packages/SystemUI/res/drawable/ic_qs_location_off.xml
new file mode 100644
index 0000000..e0fe12e
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_location_off.xml
@@ -0,0 +1,28 @@
+<!--
+Copyright (C) 2014 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M24.0,13.0c2.8,0.0 5.0,2.2 5.0,5.0c0.0,1.5 -0.7,2.8 -1.7,3.7l7.3,7.3c2.0,-3.7 3.4,-7.6 3.4,-11.0c0.0,-7.7 -6.3,-14.0 -14.0,-14.0c-4.0,0.0 -7.5,1.6 -10.1,4.3l6.4,6.4C21.2,13.6 22.5,13.0 24.0,13.0zM32.7,32.2l-9.3,-9.3l-0.2,-0.2L6.5,6.0L4.0,8.5l6.4,6.4c-0.2,1.0 -0.4,2.0 -0.4,3.1c0.0,10.5 14.0,26.0 14.0,26.0s3.3,-3.7 6.8,-8.7l6.7,6.7l2.5,-2.5L32.7,32.2z"/>
+ <path
+ android:pathData="M23.5,22.9l0.0,0.0 -0.20000076,-0.19999886z"
+ android:fillColor="#4DFFFFFF"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_lock_screen_off.xml b/packages/SystemUI/res/drawable/ic_qs_lock_screen_off.xml
new file mode 100644
index 0000000..fec9665
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_lock_screen_off.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M36,16h-2v-4c0-5.5-4.5-10-10-10S14,6.5,14,12h3.8c0-3.4,2.8-6.2,6.2-6.2
+s6.2,2.8,6.2,6.2v4H12c-2.2,0-4,1.8-4,4v20c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V20C40,17.8,38.2,16,36,16Z
+M36,40H12V20L36,40z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_lock_screen_on.xml b/packages/SystemUI/res/drawable/ic_qs_lock_screen_on.xml
new file mode 100644
index 0000000..1b7717c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_lock_screen_on.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M36,16h-2v-4c0-5.5-4.5-10-10-10S14,6.5,14,12v4h-2c-2.2,0-4,1.8-4,4v20
+c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V20C40,17.8,38.2,16,36,16Z
+M24,5.8c3.4,0,6.2,2.8,6.2,6.2v4H17.8v-4C17.8,8.6,20.6,5.8,24,5.8z
+M36,40H12V20L36,40z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_network_adb_off.xml b/packages/SystemUI/res/drawable/ic_qs_network_adb_off.xml
new file mode 100644
index 0000000..7c1e235
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_network_adb_off.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M41,37.9L34.1,31l0,0l-6.5-6.5l0,0l-9.8-9.8l0,0L13.1,10L6.5,3.4L4,6l4.1,4.1
+c-4.3,2-6.9,4.1-7.4,4.4l23.3,29l0,0l0,0l7.8-9.7l6.6,6.6L41,37.9Z
+M14,24.5v-2c0-1.9,0.5-3.6,1.5-5.1l7.1,7.1H14z M21.2,13
+l-5.5-5.5c2.5-0.6,5.3-1,8.3-1c13.4,0,22.4,7.3,23.3,8L36.3,28.1l-3.6-3.6H34v-2c0-2.4-0.9-4.6-2.3-6.3l2.3-2.3l-1.4-1.4l-2.3,2.3
+c-1.7-1.4-3.9-2.3-6.3-2.3C23,12.5,22.1,12.7,21.2,13z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_network_adb_on.xml b/packages/SystemUI/res/drawable/ic_qs_network_adb_on.xml
new file mode 100644
index 0000000..669622f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_network_adb_on.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M24,43.5l23.3-29c-0.9-0.7-9.9-8-23.3-8c-13.4,0-22.4,7.3-23.3,8L24,43.5L24,43.5
+C24,43.5,24,43.5,24,43.5Z
+M31.7,16.2c1.4,1.7,2.3,3.9,2.3,6.3v2H14v-2c0-2.4,0.9-4.6,2.3-6.3L14,13.9l1.4-1.4l2.3,2.3
+c1.7-1.4,3.9-2.3,6.3-2.3c2.4,0,4.6,0.9,6.3,2.3l2.3-2.3l1.4,1.4L31.7,16.2z
+M22,20.5c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2
+c0-1.1,0.9-2,2-2C21.1,18.5,22,19.4,22,20.5z
+M30,20.5c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2C29.1,18.5,30,19.4,30,20.5
+z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_nfc_off.xml b/packages/SystemUI/res/drawable/ic_qs_nfc_off.xml
new file mode 100644
index 0000000..1349c7c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_nfc_off.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M16.4,8l-4-4H40c2.2,0,4,1.8,4,4v27.6l-4-4V8H16.4Z
+M26,12c-1.5,0-2.8,0.9-3.5,2.1l3.5,3.5 V16h6v7.6l4,4V12H26z
+M43.8,41.1c-0.5,1.7-2,2.9-3.8,2.9H8c-2.2,0-4-1.8-4-4V8c0-1.8,1.3-3.4,2.9-3.8L32,29.2l4,4L43.8,41.1z
+M25,27.9c-0.3,0.1-0.7,0.1-1,0.1c-2.2,0-4-1.8-4-4c0-0.4,0-0.7,0.1-1L16,18.8V32h13.2L25,27.9z
+M37.2,40l-4-4H12V14.8l-4-4V40H37.2 z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_nfc_on.xml b/packages/SystemUI/res/drawable/ic_qs_nfc_on.xml
new file mode 100644
index 0000000..73e735c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_nfc_on.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M40,4H8C5.8,4,4,5.8,4,8v32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4Z
+M40,40H8V8h32V40z
+M36,12H26c-2.2,0-4,1.8-4,4v4.6c-1.2,0.7-2,2-2,3.4c0,2.2,1.8,4,4,4s4-1.8,4-4c0-1.5-0.8-2.8-2-3.4V16h6v16H16
+V16h4v-4h-8v24h24V12z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_perf_profile.xml b/packages/SystemUI/res/drawable/ic_qs_perf_profile.xml
new file mode 100644
index 0000000..2ce5d1f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_perf_profile.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="64dp"
+ android:width="64dp"
+ android:viewportHeight="48"
+ android:viewportWidth="48">
+
+ <group
+ android:name="base_gauge">
+
+ <path android:pathData="M24,8c8.8,0,16,7.2,16,16s-7.2,16-16,16S8,32.8,8,24S15.2,8,24,8 M24,4C13,4,4,13,4,24s9,20,20,20s20-9,20-20S35,4,24,4
+ L24,4z M24,20c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,20,24,20z M32.5,13.5c-1.1,0-2,0.9-2,2s0.9,2,2,2c1.1,0,2-0.9,2-2
+ S33.6,13.5,32.5,13.5z M15.5,13.5c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.6,13.5,15.5,13.5z M15.5,30.5c-1.1,0-2,0.9-2,2
+ c0,1.1,0.9,2,2,2s2-0.9,2-2C17.5,31.4,16.6,30.5,15.5,30.5z"
+
+ android:fillColor="#FFFFFFFF"/>
+
+ </group>
+
+ <group
+ android:name="needle"
+ android:pivotX="24"
+ android:pivotY="24"
+ android:rotation="-135">
+
+ <path
+ android:strokeColor="#FFFFFFFF"
+ android:strokeWidth="4"
+ android:strokeLineCap="round"
+ android:pathData="M 24,24 h 12"/>
+ </group>
+
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_profiles_off.xml b/packages/SystemUI/res/drawable/ic_qs_profiles_off.xml
new file mode 100644
index 0000000..f407c4d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_profiles_off.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M14.304,5.455l0.79-1.93c0.079-0.193-0.013-0.413-0.206-0.492c-0.193-0.079-0.413,0.013-0.492,0.206 l-0.818,2c-0.903-0.207-2.055-0.286-3.433-0.286v0.005h0V4.953c-0.18,0-0.355,0.002-0.527,0.005H9.615 C8.468,4.976,7.495,5.06,6.71,5.239l-0.819-2C5.812,3.046,5.592,2.954,5.399,3.033C5.206,3.112,5.114,3.332,5.193,3.525l0.79,1.93 C4.934,5.852,4.377,6.523,4.377,7.6v2.261v0.587v0.644c0,1.98,1.876,2.588,5.238,2.643v0.003h0.209 c0.105,0.001,0.212,0.002,0.32,0.002v-0.002h0v0.002c0.108,0,0.214-0.001,0.32-0.002h0.015c3.484-0.034,5.432-0.628,5.432-2.646 v-0.644V9.861V7.6C15.909,6.523,15.352,5.852,14.304,5.455Z M7.179,11.014c-0.953,0-1.725-0.772-1.725-1.724 c0-0.953,0.772-1.725,1.725-1.725c0.952,0,1.724,0.772,1.724,1.725C8.904,10.242,8.132,11.014,7.179,11.014z M10.325,12.265H9.961 c-0.268,0-0.485-0.217-0.485-0.485c0-0.01,0.002-0.019,0.003-0.029h1.328c0.001,0.01,0.003,0.019,0.003,0.029 C10.81,12.048,10.593,12.265,10.325,12.265z M13.107,11.014c-0.953,0-1.725-0.772-1.725-1.724c0-0.953,0.772-1.725,1.725-1.725 c0.952,0,1.724,0.772,1.724,1.725C14.832,10.242,14.06,11.014,13.107,11.014z M21.44,10.402c-0.261,1.016-0.5,4.301-5.798,7.557 c-0.439,0.269-0.884,0.974-0.884,2.152l0.05,0.89h-1.922v0h-0.014c0-1.492-1.214-2.706-2.706-2.706 c-1.492,0-2.706,1.214-2.706,2.706v0H5.525l0.07-1.243c0,0-0.203,0.516-0.489,1.243H2.501l1.563-4.171 c0.303-0.793,1.013-1.282,1.733-1.529c0.524-0.18,1.593-0.386,3.586-0.485h1.569c0.492,0.025,0.926,0.055,1.311,0.091 c0,0,0,0,0.001,0s0,0,0.001,0c0.296,0.027,0.563,0.057,0.801,0.089c1.028,0.062,2.506-0.095,4.131-1.475 c1.423-1.209,1.591-2.051,2.28-3.895C20.285,7.463,21.816,8.936,21.44,10.402z M12.316,21h0.013v0H8.02v0H8.019 c0-1.185,0.964-2.148,2.149-2.148C11.352,18.851,12.316,19.815,12.316,21z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_profiles_on.xml b/packages/SystemUI/res/drawable/ic_qs_profiles_on.xml
new file mode 100644
index 0000000..ce752e7
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_profiles_on.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.304,5.455l0.79-1.93c0.079-0.193-0.013-0.413-0.206-0.492c-0.193-0.079-0.413,0.013-0.492,0.206 l-0.818,2c-0.903-0.207-2.055-0.286-3.433-0.286v0.005h0V4.953c-0.18,0-0.355,0.002-0.527,0.005H9.615 C8.468,4.976,7.495,5.06,6.71,5.239l-0.819-2C5.812,3.046,5.592,2.954,5.399,3.033C5.206,3.112,5.114,3.332,5.193,3.525l0.79,1.93 C4.934,5.852,4.377,6.523,4.377,7.6v2.261v0.587v0.644c0,1.98,1.876,2.588,5.238,2.643v0.003h0.209 c0.105,0.001,0.212,0.002,0.32,0.002v-0.002h0v0.002c0.108,0,0.214-0.001,0.32-0.002h0.015c3.484-0.034,5.432-0.628,5.432-2.646 v-0.644V9.861V7.6C15.909,6.523,15.352,5.852,14.304,5.455Z M7.179,11.014c-0.953,0-1.725-0.772-1.725-1.724 c0-0.953,0.772-1.725,1.725-1.725c0.952,0,1.724,0.772,1.724,1.725C8.904,10.242,8.132,11.014,7.179,11.014z M10.325,12.265H9.961 c-0.268,0-0.485-0.217-0.485-0.485c0-0.01,0.002-0.019,0.003-0.029h1.328c0.001,0.01,0.003,0.019,0.003,0.029 C10.81,12.048,10.593,12.265,10.325,12.265z M13.107,11.014c-0.953,0-1.725-0.772-1.725-1.724c0-0.953,0.772-1.725,1.725-1.725 c0.952,0,1.724,0.772,1.724,1.725C14.832,10.242,14.06,11.014,13.107,11.014z M21.44,10.402c-0.261,1.016-0.5,4.301-5.798,7.557 c-0.439,0.269-0.884,0.974-0.884,2.152l0.05,0.89h-1.922v0h-0.014c0-1.492-1.214-2.706-2.706-2.706 c-1.492,0-2.706,1.214-2.706,2.706v0H5.525l0.07-1.243c0,0-0.203,0.516-0.489,1.243H2.501l1.563-4.171 c0.303-0.793,1.013-1.282,1.733-1.529c0.524-0.18,1.593-0.386,3.586-0.485h1.569c0.492,0.025,0.926,0.055,1.311,0.091 c0,0,0,0,0.001,0s0,0,0.001,0c0.296,0.027,0.563,0.057,0.801,0.089c1.028,0.062,2.506-0.095,4.131-1.475 c1.423-1.209,1.591-2.051,2.28-3.895C20.285,7.463,21.816,8.936,21.44,10.402z M12.316,21h0.013v0H8.02v0H8.019 c0-1.185,0.964-2.148,2.149-2.148C11.352,18.851,12.316,19.815,12.316,21z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_avd.xml
new file mode 100644
index 0000000..5761fd3
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_avd.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_medtoshort"
+ android:name="time2"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_longtoshort"
+ android:name="time3"/>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_reverse_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_reverse_avd.xml
new file mode 100644
index 0000000..08871cd
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_long_reverse_avd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_longtomed"
+ android:name="time3"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_staymed"
+ android:name="time2" />
+
+</animated-vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_avd.xml
new file mode 100644
index 0000000..88b7d14
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_avd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_staymed"
+ android:name="time2"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_tolong"
+ android:name="time3"/>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_reverse_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_reverse_avd.xml
new file mode 100644
index 0000000..4f08a14
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_med_reverse_avd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_medtoshort_reverse"
+ android:name="time2"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_medtoshort_reverse"
+ android:name="time3"/>
+
+</animated-vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_avd.xml
new file mode 100644
index 0000000..694e662
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_avd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_tomed"
+ android:name="time2"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_tomed"
+ android:name="time3"/>
+
+</animated-vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_reverse_avd.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_reverse_avd.xml
new file mode 100644
index 0000000..a9a1a7d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_short_reverse_avd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_screen_timeout_vector">
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_tomed"
+ android:name="time2"/>
+
+ <target
+ android:animation="@anim/ic_qs_screen_timeout_shorttolong"
+ android:name="time3"/>
+
+</animated-vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_screen_timeout_vector.xml b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_vector.xml
new file mode 100644
index 0000000..91f64fd
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_screen_timeout_vector.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+android:height="64dp"
+android:width="64dp"
+android:viewportHeight="48"
+android:viewportWidth="48">
+
+<group
+ android:name="base_screen">
+
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M38,8v32c0,2.2-1.8,4-4,4H14c-2.2,0-4-1.8-4-4V8c0-2.2,1.8-4,4-4h20C36.2,4,38,5.8,38,8Z
+M34,24 c0-5.5-4.5-10-10-10s-10,4.5-10,10c0,5.5,4.5,10,10,10S34,29.5,34,24z" />
+
+</group>
+
+<group
+ android:name="time1"
+ android:pivotX="24"
+ android:pivotY="24"
+ android:rotation="0">
+
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M24,18v6h-6C18,20.7,20.7,18,24,18z"/>
+</group>
+
+<group
+ android:name="time2"
+ android:pivotX="24"
+ android:pivotY="24"
+ android:rotation="0">
+
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M24,18v6h-6C18,20.7,20.7,18,24,18z"/>
+</group>
+
+<group
+ android:name="time3"
+ android:pivotX="24"
+ android:pivotY="24"
+ android:rotation="0">
+
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M24,18v6h-6C18,20.7,20.7,18,24,18z"/>
+
+</group>
+
+
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml b/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml
new file mode 100644
index 0000000..cefb714
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml
@@ -0,0 +1,50 @@
+<!--
+Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18.0dp"
+ android:height="24dp"
+ android:viewportWidth="36.0"
+ android:viewportHeight="36.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M6.797,13.334h1.231v1.522H6.797v2.509h-1.62v-2.509H1.101l-0.039-1.157l4.069-7.643h1.666V13.334z
+M2.648,13.334h2.53V8.721L5.137,8.713L4.984,9.148L2.648,13.334z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M16.155,15.836c-0.269,0.439-0.695,0.832-1.282,1.177c-0.587,0.344-1.344,0.517-2.271,0.517
+c-1.151,0-2.098-0.432-2.841-1.294c-0.744-0.862-1.115-1.978-1.115-3.345v-2.36c0-1.367,0.359-2.481,1.077-3.343
+c0.719-0.863,1.643-1.293,2.772-1.293c1.132,0,2.017,0.331,2.649,0.994c0.633,0.663,0.941,1.528,0.924,2.594l-0.021,0.047h-1.545
+c0-0.638-0.171-1.15-0.513-1.538c-0.341-0.389-0.831-0.583-1.469-0.583c-0.674,0-1.217,0.292-1.63,0.877
+c-0.413,0.585-0.619,1.328-0.619,2.229v2.375c0,0.912,0.215,1.662,0.645,2.25c0.431,0.587,0.992,0.881,1.684,0.881
+c0.522,0,0.935-0.068,1.238-0.205c0.304-0.138,0.533-0.305,0.688-0.502v-2.338h-2.041v-1.413h3.668V15.836z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M19.366,14.701v-2.232h-2.25v-1.541h2.25V8.695h1.5v2.232h2.256v1.541h-2.256v2.232H19.366z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_signal_hp.xml b/packages/SystemUI/res/drawable/ic_qs_signal_hp.xml
new file mode 100644
index 0000000..b8ff918
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_signal_hp.xml
@@ -0,0 +1,27 @@
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="16.4dp"
+ android:height="32dp"
+ android:viewportWidth="16.4"
+ android:viewportHeight="32">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M8,14.667H5.867V10h-3.6v4.667H0V3.333h2.267v4.933h3.6V3.333H8V14.667Z" />
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M16.4,5.6h-2.267V3.333H12V5.6H9.733v2.133H12V10h2.133V7.733H16.4V5.6Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_sync_off.xml b/packages/SystemUI/res/drawable/ic_qs_sync_off.xml
new file mode 100644
index 0000000..4dc0c6c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_sync_off.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M10 6.35V4.26c-.8 .21 -1.55 .54 -2.23 .96 l1.46 1.46c.25-.12 .5 -.24 .77
+-.33zm-7.14-.94l2.36 2.36C4.45 8.99 4 10.44 4 12c0 2.21 .91 4.2 2.36 5.64L4
+20h6v-6l-2.24 2.24C6.68 15.15 6 13.66 6 12c0-1 .25-1.94 .68 -2.77l8.08 8.08c-.25
+.13 -.5 .25 -.77 .34 v2.09c.8-.21 1.55-.54 2.23-.96l2.36 2.36 1.27-1.27L4.14
+4.14 2.86 5.41zM20 4h-6v6l2.24-2.24C17.32 8.85 18 10.34 18 12c0 1-.25 1.94-.68
+2.77l1.46 1.46C19.55 15.01 20 13.56 20 12c0-2.21-.91-4.2-2.36-5.64L20 4z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_sync_on.xml b/packages/SystemUI/res/drawable/ic_qs_sync_on.xml
new file mode 100644
index 0000000..5997690
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_sync_on.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03
+20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01 .25 -1.97 .7
+-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_category_other.xml b/packages/SystemUI/res/drawable/ic_qs_tile_category_other.xml
new file mode 100644
index 0000000..f3f9dca
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_category_other.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyangenMod 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:height="24dp" android:width="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0">
+ <path android:fillColor="#FFFFFFFF"
+ android:pathData="M12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zm7,-7H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2V5c0,-1.1 -0.89,-2 -2,-2zm-1.75,9c0,0.23 -0.02,0.46 -0.05,0.68l1.48,1.16c0.13,0.11 0.17,0.3 0.08,0.45l-1.4,2.42c-0.09,0.15 -0.27,0.21 -0.43,0.15l-1.74,-0.7c-0.36,0.28 -0.76,0.51 -1.18,0.69l-0.26,1.85c-0.03,0.17 -0.18,0.3 -0.35,0.3h-2.8c-0.17,0 -0.32,-0.13 -0.35,-0.29l-0.26,-1.85c-0.43,-0.18 -0.82,-0.41 -1.18,-0.69l-1.74,0.7c-0.16,0.06 -0.34,0 -0.43,-0.15l-1.4,-2.42c-0.09,-0.15 -0.05,-0.34 0.08,-0.45l1.48,-1.16c-0.03,-0.23 -0.05,-0.46 -0.05,-0.69 0,-0.23 0.02,-0.46 0.05,-0.68l-1.48,-1.16c-0.13,-0.11 -0.17,-0.3 -0.08,-0.45l1.4,-2.42c0.09,-0.15 0.27,-0.21 0.43,-0.15l1.74,0.7c0.36,-0.28 0.76,-0.51 1.18,-0.69l0.26,-1.85c0.03,-0.17 0.18,-0.3 0.35,-0.3h2.8c0.17,0 0.32,0.13 0.35,0.29l0.26,1.85c0.43,0.18 0.82,0.41 1.18,0.69l1.74,-0.7c0.16,-0.06 0.34,0 0.43,0.15l1.4,2.42c0.09,0.15 0.05,0.34 -0.08,0.45l-1.48,1.16c0.03,0.23 0.05,0.46 0.05,0.69z"/>
+</vector>
+
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_category_system.xml b/packages/SystemUI/res/drawable/ic_qs_tile_category_system.xml
new file mode 100644
index 0000000..a54bec7
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_category_system.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyangenMod 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:height="18dp"
+ android:width="18dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ >
+ <path android:fillColor="#FFFFFFFF"
+ android:pathData="M12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zm7,-7H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2V5c0,-1.1 -0.89,-2 -2,-2zm-1.75,9c0,0.23 -0.02,0.46 -0.05,0.68l1.48,1.16c0.13,0.11 0.17,0.3 0.08,0.45l-1.4,2.42c-0.09,0.15 -0.27,0.21 -0.43,0.15l-1.74,-0.7c-0.36,0.28 -0.76,0.51 -1.18,0.69l-0.26,1.85c-0.03,0.17 -0.18,0.3 -0.35,0.3h-2.8c-0.17,0 -0.32,-0.13 -0.35,-0.29l-0.26,-1.85c-0.43,-0.18 -0.82,-0.41 -1.18,-0.69l-1.74,0.7c-0.16,0.06 -0.34,0 -0.43,-0.15l-1.4,-2.42c-0.09,-0.15 -0.05,-0.34 0.08,-0.45l1.48,-1.16c-0.03,-0.23 -0.05,-0.46 -0.05,-0.69 0,-0.23 0.02,-0.46 0.05,-0.68l-1.48,-1.16c-0.13,-0.11 -0.17,-0.3 -0.08,-0.45l1.4,-2.42c0.09,-0.15 0.27,-0.21 0.43,-0.15l1.74,0.7c0.36,-0.28 0.76,-0.51 1.18,-0.69l0.26,-1.85c0.03,-0.17 0.18,-0.3 0.35,-0.3h2.8c0.17,0 0.32,0.13 0.35,0.29l0.26,1.85c0.43,0.18 0.82,0.41 1.18,0.69l1.74,-0.7c0.16,-0.06 0.34,0 0.43,0.15l1.4,2.42c0.09,0.15 0.05,0.34 -0.08,0.45l-1.48,1.16c0.03,0.23 0.05,0.46 0.05,0.69z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_contract.xml b/packages/SystemUI/res/drawable/ic_qs_tile_contract.xml
new file mode 100644
index 0000000..e98f57c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_contract.xml
@@ -0,0 +1,24 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18.0dp"
+ android:height="18.0dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12.000000,8.000000l-6.000000,6.000000 1.400000,1.400000 4.600000,-4.599999 4.600000,4.599999 1.400000,-1.400000z"
+ android:fillColor="#FFFFFFFF"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_delete.xml b/packages/SystemUI/res/drawable/ic_qs_tile_delete.xml
new file mode 100755
index 0000000..d934fe0
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_delete.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M6 19c0 1.1 .9 2 2 2h8c1.1 0 2-.9 2-2v-12h-12v12zm13-15h-3.5l-1-1h-5l-1
+1h-3.5v2h14v-2z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable.xml b/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable.xml
new file mode 100755
index 0000000..91e37ce
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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:name="root"
+ android:alpha="1"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="M24,24H0V0h1.4l2.9,3l1.4-1.4L4.2,0H24V24z" />
+ <path
+ android:name="cross"
+ android:strokeColor="#FFFFFFFF"
+ android:strokeWidth="3.2"
+ android:strokeAlpha="0"
+ android:pathData="M 4.4 3 L 4.7 3.3" />
+ <path
+ android:name="bin"
+ android:fillColor="#FFFFFFFF"
+ android:fillAlpha="1"
+ android:pathData="M6,19c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2V7H6V19z
+M19,4h-3.5l-1-1h-5l-1,1H5v2h14V4z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable_avd.xml b/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable_avd.xml
new file mode 100755
index 0000000..56f7021
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_delete_disable_avd.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ic_qs_tile_delete_disable" >
+ <target
+ android:name="root"
+ android:animation="@anim/ic_qs_tile_delete_disable_root_anim" />
+ <target
+ android:name="mask"
+ android:animation="@anim/ic_qs_tile_delete_disable_mask_anim" />
+ <target
+ android:name="cross"
+ android:animation="@anim/ic_qs_tile_delete_disable_cross_anim" />
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_delete_enable.xml b/packages/SystemUI/res/drawable/ic_qs_tile_delete_enable.xml
new file mode 100755
index 0000000..d58f169
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_delete_enable.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016 The CyanogenMod 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:name="root"
+ android:alpha="0.3"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <clip-path
+ android:name="mask"
+ android:pathData="M24,24H0V0h1.4l19.8,19.8l1.4-1.4L4.2,0H24V24z" />
+ <path
+ android:name="cross"
+ android:strokeColor="#FFFFFFFF"
+ android:strokeWidth="3.2"
+ android:strokeAlpha="1"
+ android:pathData="M 4.4 3 L 21 19.6" />
+ <path
+ android:name="bin"
+ android:fillColor="#FFFFFFFF"
+ android:fillAlpha="1"
+ android:pathData="M6,19c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2V7H6V19z
+M19,4h-3.5l-1-1h-5l-1,1H5v2h14V4z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_tile_expand.xml b/packages/SystemUI/res/drawable/ic_qs_tile_expand.xml
new file mode 100644
index 0000000..a429456
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_tile_expand.xml
@@ -0,0 +1,24 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18.0dp"
+ android:height="18.0dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M16.600000,8.600000l-4.600000,4.599999 -4.600000,-4.599999 -1.400000,1.400000 6.000000,6.000000 6.000000,-6.000000z"
+ android:fillColor="#FFFFFFFF"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_usb_tether_off.xml b/packages/SystemUI/res/drawable/ic_qs_usb_tether_off.xml
new file mode 100644
index 0000000..3d54152
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_usb_tether_off.xml
@@ -0,0 +1,25 @@
+<!--
+ Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="64"
+ android:viewportHeight="64">
+
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M48.677,29.715h5.255v-7.254h4.401l-7.047-9.612l-7.052,9.612h4.443V29.715z M54.688,46.753l3.645-4.971h-4.401v-7.255 h-5.255v6.215L54.688,46.753z M36.741,28.805v-3.923h2.109v-8.445h-8.444v6.034L36.741,28.805z M23.942,16.007v-1.679h4.562 l-6.547-8.976l-3.656,5.014L23.942,16.007z M28.916,34.699l22.692,22.692l3.324-3.324L7.6,6.734l-3.324,3.323l15.693,15.694 l0.004,10.381l-8.571-3.715v-3.896c1.257-0.734,2.111-2.079,2.111-3.639c0-2.33-1.887-4.222-4.224-4.222 c-2.332,0-4.222,1.892-4.222,4.222c0,1.56,0.854,2.905,2.113,3.639v6.668l12.794,5.547v5.609c-2.518,0.837-4.348,3.185-4.348,5.987 c0,3.495,2.835,6.333,6.332,6.333c3.501,0,6.337-2.838,6.337-6.333c0-2.802-1.83-5.15-4.352-5.987v-9.113L28.916,34.699z M23.938,29.72l1.843,1.843l-1.839,0.93L23.938,29.72z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_usb_tether_on.xml b/packages/SystemUI/res/drawable/ic_qs_usb_tether_on.xml
new file mode 100644
index 0000000..54f075c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_usb_tether_on.xml
@@ -0,0 +1,25 @@
+<!--
+ Copyright (C) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="64"
+ android:viewportHeight="64">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M48.677,29.724h5.255V22.47h4.401l-7.047-9.611l-7.052,9.611h4.443V29.724z M48.677,34.537h5.255v7.254h4.401l-7.047,9.611 l-7.052-9.611h4.443V34.537z M38.85,16.447h-8.444v8.445h2.11v3.251l-8.574,4.36V14.337h4.562l-6.547-8.975l-6.545,8.975h4.561 v21.805l-8.571-3.715v-3.896c1.257-0.734,2.111-2.079,2.111-3.639c0-2.33-1.887-4.222-4.224-4.222c-2.332,0-4.222,1.892-4.222,4.222c0,1.56,0.854,2.905,2.113,3.639v6.668l12.794,5.547v5.609c-2.518,0.837-4.348,3.184-4.348,5.987c0,3.495,2.835,6.333,6.332,6.333c3.501,0,6.337-2.838,6.337-6.333c0-2.802-1.83-5.15-4.352-5.987v-9.113l12.798-6.512v-5.839h2.11L38.85,16.447L38.85,16.447z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_qs_volume_panel.xml b/packages/SystemUI/res/drawable/ic_qs_volume_panel.xml
new file mode 100644
index 0000000..4b818a5
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_volume_panel.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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="64dp"
+ android:height="64dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M6.0,18.0l0.0,12.0l8.0,0.0l10.0,10.0L24.0,8.0L14.0,18.0L6.0,18.0zm27.0,6.0c0.0,-3.53 -2.04,-6.58 -5.0,-8.05l0.0,16.11c2.96,-1.48 5.0,-4.53 5.0,-8.06zM28.0,6.46l0.0,4.13c5.78,1.72 10.0,7.07 10.0,13.41s-4.22,11.69 -10.0,13.41l0.0,4.13c8.01,-1.82 14.0,-8.97 14.0,-17.54S36.01,8.28 28.0,6.46z"/> <!--TODO Needs own icon-->
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_settings.xml b/packages/SystemUI/res/drawable/ic_settings.xml
index 9c78742..545bc2d 100644
--- a/packages/SystemUI/res/drawable/ic_settings.xml
+++ b/packages/SystemUI/res/drawable/ic_settings.xml
@@ -1,26 +1,25 @@
-<!-- Copyright (C) 2014 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"+
+<!--
+ Copyright (C) 2015 The Android Open Source Project
-http://www.apache.org/licenses/LICENSE-2.0
+ 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.
+ 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.4,13.0c0.0,-0.3 0.1,-0.6 0.1,-1.0s0.0,-0.7 -0.1,-1.0l2.1,-1.7c0.2,-0.2 0.2,-0.4 0.1,-0.6l-2.0,-3.5C19.5,5.1 19.3,5.0 19.0,5.1l-2.5,1.0c-0.5,-0.4 -1.1,-0.7 -1.7,-1.0l-0.4,-2.6C14.5,2.2 14.2,2.0 14.0,2.0l-4.0,0.0C9.8,2.0 9.5,2.2 9.5,2.4L9.1,5.1C8.5,5.3 8.0,5.7 7.4,6.1L5.0,5.1C4.7,5.0 4.5,5.1 4.3,5.3l-2.0,3.5C2.2,8.9 2.3,9.2 2.5,9.4L4.6,11.0c0.0,0.3 -0.1,0.6 -0.1,1.0s0.0,0.7 0.1,1.0l-2.1,1.7c-0.2,0.2 -0.2,0.4 -0.1,0.6l2.0,3.5C4.5,18.9 4.7,19.0 5.0,18.9l2.5,-1.0c0.5,0.4 1.1,0.7 1.7,1.0l0.4,2.6c0.0,0.2 0.2,0.4 0.5,0.4l4.0,0.0c0.2,0.0 0.5,-0.2 0.5,-0.4l0.4,-2.6c0.6,-0.3 1.2,-0.6 1.7,-1.0l2.5,1.0c0.2,0.1 0.5,0.0 0.6,-0.2l2.0,-3.5c0.1,-0.2 0.1,-0.5 -0.1,-0.6L19.4,13.0zM12.0,15.5c-1.9,0.0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5s3.5,1.6 3.5,3.5S13.9,15.5 12.0,15.5z"
- android:fillColor="#ffffffff"
- />
+<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.4,13.0c0.0,-0.3 0.1,-0.6 0.1,-1.0s0.0,-0.7 -0.1,-1.0l2.1,-1.7c0.2,-0.2 0.2,-0.4 0.1,-0.6l-2.0,-3.5C19.5,5.1 19.3,5.0 19.0,5.1l-2.5,1.0c-0.5,-0.4 -1.1,-0.7 -1.7,-1.0l-0.4,-2.6C14.5,2.2 14.2,2.0 14.0,2.0l-4.0,0.0C9.8,2.0 9.5,2.2 9.5,2.4L9.1,5.1C8.5,5.3 8.0,5.7 7.4,6.1L5.0,5.1C4.7,5.0 4.5,5.1 4.3,5.3l-2.0,3.5C2.2,8.9 2.3,9.2 2.5,9.4L4.6,11.0c0.0,0.3 -0.1,0.6 -0.1,1.0s0.0,0.7 0.1,1.0l-2.1,1.7c-0.2,0.2 -0.2,0.4 -0.1,0.6l2.0,3.5C4.5,18.9 4.7,19.0 5.0,18.9l2.5,-1.0c0.5,0.4 1.1,0.7 1.7,1.0l0.4,2.6c0.0,0.2 0.2,0.4 0.5,0.4l4.0,0.0c0.2,0.0 0.5,-0.2 0.5,-0.4l0.4,-2.6c0.6,-0.3 1.2,-0.6 1.7,-1.0l2.5,1.0c0.2,0.1 0.5,0.0 0.6,-0.2l2.0,-3.5c0.1,-0.2 0.1,-0.5 -0.1,-0.6L19.4,13.0zM12.0,15.5c-1.9,0.0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5s3.5,1.6 3.5,3.5S13.9,15.5 12.0,15.5z"
+ android:fillColor="#ffffffff" />
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_volume_notification.xml b/packages/SystemUI/res/drawable/ic_volume_notification.xml
new file mode 100644
index 0000000..c566d5a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_volume_notification.xml
@@ -0,0 +1,26 @@
+<!--
+ 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp" >
+
+ <path
+ android:fillColor="@color/volume_icon_color"
+ android:pathData="M11.5,22.0c1.1,0.0 2.0,-0.9 2.0,-2.0l-4.0,0.0C9.5,21.1 10.4,22.0 11.5,22.0zM18.0,16.0l0.0,-5.5c0.0,-3.1 -2.1,-5.6 -5.0,-6.3L13.0,3.5C13.0,2.7 12.3,2.0 11.5,2.0C10.7,2.0 10.0,2.7 10.0,3.5l0.0,0.7c-2.9,0.7 -5.0,3.2 -5.0,6.3L5.0,16.0l-2.0,2.0l0.0,1.0l17.0,0.0l0.0,-1.0L18.0,16.0z" />
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_volume_notification_mute.xml b/packages/SystemUI/res/drawable/ic_volume_notification_mute.xml
new file mode 100644
index 0000000..57cde85
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_volume_notification_mute.xml
@@ -0,0 +1,26 @@
+<!--
+ Copyright (C) 2014 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:fillColor="@color/volume_icon_color"
+ android:pathData="M11.5,22.0c1.1,0.0 2.0,-0.9 2.0,-2.0l-4.0,0.0C9.5,21.1 10.4,22.0 11.5,22.0zM18.0,10.5c0.0,-3.1 -2.1,-5.6 -5.0,-6.3L13.0,3.5C13.0,2.7 12.3,2.0 11.5,2.0C10.7,2.0 10.0,2.7 10.0,3.5l0.0,0.7C9.5,4.3 9.0,4.5 8.6,4.7l9.4,9.4L18.0,10.5zM17.7,19.0l2.0,2.0l1.3,-1.3L4.3,3.0L3.0,4.3l2.9,2.9C5.3,8.2 5.0,9.3 5.0,10.5L5.0,16.0l-2.0,2.0l0.0,1.0L17.7,19.0z" />
+
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_volume_ringer.xml b/packages/SystemUI/res/drawable/ic_volume_ringer.xml
index c566d5a..4d5fe81 100644
--- a/packages/SystemUI/res/drawable/ic_volume_ringer.xml
+++ b/packages/SystemUI/res/drawable/ic_volume_ringer.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (C) 2015 The Android Open Source Project
+ Copyright (C) 2016 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,13 +15,12 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
android:height="24dp"
- android:viewportHeight="24.0"
- android:viewportWidth="24.0"
- android:width="24dp" >
+ android:viewportWidth="24"
+ android:viewportHeight="24">
<path
android:fillColor="@color/volume_icon_color"
- android:pathData="M11.5,22.0c1.1,0.0 2.0,-0.9 2.0,-2.0l-4.0,0.0C9.5,21.1 10.4,22.0 11.5,22.0zM18.0,16.0l0.0,-5.5c0.0,-3.1 -2.1,-5.6 -5.0,-6.3L13.0,3.5C13.0,2.7 12.3,2.0 11.5,2.0C10.7,2.0 10.0,2.7 10.0,3.5l0.0,0.7c-2.9,0.7 -5.0,3.2 -5.0,6.3L5.0,16.0l-2.0,2.0l0.0,1.0l17.0,0.0l0.0,-1.0L18.0,16.0z" />
-
-</vector> \ No newline at end of file
+ android:pathData="M23.71,16.67C20.66,13.78 16.54,12 12,12 7.46,12 3.34,13.78 0.29,16.67c-0.18,0.18 -0.29,0.43 -0.29,0.71 0,0.28 0.11,0.53 0.29,0.71l2.48,2.48c0.18,0.18 0.43,0.29 0.71,0.29 0.27,0 0.52,-0.11 0.7,-0.28 0.79,-0.74 1.69,-1.36 2.66,-1.85 0.33,-0.16 0.56,-0.5 0.56,-0.9v-3.1c1.45,-0.48 3,-0.73 4.6,-0.73s3.15,0.25 4.6,0.72v3.1c0,0.39 0.23,0.74 0.56,0.9 0.98,0.49 1.87,1.12 2.66,1.85 0.18,0.18 0.43,0.28 0.7,0.28 0.28,0 0.53,-0.11 0.71,-0.29l2.48,-2.48c0.18,-0.18 0.29,-0.43 0.29,-0.71 0,-0.27 -0.11,-0.52 -0.29,-0.7zM21.16,6.26l-1.41,-1.41 -3.56,3.55 1.41,1.41s3.45,-3.52 3.56,-3.55zM13,2h-2v5h2V2zM6.4,9.81L7.81,8.4 4.26,4.84 2.84,6.26c0.11,0.03 3.56,3.55 3.56,3.55z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/lockscreen_shortcuts_phone_background.xml b/packages/SystemUI/res/drawable/lockscreen_shortcuts_phone_background.xml
new file mode 100644
index 0000000..e3cae61
--- /dev/null
+++ b/packages/SystemUI/res/drawable/lockscreen_shortcuts_phone_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item>
+ <shape
+ android:shape="rectangle">
+ <solid
+ android:color="#333333" />
+ <size android:height="@dimen/phone_height" android:width="@dimen/phone_width" />
+ <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" />
+ </shape>
+ </item>
+ <item android:bottom="@dimen/phone_bottom_padding" android:right="@dimen/phone_side_padding" android:left="@dimen/phone_side_padding">
+ <shape
+ android:shape="rectangle">
+ <solid
+ android:color="@android:color/black" />
+ </shape>
+ </item>
+</layer-list>
+
diff --git a/packages/SystemUI/res/drawable/lockscreen_target_background.xml b/packages/SystemUI/res/drawable/lockscreen_target_background.xml
new file mode 100644
index 0000000..d26da7e
--- /dev/null
+++ b/packages/SystemUI/res/drawable/lockscreen_target_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+ <!--
+ Copyright (C) 2014 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.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="#DDDDDD">
+</ripple>
diff --git a/packages/SystemUI/res/drawable/notification_guts_ic_ringer_mute.xml b/packages/SystemUI/res/drawable/notification_guts_ic_ringer_mute.xml
new file mode 100644
index 0000000..63c8315
--- /dev/null
+++ b/packages/SystemUI/res/drawable/notification_guts_ic_ringer_mute.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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 android:drawable="@drawable/ic_volume_ringer_mute" />
+</layer-list>
diff --git a/packages/SystemUI/res/drawable/notification_guts_ic_settings.xml b/packages/SystemUI/res/drawable/notification_guts_ic_settings.xml
new file mode 100644
index 0000000..312a55f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/notification_guts_ic_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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 android:drawable="@drawable/ic_settings" />
+</layer-list>
diff --git a/packages/SystemUI/res/drawable/notification_guts_queue_bg.xml b/packages/SystemUI/res/drawable/notification_guts_queue_bg.xml
new file mode 100644
index 0000000..4a869c5
--- /dev/null
+++ b/packages/SystemUI/res/drawable/notification_guts_queue_bg.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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>
+ <shape android:shape="rectangle">
+ <solid android:color="@color/notification_guts_media_bg_color"/>
+ </shape>
+ </item>
+
+
+</layer-list>
+
diff --git a/packages/SystemUI/res/drawable/qs_tile_background_drag.xml b/packages/SystemUI/res/drawable/qs_tile_background_drag.xml
new file mode 100644
index 0000000..0a3ba2d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/qs_tile_background_drag.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2015, The CyanogenMod 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.
+*/
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid android:color="#FF37474f" />
+</shape>
diff --git a/packages/SystemUI/res/drawable/queue_bg.xml b/packages/SystemUI/res/drawable/queue_bg.xml
new file mode 100644
index 0000000..0ca04c0
--- /dev/null
+++ b/packages/SystemUI/res/drawable/queue_bg.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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">
+ <ripple android:color="?android:colorControlHighlight">
+ <item android:state_pressed="true">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/queue_background_pressed"/>
+ </shape>
+ </item>
+ </ripple>
+ <ripple android:color="?android:colorControlHighlight">
+ <item android:state_selected="true">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/queue_background_pressed"/>
+ </shape>
+ </item>
+ </ripple>
+ <ripple android:color="?android:colorControlHighlight">
+ <item android:state_focused="true">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/queue_background_pressed"/>
+ </shape>
+ </item>
+ </ripple>
+ <item>
+ <shape android:shape="rectangle">
+ <solid android:color="@color/queue_background"/>
+ </shape>
+ </item>
+</selector>
diff --git a/packages/SystemUI/res/drawable/queue_gradient.xml b/packages/SystemUI/res/drawable/queue_gradient.xml
new file mode 100644
index 0000000..614a214
--- /dev/null
+++ b/packages/SystemUI/res/drawable/queue_gradient.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <gradient
+ android:type="linear"
+ android:angle="270"
+ android:startColor="#FF000000"
+ android:endColor="@color/queue_background"/>
+</shape>
diff --git a/packages/SystemUI/res/drawable/queue_row_background.xml b/packages/SystemUI/res/drawable/queue_row_background.xml
new file mode 100644
index 0000000..d6855a4
--- /dev/null
+++ b/packages/SystemUI/res/drawable/queue_row_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <item android:id="@+id/mask">
+ <color android:color="@color/queue_background_pressed"/>
+ </item>
+</ripple>
diff --git a/packages/SystemUI/res/drawable/stat_notify_image.xml b/packages/SystemUI/res/drawable/stat_notify_image.xml
new file mode 100644
index 0000000..17c1bda
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_notify_image.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M21,19V5c0-1.1-0.9-2-2-2H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14C20.1,21,21,20.1,21,19z
+M8.5,13.5l2.5,3l3.5-4.5l4.5,6H5 L8.5,13.5z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/stat_notify_image_error.xml b/packages/SystemUI/res/drawable/stat_notify_image_error.xml
new file mode 100644
index 0000000..3c2ca40
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_notify_image_error.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2015 The CyanogenMod 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"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z
+M14,12v6h-2h-1H5 l3.5-4.5L10,15l3-4L14,12z M18,18h-2v-2h2V18z M18,14h-2V7h2V14z" />
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_1.xml b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_1.xml
new file mode 100644
index 0000000..3a4ee98
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_1.xml
@@ -0,0 +1,28 @@
+<!--
+Copyright (C) 2014 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="20dp"
+ android:height="17dp"
+ android:viewportWidth="56.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.0,24.0l-4.0,-4.0l-4.0,4.0l4.0,4.0L14.0,24.0zM35.4,15.4L24.0,4.0l-2.0,0.0l0.0,15.2L12.8,10.0L10.0,12.8L21.2,24.0L10.0,35.2l2.8,2.8l9.2,-9.2L22.0,44.0l2.0,0.0l11.4,-11.4L26.8,24.0L35.4,15.4zM26.0,11.7l3.8,3.8L26.0,19.2L26.0,11.7zM29.8,32.6L26.0,36.3l0.0,-7.5L29.8,32.6zM38.0,20.0l-4.0,4.0l4.0,4.0l4.0,-4.0L38.0,20.0z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_2.xml b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_2.xml
new file mode 100644
index 0000000..3a01881
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_2.xml
@@ -0,0 +1,31 @@
+<!--
+Copyright (C) 2014 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="20dp"
+ android:height="17dp"
+ android:viewportWidth="56.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.0,24.0l-4.0,-4.0l-4.0,4.0l4.0,4.0L14.0,24.0zM35.4,15.4L24.0,4.0l-2.0,0.0l0.0,15.2L12.8,10.0L10.0,12.8L21.2,24.0L10.0,35.2l2.8,2.8l9.2,-9.2L22.0,44.0l2.0,0.0l11.4,-11.4L26.8,24.0L35.4,15.4zM26.0,11.7l3.8,3.8L26.0,19.2L26.0,11.7zM29.8,32.6L26.0,36.3l0.0,-7.5L29.8,32.6zM38.0,20.0l-4.0,4.0l4.0,4.0l4.0,-4.0L38.0,20.0z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M44,34V44h8V34h-8z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_3.xml b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_3.xml
new file mode 100644
index 0000000..9639d28
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_3.xml
@@ -0,0 +1,31 @@
+<!--
+Copyright (C) 2014 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="20dp"
+ android:height="17dp"
+ android:viewportWidth="56.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.0,24.0l-4.0,-4.0l-4.0,4.0l4.0,4.0L14.0,24.0zM35.4,15.4L24.0,4.0l-2.0,0.0l0.0,15.2L12.8,10.0L10.0,12.8L21.2,24.0L10.0,35.2l2.8,2.8l9.2,-9.2L22.0,44.0l2.0,0.0l11.4,-11.4L26.8,24.0L35.4,15.4zM26.0,11.7l3.8,3.8L26.0,19.2L26.0,11.7zM29.8,32.6L26.0,36.3l0.0,-7.5L29.8,32.6zM38.0,20.0l-4.0,4.0l4.0,4.0l4.0,-4.0L38.0,20.0z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M44,24V44h8V24h-8z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_4.xml b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_4.xml
new file mode 100644
index 0000000..1e8ac10
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_4.xml
@@ -0,0 +1,31 @@
+<!--
+Copyright (C) 2014 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="20dp"
+ android:height="17dp"
+ android:viewportWidth="56.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.0,24.0l-4.0,-4.0l-4.0,4.0l4.0,4.0L14.0,24.0zM35.4,15.4L24.0,4.0l-2.0,0.0l0.0,15.2L12.8,10.0L10.0,12.8L21.2,24.0L10.0,35.2l2.8,2.8l9.2,-9.2L22.0,44.0l2.0,0.0l11.4,-11.4L26.8,24.0L35.4,15.4zM26.0,11.7l3.8,3.8L26.0,19.2L26.0,11.7zM29.8,32.6L26.0,36.3l0.0,-7.5L29.8,32.6zM38.0,20.0l-4.0,4.0l4.0,4.0l4.0,-4.0L38.0,20.0z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M44,14V44h8V14h-8z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_5.xml b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_5.xml
new file mode 100644
index 0000000..7464bec
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_bluetooth_connected_battery_5.xml
@@ -0,0 +1,31 @@
+<!--
+Copyright (C) 2014 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="20dp"
+ android:height="17dp"
+ android:viewportWidth="56.0"
+ android:viewportHeight="48.0">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M14.0,24.0l-4.0,-4.0l-4.0,4.0l4.0,4.0L14.0,24.0zM35.4,15.4L24.0,4.0l-2.0,0.0l0.0,15.2L12.8,10.0L10.0,12.8L21.2,24.0L10.0,35.2l2.8,2.8l9.2,-9.2L22.0,44.0l2.0,0.0l11.4,-11.4L26.8,24.0L35.4,15.4zM26.0,11.7l3.8,3.8L26.0,19.2L26.0,11.7zM29.8,32.6L26.0,36.3l0.0,-7.5L29.8,32.6zM38.0,20.0l-4.0,4.0l4.0,4.0l4.0,-4.0L38.0,20.0z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M44,4V44h8V4h-8z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml
new file mode 100644
index 0000000..59e880b
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml
@@ -0,0 +1,50 @@
+<!--
+Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="15dp"
+ android:height="20dp"
+ android:viewportWidth="36"
+ android:viewportHeight="36">
+
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M6.797,13.334h1.231v1.522H6.797v2.509h-1.62v-2.509H1.101l-0.039-1.157l4.069-7.643h1.666V13.334z
+M2.648,13.334h2.53V8.721L5.137,8.713L4.984,9.148L2.648,13.334z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M16.155,15.836c-0.269,0.439-0.695,0.832-1.282,1.177c-0.587,0.344-1.344,0.517-2.271,0.517
+c-1.151,0-2.098-0.432-2.841-1.294c-0.744-0.862-1.115-1.978-1.115-3.345v-2.36c0-1.367,0.359-2.481,1.077-3.343
+c0.719-0.863,1.643-1.293,2.772-1.293c1.132,0,2.017,0.331,2.649,0.994c0.633,0.663,0.941,1.528,0.924,2.594l-0.021,0.047h-1.545
+c0-0.638-0.171-1.15-0.513-1.538c-0.341-0.389-0.831-0.583-1.469-0.583c-0.674,0-1.217,0.292-1.63,0.877
+c-0.413,0.585-0.619,1.328-0.619,2.229v2.375c0,0.912,0.215,1.662,0.645,2.25c0.431,0.587,0.992,0.881,1.684,0.881
+c0.522,0,0.935-0.068,1.238-0.205c0.304-0.138,0.533-0.305,0.688-0.502v-2.338h-2.041v-1.413h3.668V15.836z" />
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M19.366,14.701v-2.232h-2.25v-1.541h2.25V8.695h1.5v2.232h2.256v1.541h-2.256v2.232H19.366z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_hp.xml b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_hp.xml
new file mode 100644
index 0000000..a464e18
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_hp.xml
@@ -0,0 +1,27 @@
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="8.454dp"
+ android:height="17dp"
+ android:viewportWidth="8.454"
+ android:viewportHeight="17">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M4.25,7.792H3.117V5.313H1.204v2.479H0V1.771h1.204v2.621h1.912V1.771H4.25V7.792Z" />
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M8.454,2.975H7.25V1.771H6.117v1.204H4.912v1.133h1.205v1.205H7.25V4.108h1.204V2.975Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_roaming.xml b/packages/SystemUI/res/drawable/stat_sys_data_roaming.xml
new file mode 100644
index 0000000..17c4b04
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_roaming.xml
@@ -0,0 +1,22 @@
+<!--
+Copyright (C) 2014 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="4.25dp"
+ android:height="17dp"
+ android:viewportWidth="6.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M 2.8,18.8 l -1,0 0,3.1 -1.6,0 0,-8.5 2.7,0 c 0.9,0 1.5,0.2 2,0.7 0.5,0.5 0.7,1.1 0.7,1.9 0,0.6 -0.1,1.1 -0.3,1.5 -0.2,0.4 -0.5,0.6 -0.9,0.8 l 1.5,3.5 0,0.1 -1.8,0 -1.3,-3.1 z m -1,-1.4 1.1,0 C 3.3,17.4 3.5,17.3 3.7,17 3.9,16.7 4,16.5 4,16.1 4,15.7 3.9,15.3 3.7,15.1 3.5,14.9 3.3,14.7 2.9,14.7 l -1.1,0 0,2.7 z" />
+
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/stat_sys_dnd_priority.xml b/packages/SystemUI/res/drawable/stat_sys_dnd_priority.xml
new file mode 100644
index 0000000..2664bc6
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_dnd_priority.xml
@@ -0,0 +1,28 @@
+<!--
+ 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.
+-->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+ android:insetLeft="2.5dip"
+ android:insetRight="2.5dip">
+ <vector
+ android:width="17.0dip"
+ android:height="17.0dip"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M24,4C12.95,4,4,12.95,4,24s8.95,20,20,20s20-8.95,20-20S35.05,4,24,4z M34,26h-8v8h-4v-8h-8v-4h8v-8h4v8h8V26z" />
+ </vector>
+</inset> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/stat_sys_su.xml b/packages/SystemUI/res/drawable/stat_sys_su.xml
new file mode 100644
index 0000000..e013c13
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_su.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+ android:insetLeft="2.5dp"
+ android:insetRight="2.5dp">
+ <vector
+ android:width="23dp"
+ android:height="18dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12.49,15.934h-2.373L9.24,21H6.966l0.89-5.066H5.051v-2.089h3.163l0.63-3.584H5.977V8.148h3.238 l0.902-5.141h2.261l-0.902,5.141h2.373l0.914-5.141h2.261l-0.902,5.141h2.719v2.113h-3.089l-0.63,3.584h2.78v2.089h-3.139L13.874,21 H11.6L12.49,15.934Z M10.488,13.845h2.36l0.63-3.584h-2.373L10.488,13.845z" />
+ </vector>
+</inset>
diff --git a/packages/SystemUI/res/drawable/volume_dialog_background.xml b/packages/SystemUI/res/drawable/volume_dialog_background.xml
index f09c01b..8ac471f 100644
--- a/packages/SystemUI/res/drawable/volume_dialog_background.xml
+++ b/packages/SystemUI/res/drawable/volume_dialog_background.xml
@@ -19,4 +19,4 @@
<corners android:radius="@dimen/notification_material_rounded_rect_radius" />
-</shape> \ No newline at end of file
+</shape>
diff --git a/packages/SystemUI/res/drawable/zen_mode_panel_background.xml b/packages/SystemUI/res/drawable/zen_mode_panel_background.xml
new file mode 100644
index 0000000..a91520a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/zen_mode_panel_background.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/system_secondary_color" />
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="0dp"
+ android:bottomLeftRadius="@dimen/zen_mode_panel_radius"
+ android:bottomRightRadius="@dimen/zen_mode_panel_radius"/>
+</shape>
diff --git a/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_land.xml b/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_land.xml
new file mode 100644
index 0000000..43426d1
--- /dev/null
+++ b/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_land.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2015, The CyanogenMod 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.
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/nav_buttons">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_left"
+ android:visibility="gone"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/one"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside" />
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="wrap_content"
+ android:layout_weight="1"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/mid_nav_buttons"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
+ android:animateLayoutChanges="true">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/two"
+ android:scaleType="centerInside"
+ android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/three"
+ android:scaleType="centerInside"
+ android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/four"
+ android:scaleType="centerInside"
+ android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/five"
+ android:scaleType="centerInside"
+ android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ </LinearLayout>
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <FrameLayout
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:layout_marginEnd="2dp" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/ime_switcher"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_marginEnd="2dp"
+ android:scaleType="centerInside"
+ android:src="@drawable/ic_ime_switcher_default"
+ android:visibility="invisible"
+ android:contentDescription="@string/accessibility_ime_switch_button" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/six"
+ android:scaleType="centerInside"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_right"
+ android:visibility="gone"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true"/>
+ </FrameLayout>
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_port.xml b/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_port.xml
new file mode 100644
index 0000000..a7dedbd
--- /dev/null
+++ b/packages/SystemUI/res/layout-sw600dp/mid_navigation_bar_port.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2015 The CyanogenMod 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.
+*/
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/nav_buttons">
+ <FrameLayout
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_left"
+ android:visibility="gone"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="fitCenter"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_left"
+ android:visibility="gone"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="fitCenter"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/one"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="fitCenter" />
+ </FrameLayout>
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="wrap_content"
+ android:layout_weight="1"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/mid_nav_buttons"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
+ android:animateLayoutChanges="true">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/two"
+ android:scaleType="centerInside"
+ android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/three"
+ android:scaleType="centerInside"
+ android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/four"
+ android:scaleType="centerInside"
+ android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/five"
+ android:scaleType="centerInside"
+ android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ </LinearLayout>
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <FrameLayout
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:layout_marginEnd="2dp" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/ime_switcher"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:scaleType="centerInside"
+ android:src="@drawable/ic_ime_switcher_default"
+ android:visibility="invisible"
+ android:contentDescription="@string/accessibility_ime_switch_button" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/six"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_right"
+ android:visibility="gone"
+ android:layout_width="48dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true" />
+ </FrameLayout>
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
index 9912343..68883ce 100644
--- a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
+++ b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
@@ -3,16 +3,16 @@
**
** Copyright 2012, 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
+** 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
+** 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
+** 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.
-->
@@ -36,126 +36,65 @@
android:orientation="horizontal"
android:clipChildren="false"
android:clipToPadding="false"
- android:id="@+id/nav_buttons"
- android:animateLayoutChanges="true"
+ android:id="@+id/container"
>
- <!-- navigation controls -->
- <View
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_weight="0"
- android:layout_marginStart="2dp"
- android:visibility="invisible"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_back"
- android:scaleType="centerInside"
- systemui:keyCode="4"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_home"
- android:scaleType="centerInside"
- systemui:keyCode="3"
- systemui:keyRepeat="true"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_recent"
- android:scaleType="centerInside"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <FrameLayout
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_weight="0"
- android:layout_marginEnd="2dp" >
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_menu"
- android:scaleType="centerInside"
- android:layout_marginEnd="2dp"
- systemui:keyCode="82"
- android:visibility="invisible"
- android:contentDescription="@string/accessibility_menu"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/ime_switcher"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_marginEnd="2dp"
- android:scaleType="centerInside"
- android:src="@drawable/ic_ime_switcher_default"
- android:visibility="invisible"
- android:contentDescription="@string/accessibility_ime_switch_button" />
- </FrameLayout>
+ <include layout="@layout/mid_navigation_bar_port"/>
+
</LinearLayout>
- <!-- lights out layout to match exactly -->
- <LinearLayout
+ <LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
- android:id="@+id/lights_out"
- android:visibility="gone"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
>
- <Space
- android:layout_width="match_parent"
+ <View
+ android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <ImageView
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
+ android:layout_weight="1" />
+ <!-- lights out layout to match exactly -->
+ <LinearLayout
android:layout_height="match_parent"
+ android:layout_width="wrap_content"
+ android:layout_weight="1"
+ android:orientation="horizontal"
+ android:gravity="center_horizontal"
android:layout_marginStart="40dp"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
- />
- <ImageView
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_large"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
- />
- <ImageView
- android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
android:layout_marginEnd="40dp"
+ android:layout_gravity="center_horizontal"
+ android:id="@+id/lights_out"
+ android:visibility="gone">
+ <ImageView
+ android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="128dp" android:paddingStart="25dp" android:paddingEnd="25dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ </LinearLayout>
+ <View
+ android:layout_width="0dp"
android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
+ android:layout_weight="1" />
</LinearLayout>
<com.android.systemui.statusbar.policy.DeadZone
@@ -182,127 +121,72 @@
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
android:clipChildren="false"
android:clipToPadding="false"
- android:id="@+id/nav_buttons"
- android:animateLayoutChanges="true"
+ android:id="@+id/container"
>
- <!-- navigation controls -->
- <View
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_weight="0"
- android:layout_marginStart="2dp"
- android:visibility="invisible"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_back"
- android:scaleType="centerInside"
- systemui:keyCode="4"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_home"
- android:scaleType="centerInside"
- systemui:keyCode="3"
- systemui:keyRepeat="true"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_recent"
- android:scaleType="centerInside"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <FrameLayout
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_marginEnd="2dp"
- android:layout_weight="0" >
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_marginEnd="2dp"
- android:src="@drawable/ic_sysbar_menu"
- android:scaleType="centerInside"
- systemui:keyCode="82"
- android:visibility="invisible"
- android:contentDescription="@string/accessibility_menu" />
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/ime_switcher"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:layout_marginEnd="2dp"
- android:src="@drawable/ic_ime_switcher_default"
- android:visibility="invisible"
- android:contentDescription="@string/accessibility_ime_switch_button"
- android:scaleType="centerInside" />
- </FrameLayout>
+ <include layout="@layout/mid_navigation_bar_land"/>
+
</LinearLayout>
- <!-- lights out layout to match exactly -->
+ <!-- lights out layout to match exactly -->
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
- android:id="@+id/lights_out"
- android:visibility="gone"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
+ android:visibility="visible"
>
- <Space
- android:layout_width="match_parent"
+ <View
+ android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1"
- />
- <ImageView
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
+ android:layout_weight="1" />
+ <!-- lights out layout to match exactly -->
+ <LinearLayout
android:layout_height="match_parent"
+ android:layout_width="wrap_content"
+ android:layout_weight="1"
+ android:orientation="horizontal"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
android:layout_marginStart="40dp"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
- />
- <ImageView
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_large"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
- />
- <ImageView
- android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
android:layout_marginEnd="40dp"
+ android:id="@+id/lights_out"
+ android:visibility="gone"
+ >
+ <ImageView
+ android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ <ImageView
+ android:layout_width="162dp" android:paddingStart="42dp" android:paddingEnd="42dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
+ android:scaleType="center"
+ />
+ </LinearLayout>
+ <View
+ android:layout_width="0dp"
android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
- />
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
+ android:layout_weight="1" />
</LinearLayout>
<com.android.systemui.statusbar.policy.DeadZone
diff --git a/packages/SystemUI/res/layout/cmland.xml b/packages/SystemUI/res/layout/cmland.xml
new file mode 100644
index 0000000..3c4e561
--- /dev/null
+++ b/packages/SystemUI/res/layout/cmland.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The Android Open Source Project
+ Copyright (C) 2014-2015 The CyanogenMod 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:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+ <com.android.systemui.egg.CMLand
+ android:id="@+id/world"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ </com.android.systemui.egg.CMLand>
+ <FrameLayout
+ android:id="@+id/welcome"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone"
+ android:background="#a0000000"
+ android:clickable="true"
+ >
+ <FrameLayout
+ android:id="@+id/play_button"
+ android:layout_width="72dp"
+ android:layout_height="72dp"
+ android:layout_gravity="center"
+ android:clickable="true"
+ android:background="@drawable/ripplebg"
+ android:focusable="true"
+ android:onClick="startButtonPressed"
+ >
+ <ImageView
+ android:id="@+id/play_button_image"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:scaleType="fitCenter"
+ android:layout_gravity="center"
+ android:tint="#000000"
+ android:src="@drawable/play"
+ />
+ <TextView
+ android:id="@+id/play_button_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:alpha="0"
+ android:textSize="40dp"
+ android:textColor="#000000"
+ />
+ </FrameLayout>
+ </FrameLayout>
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top|center_horizontal"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:id="@+id/player_setup"
+ >
+ <ImageButton
+ style="@android:style/Widget.Material.Button.Borderless"
+ android:id="@+id/player_minus_button"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:padding="10dp"
+ android:scaleType="centerInside"
+ android:onClick="playerMinus"
+ android:src="@drawable/minus"
+ />
+ <LinearLayout
+ android:id="@+id/scores"
+ android:layout_width="wrap_content"
+ android:layout_height="64dp"
+ android:padding="12dp"
+ android:orientation="horizontal"
+ android:clipToPadding="false"
+ >
+ </LinearLayout>
+ <ImageButton
+ style="@android:style/Widget.Material.Button.Borderless"
+ android:id="@+id/player_plus_button"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:padding="10dp"
+ android:scaleType="centerInside"
+ android:onClick="playerPlus"
+ android:src="@drawable/plus"
+ />
+ </LinearLayout>
+</FrameLayout>
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 444f0f0..20ed3bc 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -19,27 +19,27 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:id="@+id/keyguard_bottom_area"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_width="match_parent"
android:outlineProvider="none"
android:elevation="5dp" > <!-- Put it above the status bar header -->
<com.android.systemui.statusbar.phone.KeyguardIndicationTextView
android:id="@+id/keyguard_indication_text"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/keyguard_indication_margin_bottom"
android:layout_gravity="bottom|center_horizontal"
android:gravity="center_horizontal"
android:textStyle="italic"
- android:textColor="#ffffff"
+ android:textColor="@color/keyguard_indication_text_color"
android:textAppearance="?android:attr/textAppearanceSmall"
android:accessibilityLiveRegion="polite" />
<FrameLayout
android:id="@+id/preview_container"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="wrap_content">
</FrameLayout>
<com.android.systemui.statusbar.KeyguardAffordanceView
@@ -47,7 +47,6 @@
android:layout_height="@dimen/keyguard_affordance_height"
android:layout_width="@dimen/keyguard_affordance_width"
android:layout_gravity="bottom|end"
- android:tint="#ffffffff"
android:src="@drawable/ic_camera_alt_24dp"
android:scaleType="center"
android:contentDescription="@string/accessibility_camera_button" />
@@ -57,7 +56,6 @@
android:layout_height="@dimen/keyguard_affordance_height"
android:layout_width="@dimen/keyguard_affordance_width"
android:layout_gravity="bottom|start"
- android:tint="#ffffffff"
android:src="@drawable/ic_phone_24dp"
android:scaleType="center"
android:contentDescription="@string/accessibility_phone_button" />
diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml
index b5f917a..fcd7e62 100644
--- a/packages/SystemUI/res/layout/keyguard_status_bar.xml
+++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml
@@ -52,13 +52,23 @@
>
<include layout="@layout/system_icons" />
</FrameLayout>
- <TextView android:id="@+id/battery_level"
+ <com.android.systemui.BatteryLevelTextView android:id="@+id/battery_level_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/header_battery_margin_keyguard"
android:paddingEnd="@dimen/battery_level_padding_end"
- android:textColor="#ffffff"
+ android:textColor="@color/status_bar_battery_level_text_color"
+ android:visibility="gone"
+ android:textSize="@dimen/battery_level_text_size"
+ android:importantForAccessibility="noHideDescendants"/>
+ <com.android.systemui.DockBatteryLevelTextView android:id="@+id/dock_battery_level_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="@dimen/header_battery_margin_keyguard"
+ android:paddingEnd="@dimen/battery_level_padding_end"
+ android:textColor="@color/status_bar_battery_level_text_color"
android:visibility="gone"
android:textSize="@dimen/battery_level_text_size"
android:importantForAccessibility="noHideDescendants"/>
@@ -73,7 +83,7 @@
android:gravity="center_vertical"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#ffffff"
+ android:textColor="@color/keyguard_carrier_text_color"
android:singleLine="true" />
</com.android.systemui.statusbar.phone.KeyguardStatusBarView>
diff --git a/packages/SystemUI/res/layout/lockscreen_shortcuts.xml b/packages/SystemUI/res/layout/lockscreen_shortcuts.xml
new file mode 100644
index 0000000..fec5e83
--- /dev/null
+++ b/packages/SystemUI/res/layout/lockscreen_shortcuts.xml
@@ -0,0 +1,65 @@
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <ImageView
+ android:id="@+id/phone_button"
+ android:gravity="center_horizontal"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_centerHorizontal="true"
+ android:src="@drawable/lockscreen_shortcuts_phone_background" />
+
+ <TextView
+ android:textSize="15sp"
+ android:textColor="@color/lockscreen_message_text_color"
+ android:gravity="center"
+ android:layout_below="@id/phone_button"
+ android:layout_alignStart="@id/phone_button"
+ android:layout_alignEnd="@id/phone_button"
+ android:text="@string/lockscreen_message"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" />
+
+ <RelativeLayout
+ android:layout_alignEnd="@id/phone_button"
+ android:layout_alignStart="@id/phone_button"
+ android:layout_alignBottom="@id/phone_button"
+ android:layout_marginStart="@dimen/phone_side_padding"
+ android:layout_marginEnd="@dimen/phone_side_padding"
+ android:paddingBottom="@dimen/phone_bottom_padding"
+ android:clipChildren="false"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/phone_height">
+ <ImageView
+ android:layout_marginStart="@dimen/lockscreen_icon_side_padding"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentStart="true"
+ android:clickable="true"
+ android:scaleType="center"
+ android:id="@+id/left_button"
+ android:layout_width="@dimen/keyguard_affordance_width"
+ android:layout_height="@dimen/keyguard_affordance_height" />
+ <ImageView
+ android:id="@+id/middle_button"
+ android:tint="@color/lockscreen_middle_button_tint_color"
+ android:layout_centerHorizontal="true"
+ android:layout_alignParentBottom="true"
+ android:scaleType="center"
+ android:src="@drawable/ic_lock_24dp"
+ android:layout_width="@dimen/keyguard_affordance_width"
+ android:layout_height="@dimen/keyguard_affordance_height" />
+ <ImageView
+ android:layout_marginEnd="@dimen/lockscreen_icon_side_padding"
+ android:id="@+id/right_button"
+ android:clickable="true"
+ android:scaleType="center"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentEnd="true"
+ android:layout_width="@dimen/keyguard_affordance_width"
+ android:layout_height="@dimen/keyguard_affordance_height" />
+ </RelativeLayout>
+</RelativeLayout>
diff --git a/packages/SystemUI/res/layout/mid_navigation_bar_land.xml b/packages/SystemUI/res/layout/mid_navigation_bar_land.xml
new file mode 100644
index 0000000..6a1f7aa
--- /dev/null
+++ b/packages/SystemUI/res/layout/mid_navigation_bar_land.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2015 The CyanogenMod 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.
+*/
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/nav_buttons">
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/ime_switcher"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:contentDescription="@string/accessibility_ime_switch_button"
+ android:scaleType="centerInside"
+ android:src="@drawable/ic_ime_switcher_default"
+ android:visibility="invisible" />
+
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/one"
+ android:scaleType="centerInside"
+ android:layout_height="40dp"
+ android:layout_width="match_parent"
+ android:layout_weight="0" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_left"
+ android:visibility="gone"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true"/>
+ </FrameLayout>
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:clipChildren="false"
+ android:gravity="center_vertical"
+ android:id="@+id/mid_nav_buttons"
+ android:layout_gravity="center_vertical"
+ android:clipToPadding="false"
+ android:animateLayoutChanges="true">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/two"
+ android:scaleType="centerInside"
+ android:layout_height="80dp"
+ android:layout_width="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ <View
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:visibility="invisible" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/three"
+ android:scaleType="centerInside"
+ android:layout_height="80dp"
+ android:layout_width="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <View
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:visibility="invisible" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/four"
+ android:scaleType="centerInside"
+ android:layout_height="80dp"
+ android:layout_width="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ <View
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:visibility="invisible" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/five"
+ android:scaleType="centerInside"
+ android:layout_height="80dp"
+ android:layout_width="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ </LinearLayout>
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_right"
+ android:visibility="gone"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/six"
+ android:scaleType="centerInside"
+ android:layout_height="40dp"
+ android:layout_width="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ </FrameLayout>
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/mid_navigation_bar_port.xml b/packages/SystemUI/res/layout/mid_navigation_bar_port.xml
new file mode 100644
index 0000000..6dfdc16
--- /dev/null
+++ b/packages/SystemUI/res/layout/mid_navigation_bar_port.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2015 The CyanogenMod 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.
+*/
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/nav_buttons">
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_left"
+ android:visibility="gone"
+ android:layout_width="40dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/one"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside" />
+ </FrameLayout>
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:id="@+id/mid_nav_buttons"
+ android:gravity="center_horizontal"
+ android:layout_gravity="center_horizontal"
+ android:animateLayoutChanges="true">
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/two"
+ android:scaleType="centerInside"
+ android:layout_width="@dimen/navigation_key_width"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/three"
+ android:scaleType="centerInside"
+ android:layout_width="@dimen/navigation_key_width"
+ android:layout_height="match_parent"
+ systemui:keyRepeat="true"
+ android:layout_weight="0" />
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/four"
+ android:scaleType="centerInside"
+ android:layout_width="@dimen/navigation_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ <View
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/five"
+ android:scaleType="centerInside"
+ android:layout_width="@dimen/navigation_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ systemui:keyRepeat="true" />
+ </LinearLayout>
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" >
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:background="#FFAA0000"
+ android:id="@+id/ime_switcher"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_weight="0"
+ android:layout_height="match_parent"
+ android:contentDescription="@string/accessibility_ime_switch_button"
+ android:scaleType="centerInside"
+ android:src="@drawable/ic_ime_switcher_default"
+ android:visibility="invisible" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/six"
+ android:layout_width="@dimen/navigation_extra_key_width"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside" />
+ <com.android.systemui.statusbar.policy.KeyButtonView
+ android:id="@+id/dpad_right"
+ android:visibility="gone"
+ android:layout_width="40dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:scaleType="centerInside"
+ systemui:keyRepeat="true"/>
+ </FrameLayout>
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/mland.xml b/packages/SystemUI/res/layout/mland.xml
index d1b6d00..5ec0f7f 100644
--- a/packages/SystemUI/res/layout/mland.xml
+++ b/packages/SystemUI/res/layout/mland.xml
@@ -48,7 +48,7 @@
android:layout_height="48dp"
android:scaleType="fitCenter"
android:layout_gravity="center"
- android:tint="#000000"
+ android:tint="@color/play_button_image_tint_color"
android:src="@drawable/play"
/>
<TextView
@@ -58,7 +58,7 @@
android:layout_gravity="center"
android:alpha="0"
android:textSize="40dp"
- android:textColor="#000000"
+ android:textColor="@color/play_button_text_color"
/>
</FrameLayout>
</FrameLayout>
diff --git a/packages/SystemUI/res/layout/mland_scorefield.xml b/packages/SystemUI/res/layout/mland_scorefield.xml
index 0ed72e4..31e4b4b 100644
--- a/packages/SystemUI/res/layout/mland_scorefield.xml
+++ b/packages/SystemUI/res/layout/mland_scorefield.xml
@@ -22,7 +22,7 @@
android:textStyle="bold"
android:textSize="22sp"
android:gravity="center"
- android:textColor="#FFAAAAAA"
+ android:textColor="@color/mland_scorefield_text_color"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="4dp"
diff --git a/packages/SystemUI/res/layout/mobile_signal_group.xml b/packages/SystemUI/res/layout/mobile_signal_group.xml
index 6ae5cf3..abdbaf7 100644
--- a/packages/SystemUI/res/layout/mobile_signal_group.xml
+++ b/packages/SystemUI/res/layout/mobile_signal_group.xml
@@ -17,31 +17,44 @@
** limitations under the License.
*/
-->
-<FrameLayout
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/mobile_combo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- >
- <com.android.systemui.statusbar.AnimatedImageView
- android:theme="@style/DualToneLightTheme"
- android:id="@+id/mobile_signal"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- systemui:hasOverlappingRendering="false"
- />
- <com.android.systemui.statusbar.AnimatedImageView
- android:theme="@style/DualToneDarkTheme"
- android:id="@+id/mobile_signal_dark"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:alpha="0.0"
- systemui:hasOverlappingRendering="false"
- />
+ android:orientation="horizontal">
+ <FrameLayout
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ >
+ <com.android.systemui.statusbar.AnimatedImageView
+ android:theme="@style/DualToneLightTheme"
+ android:id="@+id/mobile_signal"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ systemui:hasOverlappingRendering="false"
+ />
+ <com.android.systemui.statusbar.AnimatedImageView
+ android:theme="@style/DualToneDarkTheme"
+ android:id="@+id/mobile_signal_dark"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:alpha="0.0"
+ systemui:hasOverlappingRendering="false"
+ />
+ <ImageView
+ android:id="@+id/mobile_type"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ />
+ </FrameLayout>
+
<ImageView
- android:id="@+id/mobile_type"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- />
-</FrameLayout>
+ android:id="@+id/mobile_roaming"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:visibility="gone"
+ android:src="@drawable/stat_sys_data_roaming"
+ />
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml
index d58664f..f8f59da 100644
--- a/packages/SystemUI/res/layout/navigation_bar.xml
+++ b/packages/SystemUI/res/layout/navigation_bar.xml
@@ -4,7 +4,7 @@
**
** Copyright 2011, The Android Open Source Project
**
-** Licensed under the Apache License, Version 2.0 (the "License");
+** 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
**
@@ -37,81 +37,10 @@
android:orientation="horizontal"
android:clipChildren="false"
android:clipToPadding="false"
- android:id="@+id/nav_buttons"
- android:animateLayoutChanges="true"
+ android:id="@+id/container"
>
- <!-- navigation controls -->
- <View
- android:layout_width="@dimen/navigation_side_padding"
- android:layout_height="match_parent"
- android:layout_weight="0"
- android:visibility="invisible"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
- android:layout_width="@dimen/navigation_key_width"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_back"
- systemui:keyCode="4"
- android:layout_weight="0"
- android:scaleType="center"
- android:contentDescription="@string/accessibility_back"
- />
- <View
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:visibility="invisible"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
- android:layout_width="@dimen/navigation_key_width"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_home"
- systemui:keyCode="3"
- systemui:keyRepeat="false"
- android:layout_weight="0"
- android:scaleType="center"
- android:contentDescription="@string/accessibility_home"
- />
- <View
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:visibility="invisible"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
- android:layout_width="@dimen/navigation_key_width"
- android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_recent"
- android:layout_weight="0"
- android:scaleType="center"
- android:contentDescription="@string/accessibility_recent"
- />
- <FrameLayout
- android:layout_width="@dimen/navigation_side_padding"
- android:layout_height="match_parent"
- android:layout_weight="0" >
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/menu"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:contentDescription="@string/accessibility_menu"
- android:src="@drawable/ic_sysbar_menu"
- android:visibility="invisible"
- android:scaleType="centerInside"
- android:layout_gravity="end"
- systemui:keyCode="82" />
-
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/ime_switcher"
- android:layout_width="@dimen/navigation_extra_key_width"
- android:layout_height="match_parent"
- android:contentDescription="@string/accessibility_ime_switch_button"
- android:scaleType="centerInside"
- android:src="@drawable/ic_ime_switcher_default"
- android:visibility="invisible"
- android:layout_gravity="end" />
- </FrameLayout>
+ <include layout="@layout/mid_navigation_bar_port"/>
</LinearLayout>
@@ -120,20 +49,21 @@
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
+ android:gravity="center_horizontal"
+ android:layout_marginStart="40dp"
+ android:layout_marginEnd="40dp"
+ android:layout_gravity="center_horizontal"
android:id="@+id/lights_out"
android:visibility="gone"
>
<ImageView
android:layout_width="@dimen/navigation_key_width"
android:layout_height="match_parent"
- android:layout_marginStart="@dimen/navigation_side_padding"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
/>
<View
- android:layout_width="match_parent"
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="invisible"
@@ -143,23 +73,18 @@
android:layout_height="match_parent"
android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
/>
<View
- android:layout_width="match_parent"
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="invisible"
/>
<ImageView
android:layout_width="@dimen/navigation_key_width"
- android:layout_marginEnd="@dimen/navigation_side_padding"
android:layout_height="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
/>
</LinearLayout>
@@ -183,109 +108,41 @@
android:paddingTop="0dp"
>
- <LinearLayout
+ <LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
android:clipChildren="false"
android:clipToPadding="false"
- android:id="@+id/nav_buttons"
- android:animateLayoutChanges="true"
+ android:id="@+id/container"
>
- <!-- navigation controls -->
- <FrameLayout
- android:layout_weight="0"
- android:layout_width="match_parent"
- android:layout_height="@dimen/navigation_side_padding" >
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/ime_switcher"
- android:layout_width="match_parent"
- android:layout_height="@dimen/navigation_extra_key_width"
- android:contentDescription="@string/accessibility_ime_switch_button"
- android:scaleType="centerInside"
- android:src="@drawable/ic_ime_switcher_default"
- android:layout_gravity="top"
- android:visibility="invisible" />
-
- <com.android.systemui.statusbar.policy.KeyButtonView
- android:id="@+id/menu"
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:contentDescription="@string/accessibility_menu"
- android:src="@drawable/ic_sysbar_menu"
- android:scaleType="centerInside"
- android:layout_gravity="top"
- android:visibility="invisible"
- systemui:keyCode="82" />
- </FrameLayout>
+ <include layout="@layout/mid_navigation_bar_land"/>
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"
- android:layout_height="@dimen/navigation_key_width"
- android:layout_width="match_parent"
- android:src="@drawable/ic_sysbar_recent"
- android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
- />
- <View
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:visibility="invisible"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"
- android:layout_height="@dimen/navigation_key_width"
- android:layout_width="match_parent"
- android:src="@drawable/ic_sysbar_home"
- android:scaleType="center"
- systemui:keyCode="3"
- systemui:keyRepeat="false"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
- />
- <View
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:visibility="invisible"
- />
- <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
- android:layout_height="@dimen/navigation_key_width"
- android:layout_width="match_parent"
- android:src="@drawable/ic_sysbar_back"
- android:scaleType="center"
- systemui:keyCode="4"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
- />
- <View
- android:layout_height="@dimen/navigation_side_padding"
- android:layout_width="match_parent"
- android:layout_weight="0"
- android:visibility="invisible"
- />
</LinearLayout>
<!-- lights out layout to match exactly -->
- <LinearLayout
+ <LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
+ android:layout_marginTop="40dp"
+ android:layout_marginBottom="40dp"
android:id="@+id/lights_out"
android:visibility="gone"
>
<ImageView
android:layout_height="@dimen/navigation_key_width"
- android:layout_marginTop="@dimen/navigation_side_padding"
android:layout_width="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_recent"
/>
<View
- android:layout_height="match_parent"
+ android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:visibility="invisible"
@@ -295,23 +152,18 @@
android:layout_width="match_parent"
android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_home"
/>
<View
- android:layout_height="match_parent"
+ android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:visibility="invisible"
/>
<ImageView
android:layout_height="@dimen/navigation_key_width"
- android:layout_marginBottom="@dimen/navigation_side_padding"
android:layout_width="match_parent"
- android:src="@drawable/ic_sysbar_lights_out_dot_small"
+ android:src="@drawable/ic_sysbar_lights_out_dot_large"
android:scaleType="center"
- android:layout_weight="0"
- android:contentDescription="@string/accessibility_back"
/>
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/navigation_bar_edit_menu_item.xml b/packages/SystemUI/res/layout/navigation_bar_edit_menu_item.xml
new file mode 100644
index 0000000..d951f5b
--- /dev/null
+++ b/packages/SystemUI/res/layout/navigation_bar_edit_menu_item.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2015 The CyanogenMod 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.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@+id/key_icon"
+ android:layout_width="80dip"
+ android:layout_height="match_parent"
+ android:padding="4dip"
+ android:scaleType="centerInside"/>
+
+ <TextView
+ android:id="@+id/key_text"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:minHeight="?android:attr/listPreferredItemHeightSmall"
+ android:textAppearance="?android:attr/textAppearanceListItemSmall"
+ android:textColor="?android:attr/textColorAlertDialogListItem"
+ android:gravity="center_vertical"
+ android:paddingEnd="16dip"
+ android:ellipsize="marquee"/>
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/notification_guts.xml b/packages/SystemUI/res/layout/notification_guts.xml
index d52c274..effa302 100644
--- a/packages/SystemUI/res/layout/notification_guts.xml
+++ b/packages/SystemUI/res/layout/notification_guts.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright 2014, The Android Open Source Project
+ Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -82,11 +82,21 @@
android:layout_height="match_parent"
android:layout_weight="0"
android:gravity="center"
- android:src="@drawable/ic_settings"
+ android:src="@drawable/notification_guts_ic_settings"
android:visibility="gone"
/>
<ImageButton style="@android:style/Widget.Material.Light.Button.Borderless.Small"
+ android:id="@+id/notification_inspect_filter_notification"
+ android:layout_width="52dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:gravity="center"
+ android:src="@drawable/notification_guts_ic_ringer_mute"
+ android:visibility="gone"
+ />
+
+ <ImageButton style="@android:style/Widget.Material.Light.Button.Borderless.Small"
android:id="@+id/notification_inspect_item"
android:layout_width="52dp"
android:layout_height="match_parent"
diff --git a/packages/SystemUI/res/layout/notification_guts_queue.xml b/packages/SystemUI/res/layout/notification_guts_queue.xml
new file mode 100644
index 0000000..fe081e2
--- /dev/null
+++ b/packages/SystemUI/res/layout/notification_guts_queue.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+
+<com.android.systemui.statusbar.MediaNotificationGuts
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/notification_guts"
+ android:visibility="gone"
+ android:clickable="true"
+ android:gravity="top|start">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:clipChildren="false"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:background="@drawable/notification_guts_bg"
+ android:elevation="2dp"
+ android:layout_height="@android:dimen/notification_large_icon_height"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@android:id/icon"
+ android:layout_width="@android:dimen/notification_large_icon_width"
+ android:layout_height="@android:dimen/notification_large_icon_height"
+ android:layout_weight="0"
+ android:padding="8dp"
+ android:scaleType="centerInside"/>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start|center_vertical"
+ android:orientation="vertical"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
+ android:layout_weight="1">
+ <TextView
+ android:id="@+id/pkgname"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical|start"
+ android:layout_weight="1"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification.Title"
+ android:textColor="@color/notification_guts_title_color"/>
+ <DateTimeView
+ android:id="@+id/timestamp"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:layout_gravity="center_vertical|start"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification.Time"
+ android:textColor="@color/notification_guts_text_color"/>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/debug_info"
+ android:layout_weight="0"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification.Time"
+ android:layout_gravity="bottom|start"
+ android:visibility="gone"
+ android:textColor="@color/notification_guts_text_color"/>
+ </LinearLayout>
+
+ <ImageButton
+ style="@android:style/Widget.Material.Light.Button.Borderless.Small"
+ android:id="@+id/notification_inspect_app_provided_settings"
+ android:layout_width="52dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:gravity="center"
+ android:src="@drawable/notification_guts_ic_settings"
+ android:visibility="gone"/>
+
+ <ImageButton
+ style="@android:style/Widget.Material.Light.Button.Borderless.Small"
+ android:id="@+id/notification_inspect_filter_notification"
+ android:layout_width="52dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:gravity="center"
+ android:src="@drawable/notification_guts_ic_ringer_mute"
+ android:visibility="gone"/>
+
+ <ImageButton
+ style="@android:style/Widget.Material.Light.Button.Borderless.Small"
+ android:id="@+id/notification_inspect_item"
+ android:layout_width="52dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:gravity="center"
+ android:contentDescription="@string/status_bar_notification_inspect_item_title"
+ android:src="@drawable/ic_info"/>
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/queue_group"
+ android:padding="8dp"
+ android:background="@drawable/notification_guts_queue_bg"
+ android:elevation="0dp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_height="wrap_content"
+ android:id="@+id/switch_label"
+ android:layout_marginStart="@android:dimen/notification_large_icon_width"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:text="@string/play_queue_extention"/>
+ <Switch
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:id="@+id/queue_switch"/>
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+</com.android.systemui.statusbar.MediaNotificationGuts>
diff --git a/packages/SystemUI/res/layout/profiles_detail_view.xml b/packages/SystemUI/res/layout/profiles_detail_view.xml
new file mode 100644
index 0000000..c366868
--- /dev/null
+++ b/packages/SystemUI/res/layout/profiles_detail_view.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<com.android.systemui.qs.tiles.ProfilesDetailView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:orientation="vertical">
+
+ <ListView
+ android:id="@android:id/list"
+ android:divider="@null"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+
+</com.android.systemui.qs.tiles.ProfilesDetailView>
diff --git a/packages/SystemUI/res/layout/qs_custom_detail.xml b/packages/SystemUI/res/layout/qs_custom_detail.xml
new file mode 100644
index 0000000..6aa1fc0
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_custom_detail.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingTop="@dimen/detail_exterior_padding"
+ android:paddingStart="@dimen/detail_exterior_padding"
+ android:paddingEnd="@dimen/detail_exterior_padding">
+
+ <LinearLayout android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="horizontal">
+
+ <ImageView android:id="@+id/custom_qs_tile_icon"
+ android:layout_width="36dp"
+ android:layout_height="36dp"
+ android:layout_marginEnd="12dp" />
+
+ <LinearLayout android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:orientation="vertical">
+
+ <TextView android:id="@+id/custom_qs_tile_title"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:textAppearance="@style/TextAppearance.QS.DetailItemPrimary"/>
+
+ <TextView android:id="@+id/custom_qs_tile_package "
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="2dp"
+ android:textAppearance="@style/TextAppearance.QS.DetailItemSub"/>
+
+ <TextView android:id="@+id/custom_qs_tile_content_description"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="2dp"
+ android:textAppearance="@style/TextAppearance.QS.DetailItemSub" />
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_custom_detail_remote.xml b/packages/SystemUI/res/layout/qs_custom_detail_remote.xml
new file mode 100644
index 0000000..bdbe6bb
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_custom_detail_remote.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingTop="@dimen/detail_exterior_padding"
+ android:paddingStart="@dimen/detail_exterior_padding"
+ android:paddingEnd="@dimen/detail_exterior_padding">
+
+</LinearLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index ddff0f0..7ff9345 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -18,7 +18,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/qs_detail_background"
- android:paddingBottom="8dp"
+ android:paddingTop="@dimen/detail_exterior_padding"
+ android:paddingBottom="@dimen/detail_exterior_padding"
android:orientation="vertical">
<FrameLayout
@@ -28,6 +29,7 @@
android:layout_weight="1" />
<LinearLayout
+ android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="8dp"
@@ -44,6 +46,16 @@
android:focusable="true" />
<TextView
+ android:id="@android:id/button3"
+ style="@style/QSBorderlessButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="8dp"
+ android:minWidth="88dp"
+ android:textAppearance="@style/TextAppearance.QS.DetailButton"
+ android:focusable="true" />
+
+ <TextView
android:id="@android:id/button1"
style="@style/QSBorderlessButton"
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/layout/qs_detail_header.xml b/packages/SystemUI/res/layout/qs_detail_header.xml
index 5a96dc3..6f07543 100644
--- a/packages/SystemUI/res/layout/qs_detail_header.xml
+++ b/packages/SystemUI/res/layout/qs_detail_header.xml
@@ -37,4 +37,15 @@
android:clickable="false"
android:textAppearance="@style/TextAppearance.QS.DetailHeader" />
-</com.android.keyguard.AlphaOptimizedLinearLayout> \ No newline at end of file
+ <TextView
+ android:id="@+id/done"
+ android:text="@string/quick_settings_done"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:minWidth="88dp"
+ android:paddingRight="12dp"
+ android:textAppearance="@style/TextAppearance.QS.DetailButton"
+ android:clickable="false"
+ android:focusable="false" />
+</com.android.keyguard.AlphaOptimizedLinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_detail_item.xml b/packages/SystemUI/res/layout/qs_detail_item.xml
index 6facb71..1ec4952 100644
--- a/packages/SystemUI/res/layout/qs_detail_item.xml
+++ b/packages/SystemUI/res/layout/qs_detail_item.xml
@@ -19,8 +19,6 @@
android:layout_height="wrap_content"
android:minHeight="@dimen/qs_detail_item_height"
android:background="@drawable/btn_borderless_rect"
- android:clickable="true"
- android:focusable="true"
android:gravity="center_vertical"
android:orientation="horizontal" >
@@ -60,6 +58,7 @@
android:clickable="true"
android:focusable="true"
android:scaleType="center"
+ android:contentDescription="@*android:string/media_route_controller_disconnect"
android:src="@drawable/ic_qs_cancel" />
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_detail_items.xml b/packages/SystemUI/res/layout/qs_detail_items.xml
index c22e42c..4ad82cb 100644
--- a/packages/SystemUI/res/layout/qs_detail_items.xml
+++ b/packages/SystemUI/res/layout/qs_detail_items.xml
@@ -18,9 +18,9 @@
<com.android.systemui.qs.QSDetailItems xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingTop="16dp"
- android:paddingStart="16dp"
- android:paddingEnd="16dp">
+ android:paddingTop="@dimen/detail_exterior_padding"
+ android:paddingStart="@dimen/detail_exterior_padding"
+ android:paddingEnd="@dimen/detail_exterior_padding">
<LinearLayout
android:id="@android:id/list"
diff --git a/packages/SystemUI/res/layout/qs_detail_items_grid.xml b/packages/SystemUI/res/layout/qs_detail_items_grid.xml
new file mode 100644
index 0000000..617acfb
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_detail_items_grid.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2015 The CyanogenMod 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
+ -->
+
+<!-- GridView -->
+<com.android.systemui.qs.QSDetailItemsGrid
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:sysui="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:numColumns="3"
+ sysui:verticalSpacing="4dp"
+ sysui:horizontalSpacing="4dp" /> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/qs_detail_items_list.xml b/packages/SystemUI/res/layout/qs_detail_items_list.xml
new file mode 100644
index 0000000..33dd579
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_detail_items_list.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<!-- extends LinearLayout -->
+<com.android.systemui.qs.QSDetailItemsList xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:minHeight="100dp"
+ android:paddingTop="16dp"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp">
+
+ <ListView
+ android:id="@android:id/list"
+ android:divider="@null"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" />
+
+ <LinearLayout
+ android:id="@android:id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@android:id/icon"
+ android:layout_width="56dp"
+ android:layout_height="56dp" />
+
+ <TextView
+ android:id="@android:id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:textAppearance="@style/TextAppearance.QS.DetailEmpty" />
+ </LinearLayout>
+
+</com.android.systemui.qs.QSDetailItemsList>
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 1873168..2807bb0 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -19,13 +19,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/qs_background_primary"
- android:paddingTop="8dp"
- android:paddingBottom="8dp"
+ android:paddingBottom="12dp"
android:elevation="2dp">
- <com.android.systemui.qs.QSPanel
+ <com.android.systemui.qs.QSDragPanel
android:id="@+id/quick_settings_panel"
- android:background="#0000"
+ android:background="@color/quick_settings_panel_background"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.android.systemui.qs.QSContainer>
diff --git a/packages/SystemUI/res/layout/qs_settings.xml b/packages/SystemUI/res/layout/qs_settings.xml
new file mode 100644
index 0000000..bd7cbec
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_settings.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+-->
+<com.android.systemui.qs.QSSettings
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/quick_settings_settings_recursion_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:gravity="center_vertical"
+ android:textColor="@color/qs_title_text_color"
+ android:text="@string/quick_settings_title_header"/>
+
+ <!-- show weather -->
+ <com.android.systemui.qs.QSBooleanSettingRow
+ android:id="@+id/show_weather"
+ style="@style/SettingRow"
+ android:key="status_bar_show_weather"
+ android:title="@string/quick_settings_title_show_weather"
+ systemui:defaultValue="0"
+ systemui:table="cm_system"/>
+
+ <!-- brightness slider -->
+ <com.android.systemui.qs.QSBooleanSettingRow
+ style="@style/SettingRow"
+ android:key="qs_show_brightness_slider"
+ android:title="@string/quick_settings_title_show_brightness_slider"
+ systemui:defaultValue="1"
+ systemui:table="cm_system"/>
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:gravity="center_vertical"
+ android:textColor="@color/qs_title_text_color"
+ android:text="@string/quick_settings_title_tiles"/>
+
+ <!-- first row large -->
+ <com.android.systemui.qs.QSBooleanSettingRow
+ style="@style/SettingRow"
+ android:title="@string/quick_settings_title_enlarge_first_row"
+ android:key="sysui_qs_main_tiles"
+ systemui:defaultValue="1"
+ systemui:table="cm_secure"/>
+
+ <com.android.systemui.qs.QSBooleanSettingRow
+ style="@style/SettingRow"
+ android:title="@string/quick_settings_title_advanced_location"
+ android:key="qs_location_advanced"
+ systemui:defaultValue="0"
+ systemui:table="cm_secure"/>
+
+ <LinearLayout
+ android:id="@+id/reset_tiles"
+ style="@style/SettingRow">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="24dp"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:id="@+id/title"
+ android:textColor="@color/qs_tile_reset_to_default_text_color"
+ android:text="@string/quick_settings_tile_reset_to_default"
+ android:contentDescription="@null"/>
+
+ </LinearLayout>
+
+ </LinearLayout>
+</com.android.systemui.qs.QSSettings>
+
diff --git a/packages/SystemUI/res/layout/qs_settings_row.xml b/packages/SystemUI/res/layout/qs_settings_row.xml
new file mode 100644
index 0000000..bc7f909
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_settings_row.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="24dp"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:id="@+id/title"
+ android:textColor="@color/qs_row_text_color"
+ android:contentDescription="@null"/>
+
+ <Switch
+ android:id="@+id/switcher"
+ android:layout_width="wrap_content"
+ android:layout_height="24dp"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
+ />
+</merge>
diff --git a/packages/SystemUI/res/layout/qs_tile_category_row.xml b/packages/SystemUI/res/layout/qs_tile_category_row.xml
new file mode 100644
index 0000000..1736221
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_tile_category_row.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/qs_detail_item_height"
+ android:background="@drawable/btn_borderless_rect"
+ android:gravity="center_vertical"
+ android:orientation="horizontal" >
+
+ <ImageView
+ android:id="@android:id/icon"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginStart="12dp"
+ android:layout_marginEnd="12dp" />
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="12dp"
+ android:layout_weight="1"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@android:id/title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textStyle="bold"
+ android:ellipsize="end"
+ android:textAppearance="@style/TextAppearance.QS.DetailItemPrimary" />
+ </LinearLayout>
+
+ <ImageView
+ android:id="@android:id/icon2"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginStart="12dp"
+ android:layout_marginEnd="12dp" />
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_tile_child_row.xml b/packages/SystemUI/res/layout/qs_tile_child_row.xml
new file mode 100644
index 0000000..bb30729
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_tile_child_row.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/qs_detail_item_height"
+ android:background="@drawable/btn_borderless_rect"
+ android:gravity="center_vertical"
+ android:orientation="horizontal" >
+
+ <ImageView
+ android:id="@android:id/icon"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginStart="72dp"
+ android:layout_marginEnd="12dp" />
+
+ <TextView
+ android:id="@android:id/title"
+ android:layout_weight="1"
+ android:layout_marginStart="12dp"
+ android:layout_width="0dp"
+ android:gravity="center_vertical"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:textAppearance="@style/TextAppearance.QS.DetailItemPrimary" />
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_tile_top.xml b/packages/SystemUI/res/layout/qs_tile_top.xml
new file mode 100644
index 0000000..d9a7ad8
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_tile_top.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+-->
+<com.android.systemui.qs.QSPanelTopView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/qs_panel_top"
+ android:layout_width="match_parent"
+ android:paddingTop="@dimen/qs_brightness_padding_top"
+ android:clipToPadding="false"
+ android:layout_height="wrap_content">
+
+ <!-- brightness -->
+ <include android:id="@+id/brightness_container"
+ layout="@layout/quick_settings_brightness_dialog"/>
+
+ <!-- delete target -->
+ <LinearLayout
+ android:id="@+id/delete_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@+id/delete_target"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:src="@drawable/ic_delete"
+ />
+ </LinearLayout>
+
+ <!-- edit instructions & add target -->
+ <LinearLayout
+ android:id="@+id/edit_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/edit_text_instruction"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_marginEnd="16dp"
+ android:gravity="center_vertical"
+ android:layout_weight="1"
+ android:textColor="@color/qs_edit_header_instruction_text_color"
+ android:contentDescription="@null"/>
+
+ <ImageView
+ android:id="@+id/add_target"
+ android:layout_width="20dp"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:src="@drawable/ic_add_circle_qs"
+ />
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/qs_toast"
+ android:layout_height="wrap_content"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
+ android:layout_width="match_parent"
+ android:textColor="@color/quick_settings_toast_color"/>
+
+
+</com.android.systemui.qs.QSPanelTopView>
+
diff --git a/packages/SystemUI/res/layout/qs_user_detail_item.xml b/packages/SystemUI/res/layout/qs_user_detail_item.xml
index af22f03..666f878 100644
--- a/packages/SystemUI/res/layout/qs_user_detail_item.xml
+++ b/packages/SystemUI/res/layout/qs_user_detail_item.xml
@@ -24,7 +24,7 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="top|center_horizontal"
- android:paddingTop="16dp"
+ android:paddingTop="@dimen/detail_exterior_padding"
android:minHeight="112dp"
android:clipChildren="false"
android:clipToPadding="false"
diff --git a/packages/SystemUI/res/layout/queue_adapter_row.xml b/packages/SystemUI/res/layout/queue_adapter_row.xml
new file mode 100644
index 0000000..1096066
--- /dev/null
+++ b/packages/SystemUI/res/layout/queue_adapter_row.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+<com.android.systemui.statusbar.QueueViewRow
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:background="@drawable/queue_bg"
+ android:layout_height="@dimen/queue_row_height"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/art"
+ android:layout_alignParentStart="true"
+ android:layout_centerVertical="true"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toEndOf="@+id/action"
+ android:layout_centerVertical="true">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="@*android:dimen/notification_title_text_size"
+ android:color="@color/notification_guts_title_color"
+ android:id="@+id/title"/>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="@*android:dimen/notification_subtext_size"
+ android:color="@color/notification_guts_text_color"
+ android:id="@+id/summary"/>
+ </LinearLayout>
+
+</com.android.systemui.statusbar.QueueViewRow>
diff --git a/packages/SystemUI/res/layout/quick_settings_notification_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_notification_brightness_dialog.xml
new file mode 100644
index 0000000..1f51fe3
--- /dev/null
+++ b/packages/SystemUI/res/layout/quick_settings_notification_brightness_dialog.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2015 The CyanogenMod 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ style="@style/BrightnessDialogContainer">
+
+ <com.android.systemui.settings.ToggleSlider
+ android:id="@+id/notification_brightness_slider"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:contentDescription="@string/accessibility_notification_brightness"
+ android:importantForAccessibility="no" />
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/recents_empty.xml b/packages/SystemUI/res/layout/recents_empty.xml
index 4b68e77..bd3e3bc 100644
--- a/packages/SystemUI/res/layout/recents_empty.xml
+++ b/packages/SystemUI/res/layout/recents_empty.xml
@@ -21,8 +21,8 @@
android:layout_gravity="center"
android:gravity="center"
android:textSize="16sp"
- android:textColor="#ffffffff"
+ android:textColor="@color/recents_empty_message_text_color"
android:text="@string/recents_empty_message"
android:fontFamily="sans-serif"
- android:background="#80000000"
- android:visibility="gone" /> \ No newline at end of file
+ android:background="@color/recents_empty_background_color"
+ android:visibility="gone" />
diff --git a/packages/SystemUI/res/layout/recents_search_bar.xml b/packages/SystemUI/res/layout/recents_search_bar.xml
index 915283e..f9bd02c 100644
--- a/packages/SystemUI/res/layout/recents_search_bar.xml
+++ b/packages/SystemUI/res/layout/recents_search_bar.xml
@@ -23,7 +23,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/recents_search_bar_label"
- android:textColor="#99ffffff"
+ android:textColor="@color/recents_search_bar_label_text_color"
android:textSize="18sp"
android:textAllCaps="true" />
</FrameLayout>
diff --git a/packages/SystemUI/res/layout/recents_task_view_header.xml b/packages/SystemUI/res/layout/recents_task_view_header.xml
index 477d9d7..423ecb8 100644
--- a/packages/SystemUI/res/layout/recents_task_view_header.xml
+++ b/packages/SystemUI/res/layout/recents_task_view_header.xml
@@ -36,7 +36,7 @@
android:layout_marginStart="64dp"
android:layout_marginEnd="64dp"
android:textSize="16sp"
- android:textColor="#ffffffff"
+ android:textColor="@color/task_view_header_text_color"
android:text="@string/recents_empty_message"
android:fontFamily="sans-serif-medium"
android:singleLine="true"
@@ -63,4 +63,4 @@
android:background="@drawable/recents_button_bg"
android:visibility="invisible"
android:src="@drawable/recents_dismiss_light" />
-</com.android.systemui.recents.views.TaskViewHeader> \ No newline at end of file
+</com.android.systemui.recents.views.TaskViewHeader>
diff --git a/packages/SystemUI/res/layout/screen_pinning_request.xml b/packages/SystemUI/res/layout/screen_pinning_request.xml
index fea45cc..af203ce 100644
--- a/packages/SystemUI/res/layout/screen_pinning_request.xml
+++ b/packages/SystemUI/res/layout/screen_pinning_request.xml
@@ -28,12 +28,6 @@
android:layout_height="wrap_content"
layout="@layout/screen_pinning_request_text_area" />
- <View
- android:id="@+id/spacer"
- android:layout_width="@dimen/screen_pinning_request_width"
- android:layout_height="18dp"
- android:background="@color/screen_pinning_request_bg" />
-
<include
android:layout_width="@dimen/screen_pinning_request_width"
android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/layout/screen_pinning_request_text_area.xml b/packages/SystemUI/res/layout/screen_pinning_request_text_area.xml
index df957f4..6d24b0c 100644
--- a/packages/SystemUI/res/layout/screen_pinning_request_text_area.xml
+++ b/packages/SystemUI/res/layout/screen_pinning_request_text_area.xml
@@ -29,7 +29,7 @@
android:layout_height="wrap_content"
android:paddingEnd="48dp"
android:paddingStart="48dp"
- android:paddingTop="43dp"
+ android:paddingTop="18dp"
android:text="@string/screen_pinning_title"
android:textColor="@color/screen_pinning_primary_text"
android:textSize="24sp" />
@@ -50,7 +50,7 @@
android:id="@+id/screen_pinning_ok_button"
style="@android:style/Widget.Material.Button"
android:layout_width="wrap_content"
- android:layout_height="36dp"
+ android:layout_height="54dp"
android:layout_alignParentEnd="true"
android:layout_below="@+id/screen_pinning_description"
android:layout_marginEnd="40dp"
@@ -59,14 +59,14 @@
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:text="@string/screen_pinning_positive"
- android:textColor="@android:color/white"
+ android:textColor="@color/screen_pinning_description_text_color"
android:textSize="14sp" />
<Button
android:id="@+id/screen_pinning_cancel_button"
style="@android:style/Widget.Material.Button"
android:layout_width="wrap_content"
- android:layout_height="36dp"
+ android:layout_height="54dp"
android:layout_alignTop="@id/screen_pinning_ok_button"
android:layout_marginEnd="4dp"
android:layout_toStartOf="@id/screen_pinning_ok_button"
@@ -74,7 +74,7 @@
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:text="@string/screen_pinning_negative"
- android:textColor="@android:color/white"
+ android:textColor="@color/screen_pinning_cancel_button_text_color"
android:textSize="14sp" />
</RelativeLayout>
diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml
index f8bd6fd..e2c1810 100644
--- a/packages/SystemUI/res/layout/signal_cluster_view.xml
+++ b/packages/SystemUI/res/layout/signal_cluster_view.xml
@@ -25,7 +25,6 @@
android:layout_width="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
- android:paddingEnd="@dimen/signal_cluster_battery_padding"
>
<ImageView
android:id="@+id/vpn"
diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index a5b3a83..d5e799a 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -62,6 +62,16 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
>
+ <com.android.systemui.statusbar.policy.Clock
+ android:id="@+id/left_clock"
+ android:textAppearance="@style/TextAppearance.StatusBar.Clock"
+ android:layout_width="wrap_content"
+ android:layout_height="fill_parent"
+ android:singleLine="true"
+ android:paddingEnd="6dip"
+ android:gravity="center"
+ android:visibility="gone"
+ />
<com.android.systemui.statusbar.StatusBarIconView android:id="@+id/moreIcon"
android:layout_width="@dimen/status_bar_icon_size"
android:layout_height="match_parent"
@@ -85,16 +95,51 @@
<include layout="@layout/system_icons" />
+ <com.android.systemui.BatteryLevelTextView android:id="@+id/battery_level_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="@dimen/header_battery_margin_keyguard"
+ android:textColor="@color/status_bar_battery_level_text_color"
+ android:textSize="@dimen/battery_level_text_size" />
+
+ <com.android.systemui.BatteryLevelTextView android:id="@+id/dock_battery_level_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="@dimen/header_battery_margin_keyguard"
+ android:textColor="@color/status_bar_battery_level_text_color"
+ android:textSize="@dimen/battery_level_text_size"
+ android:visibility="gone"/>
+
<com.android.systemui.statusbar.policy.Clock
android:id="@+id/clock"
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
- android:paddingStart="7dp"
+ android:paddingStart="3dp"
android:gravity="center_vertical|start"
/>
</com.android.keyguard.AlphaOptimizedLinearLayout>
</LinearLayout>
+ <com.android.keyguard.AlphaOptimizedLinearLayout
+ android:id="@+id/center_clock_layout"
+ android:gravity="center"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+
+ <com.android.systemui.statusbar.policy.Clock
+ android:id="@+id/center_clock"
+ android:textAppearance="@style/TextAppearance.StatusBar.Clock"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:gravity="center"
+ android:visibility="gone"
+ />
+ </com.android.keyguard.AlphaOptimizedLinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBarView>
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index f7bbce0..794a755 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -57,8 +57,8 @@
android:layout_marginTop="@dimen/status_bar_header_height_expanded"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/notification_side_padding"
- android:layout_marginRight="@dimen/notification_side_padding"/>
+ android:layout_marginStart="@dimen/qs_panel_side_padding"
+ android:layout_marginEnd="@dimen/qs_panel_side_padding"/>
<!-- A view to reserve space for the collapsed stack -->
<!-- Layout height: notification_min_height + bottom_stack_peek_amount -->
@@ -94,10 +94,6 @@
</com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer>
- <include
- layout="@layout/keyguard_bottom_area"
- android:visibility="gone" />
-
<include layout="@layout/status_bar_expanded_header" />
<com.android.systemui.statusbar.AlphaOptimizedView
diff --git a/packages/SystemUI/res/layout/status_bar_expanded_header.xml b/packages/SystemUI/res/layout/status_bar_expanded_header.xml
index 5eca471..a017a2e 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded_header.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded_header.xml
@@ -23,10 +23,10 @@
android:layout_width="@dimen/notification_panel_width"
android:layout_height="@dimen/status_bar_header_height"
android:layout_gravity="@integer/notification_panel_layout_gravity"
- android:paddingStart="@dimen/notification_side_padding"
- android:paddingEnd="@dimen/notification_side_padding"
+ android:paddingStart="@dimen/notification_header_side_padding"
+ android:paddingEnd="@dimen/notification_header_side_padding"
android:baselineAligned="false"
- android:elevation="4dp"
+ android:elevation="@dimen/status_bar_expanded_header_elevation"
android:background="@drawable/notification_header_bg"
android:clickable="true"
android:focusable="true"
@@ -63,7 +63,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="36dp"
- android:tint="#4DFFFFFF"
+ android:tint="@color/tuner_icon_tint"
android:tintMode="src_in"
android:visibility="invisible"
android:src="@drawable/tuner" />
@@ -85,15 +85,25 @@
>
<include layout="@layout/system_icons" />
</FrameLayout>
- <TextView android:id="@+id/battery_level"
+ <com.android.systemui.BatteryLevelTextView android:id="@+id/battery_level_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/header_battery_margin_expanded"
android:paddingEnd="@dimen/battery_level_padding_end"
- android:textColor="#ffffff"
+ android:textColor="@color/status_bar_battery_level_text_color"
android:textSize="@dimen/battery_level_text_size"
android:importantForAccessibility="noHideDescendants"/>
+ <com.android.systemui.DockBatteryLevelTextView android:id="@+id/dock_battery_level_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="@dimen/header_battery_margin_expanded"
+ android:paddingEnd="@dimen/battery_level_padding_end"
+ android:textColor="@color/status_bar_battery_level_text_color"
+ android:textSize="@dimen/battery_level_text_size"
+ android:importantForAccessibility="noHideDescendants"
+ android:visibility="gone"/>
</LinearLayout>
<TextView
@@ -122,6 +132,7 @@
android:layout_marginStart="16dp"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date"
+ android:background="@drawable/ripple_drawable"
android:layout_below="@id/clock"
systemui:datePattern="@string/abbrev_wday_month_day_no_year_alarm"
/>
@@ -132,18 +143,24 @@
android:layout_marginStart="16dp"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date"
+ android:background="@drawable/ripple_drawable"
android:layout_below="@id/clock"
systemui:datePattern="eeeeMMMMd"
/>
</FrameLayout>
- <include layout="@layout/split_clock_view"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_above="@id/date_group"
- android:id="@+id/clock"
- />
+ <FrameLayout
+ android:id="@+id/clock"
+ android:layout_marginStart="16dp"
+ android:layout_above="@id/date_group"
+ android:background="@drawable/ripple_drawable"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+ <include layout="@layout/split_clock_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ />
+ </FrameLayout>
<com.android.systemui.statusbar.AlphaOptimizedButton android:id="@+id/alarm_status"
android:layout_width="wrap_content"
@@ -153,16 +170,48 @@
android:layout_marginBottom="4dp"
android:drawablePadding="6dp"
android:drawableStart="@drawable/ic_access_alarms_small"
- android:textColor="#64ffffff"
+ android:textColor="@color/status_bar_alarm_status_text_color"
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date"
android:paddingEnd="6dp"
android:paddingStart="6dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
- android:background="?android:attr/selectableItemBackground"
+ android:background="@drawable/ripple_drawable"
android:visibility="gone"
/>
+ <LinearLayout
+ android:id="@+id/weather_container"
+ android:background="@drawable/ripple_drawable"
+ android:orientation="vertical"
+ android:layout_marginBottom="@dimen/clock_collapsed_bottom_margin"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentEnd="true"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_width="wrap_content">
+ <TextView
+ android:id="@+id/weather_line_1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingEnd="@dimen/status_bar_weather_padding_end"
+ android:gravity="right"
+ android:textColor="@color/status_bar_temperature_text_color"
+ android:textSize="@dimen/weather_text_size"
+ android:textAppearance="@style/TextAppearance.StatusBar.Expanded.WeatherTemp"
+ android:importantForAccessibility="noHideDescendants"/>
+ <TextView
+ android:id="@+id/weather_line_2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingEnd="@dimen/status_bar_weather_padding_end"
+ android:gravity="right"
+ android:textColor="@color/status_bar_temperature_location_text_color"
+ android:textSize="@dimen/weather_text_size"
+ android:textAppearance="@style/TextAppearance.StatusBar.Expanded.WeatherLocation"
+ android:importantForAccessibility="noHideDescendants"/>
+ </LinearLayout>
+
<include
android:id="@+id/qs_detail_header"
layout="@layout/qs_detail_header"
@@ -191,7 +240,7 @@
android:fontFamily="sans-serif-condensed"
android:textSize="11dp"
android:textStyle="bold"
- android:textColor="#00A040"
+ android:textColor="@color/header_debug_info_text_color"
android:padding="2dp"
/>
diff --git a/packages/SystemUI/res/layout/status_bar_no_notifications.xml b/packages/SystemUI/res/layout/status_bar_no_notifications.xml
index dd501d4..f4d1f1b 100644
--- a/packages/SystemUI/res/layout/status_bar_no_notifications.xml
+++ b/packages/SystemUI/res/layout/status_bar_no_notifications.xml
@@ -27,7 +27,7 @@
android:layout_height="64dp"
android:paddingTop="12dp"
android:gravity="top|center_horizontal"
- android:textColor="#ffffff"
+ android:textColor="@color/no_notifications_text_color"
android:textSize="20sp"
android:text="@string/empty_shade_text"/>
</com.android.systemui.statusbar.EmptyShadeView>
diff --git a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml b/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml
index 1675773..be18569 100644
--- a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml
+++ b/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml
@@ -28,7 +28,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
- android:textColor="@android:color/holo_blue_light"
+ android:textColor="@color/no_recent_apps_text_color"
android:text="@string/status_bar_no_recent_apps"
android:gravity="center_horizontal"
android:layout_gravity="center"
diff --git a/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml b/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml
index f699fce..bc8086d 100644
--- a/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml
+++ b/packages/SystemUI/res/layout/status_bar_notification_keyguard_overflow.xml
@@ -44,7 +44,7 @@
android:layout_gravity="center_vertical"
android:background="@drawable/keyguard_overflow_number_background"
android:gravity="center"
- android:textColor="#ff686868"
+ android:textColor="@color/keyguard_overflow_number_text_color"
android:textStyle="bold"
android:textSize="14dp"
/>
diff --git a/packages/SystemUI/res/layout/status_bar_notification_row_media.xml b/packages/SystemUI/res/layout/status_bar_notification_row_media.xml
new file mode 100644
index 0000000..e1589f6
--- /dev/null
+++ b/packages/SystemUI/res/layout/status_bar_notification_row_media.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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.
+-->
+
+<com.android.systemui.statusbar.MediaExpandableNotificationRow
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:focusable="true"
+ android:clickable="true">
+
+ <com.android.systemui.statusbar.NotificationBackgroundView
+ android:id="@+id/backgroundNormal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+
+ <com.android.systemui.statusbar.NotificationBackgroundView
+ android:id="@+id/backgroundDimmed"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:clipChildren="false"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <com.android.systemui.statusbar.NotificationContentView
+ android:id="@+id/expanded"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <com.android.systemui.statusbar.NotificationContentView
+ android:id="@+id/expandedPublic"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </FrameLayout>
+ <com.android.systemui.statusbar.QueueView
+ android:id="@+id/queue_view"
+ android:clipChildren="false"
+ android:orientation="vertical"
+ android:background="@drawable/queue_bg"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/queue_top_shadow"
+ android:background="@drawable/queue_gradient"/>
+ <ListView
+ android:id="@+id/queue_list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </com.android.systemui.statusbar.QueueView>
+ </LinearLayout>
+
+ <Button
+ android:id="@+id/veto"
+ android:layout_width="48dp"
+ android:layout_height="0dp"
+ android:gravity="end"
+ android:layout_marginEnd="-80dp"
+ android:background="@null"
+ android:paddingEnd="8dp"
+ android:paddingStart="8dp"/>
+
+ <ViewStub
+ android:layout="@layout/notification_children_container"
+ android:id="@+id/child_container_stub"
+ android:inflatedId="@+id/notification_children_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ />
+
+ <ViewStub
+ android:layout="@layout/notification_expand_button"
+ android:id="@+id/more_button_stub"
+ android:inflatedId="@+id/notification_more_button_container"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_bottom_decor_height"
+ />
+
+
+ <ViewStub
+ android:layout="@layout/notification_guts_queue"
+ android:id="@+id/notification_guts_stub"
+ android:inflatedId="@+id/notification_guts"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ />
+
+</com.android.systemui.statusbar.MediaExpandableNotificationRow>
diff --git a/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml b/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml
index e220a16..d99a9f6 100644
--- a/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml
+++ b/packages/SystemUI/res/layout/status_bar_notification_speed_bump.xml
@@ -25,6 +25,6 @@
android:id="@+id/speedbump_line"
android:layout_width="match_parent"
android:layout_height="1dp"
- android:background="#6fdddddd"
+ android:background="@color/speedbump_line_divider"
android:layout_gravity="center_vertical"/>
</com.android.systemui.statusbar.SpeedBumpView>
diff --git a/packages/SystemUI/res/layout/status_bar_toggle_slider.xml b/packages/SystemUI/res/layout/status_bar_toggle_slider.xml
index 062e6cb..d28b870 100644
--- a/packages/SystemUI/res/layout/status_bar_toggle_slider.xml
+++ b/packages/SystemUI/res/layout/status_bar_toggle_slider.xml
@@ -55,7 +55,7 @@
android:layout_centerVertical="true"
android:gravity="center"
android:paddingTop="26dp"
- android:textColor="#666666"
+ android:textColor="@color/toggle_slider_text_color"
android:textSize="12sp"
android:visibility="gone"
/>
diff --git a/packages/SystemUI/res/layout/super_status_bar.xml b/packages/SystemUI/res/layout/super_status_bar.xml
index e42ce66..c6178a0 100644
--- a/packages/SystemUI/res/layout/super_status_bar.xml
+++ b/packages/SystemUI/res/layout/super_status_bar.xml
@@ -18,12 +18,14 @@
-->
<!-- This is the combined status bar / notification panel window. -->
-<com.android.systemui.statusbar.phone.StatusBarWindowView
+<com.android.systemui.statusbar.phone.NavBarInsetLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sysui="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:fitsSystemWindows="true">
+ android:focusable="true"
+ android:fitsSystemWindows="true"
+ android:descendantFocusability="afterDescendants">
<com.android.systemui.statusbar.BackDropView
android:id="@+id/backdrop"
@@ -43,19 +45,34 @@
android:visibility="invisible" />
</com.android.systemui.statusbar.BackDropView>
- <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_behind"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:importantForAccessibility="no"
- sysui:ignoreRightInset="true"
- />
-
- <com.android.systemui.statusbar.AlphaOptimizedView
- android:id="@+id/heads_up_scrim"
- android:layout_width="match_parent"
- android:layout_height="@dimen/heads_up_scrim_height"
- android:background="@drawable/heads_up_scrim"
- android:importantForAccessibility="no"/>
+ <com.android.systemui.statusbar.phone.NavBarInsetLayout
+ android:id="@+id/scrimview"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="visible"
+ sysui:ignoreRightInset="true"
+ android:fitsSystemWindows="true">
+ <com.android.systemui.statusbar.ScrimView
+ android:id="@+id/scrim_behind"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ sysui:ignoreRightInset="true"
+ android:importantForAccessibility="no"/>
+ <com.android.systemui.statusbar.AlphaOptimizedView
+ android:id="@+id/heads_up_scrim"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/heads_up_scrim_height"
+ android:background="@drawable/heads_up_scrim"
+ android:importantForAccessibility="no"/>
+ <com.android.systemui.statusbar.VisualizerView
+ android:id="@+id/visualizerview"
+ android:gravity="bottom"
+ android:layout_gravity="bottom"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ sysui:ignoreRightInset="true"
+ android:visibility="visible"/>
+ </com.android.systemui.statusbar.phone.NavBarInsetLayout>
<include layout="@layout/status_bar"
android:layout_width="match_parent"
@@ -97,4 +114,4 @@
sysui:ignoreRightInset="true"
/>
-</com.android.systemui.statusbar.phone.StatusBarWindowView>
+</com.android.systemui.statusbar.phone.NavBarInsetLayout>
diff --git a/packages/SystemUI/res/layout/system_icons.xml b/packages/SystemUI/res/layout/system_icons.xml
index 943e846..1f3f810 100644
--- a/packages/SystemUI/res/layout/system_icons.xml
+++ b/packages/SystemUI/res/layout/system_icons.xml
@@ -34,7 +34,16 @@
<!-- battery must be padded below to match assets -->
<com.android.systemui.BatteryMeterView android:id="@+id/battery"
- android:layout_height="14.5dp"
- android:layout_width="9.5dp"
- android:layout_marginBottom="@dimen/battery_margin_bottom"/>
-</LinearLayout> \ No newline at end of file
+ android:layout_height="18dp"
+ android:layout_width="18dp"
+ android:layout_marginBottom="@dimen/battery_margin_bottom"
+ android:layout_marginStart="@dimen/signal_cluster_battery_padding"/>
+
+ <com.android.systemui.DockBatteryMeterView android:id="@+id/dock_battery"
+ android:layout_height="18dp"
+ android:layout_width="18dp"
+ android:layout_marginBottom="@dimen/battery_margin_bottom"
+ android:layout_marginStart="@dimen/signal_cluster_battery_padding"
+ android:visibility="gone"/>
+
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 7617ed4..a766261 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -22,7 +22,7 @@
android:layout_marginLeft="@dimen/notification_side_padding"
android:layout_marginRight="@dimen/notification_side_padding"
android:background="@drawable/volume_dialog_background"
- android:translationZ="4dp" >
+ android:translationZ="@dimen/volume_panel_z">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/volume_expand_button"
@@ -48,4 +48,4 @@
<include layout="@layout/volume_zen_footer" />
</LinearLayout>
-</RelativeLayout> \ No newline at end of file
+</RelativeLayout>
diff --git a/packages/SystemUI/res/layout/zen_mode_panel.xml b/packages/SystemUI/res/layout/zen_mode_panel.xml
index 43ab4bb..1f88ef3 100644
--- a/packages/SystemUI/res/layout/zen_mode_panel.xml
+++ b/packages/SystemUI/res/layout/zen_mode_panel.xml
@@ -53,7 +53,7 @@
android:contentDescription="@string/accessibility_desc_close"
android:scaleType="center"
android:src="@drawable/ic_close"
- android:tint="@android:color/white" />
+ android:tint="@color/zen_ic_close_tint_color" />
<TextView
android:id="@+id/zen_introduction_message"
diff --git a/packages/SystemUI/res/menu/recent_popup_menu.xml b/packages/SystemUI/res/menu/recent_popup_menu.xml
new file mode 100644
index 0000000..9b605f9
--- /dev/null
+++ b/packages/SystemUI/res/menu/recent_popup_menu.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* apps/common/assets/default/default/skins/StatusBar.xml
+**
+** Copyright 2011, 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.
+*/
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@+id/recent_remove_item" android:title="@string/status_bar_recent_remove_item_title" />
+ <item android:id="@+id/recent_inspect_item" android:title="@string/status_bar_recent_inspect_item_title" />
+ <item android:id="@+id/recent_force_stop" android:title="@string/advanced_dev_option_force_stop" />
+ <item android:id="@+id/recent_wipe_app" android:title="@string/advanced_dev_option_wipe_app" />
+ <item android:id="@+id/recent_uninstall" android:title="@string/advanced_dev_option_uninstall" />
+</menu>
diff --git a/packages/SystemUI/res/values-af/cm_arrays.xml b/packages/SystemUI/res/values-af/cm_arrays.xml
new file mode 100644
index 0000000..3008606
--- /dev/null
+++ b/packages/SystemUI/res/values-af/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NO</item>
+ <!-- North east -->
+ <item>O</item>
+ <!-- East -->
+ <item>SO</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-af/cm_strings.xml b/packages/SystemUI/res/values-af/cm_strings.xml
new file mode 100644
index 0000000..c0ada53
--- /dev/null
+++ b/packages/SystemUI/res/values-af/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Swiep regs vir %1$s</string>
+ <string name="right_shortcut_hint">Swiep links vir %1$s</string>
+ <string name="lockscreen_message">Tik \'n ikoon op die linker of regter kant om \'n slot skerm kortpad toe te wys.</string>
+ <string name="lockscreen_default_target">Standaard</string>
+ <string name="select_application">Kies program</string>
+ <string name="lockscreen_choose_action_title">Kies aksie</string>
+ <string name="lockscreen_none_target">Geen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Kies \'n aksie om toe te ken</string>
+ <string name="navbar_home_button">Tuis-knoppie</string>
+ <string name="navbar_recent_button">Onlangse programme knoppie</string>
+ <string name="navbar_search_button">Soek-knoppie</string>
+ <string name="navbar_back_button">Terug-knoppie</string>
+ <string name="navbar_empty_button">Los leeg</string>
+ <string name="navbar_menu_conditional_button">Kieslys knoppie (Outoverberg)</string>
+ <string name="navbar_menu_always_button">Kieslys-knoppie (Altyd sigbaar)</string>
+ <string name="navbar_menu_big_button">Kieslys-knoppie</string>
+ <string name="accessibility_dpad_left">Wyser na links</string>
+ <string name="accessibility_dpad_right">Wyser na regs</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Vee program data uit</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Dwing stop</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Deïnstalleer</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Ligte herdelheidsvlak</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiele af.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profiel: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiele afgeskakel.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profiel verander na <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inisialiseer\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ligte instellings</string>
+ <string name="led_notification_text">LED liggie word deur instellings gaktiveer</string>
+ <string name="qs_tile_edit_header_instruction">Druk en hou teëls om te herrangskik</string>
+ <string name="quick_settings_edit_label">Redigeer teëls</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Kan nie die redigeerde teël verwyder nie</string>
+ <string name="qs_tiles_reset_confirmation">Herstel vinnige instelling teëls na standaard konfigurasie?</string>
+ <string name="quick_settings_tile_reset_to_default">Herstel na standaard uitleg</string>
+ <string name="quick_settings_title_header">Hoof</string>
+ <string name="quick_settings_title_tiles">Teëls</string>
+ <string name="quick_settings_title_show_weather">Wys weer</string>
+ <string name="quick_settings_title_show_brightness_slider">Wys helderheid skuiwer</string>
+ <string name="quick_settings_title_enlarge_first_row">Vergroot eerste ry</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Dit hou dit binne sig totdat jy dit ontspeld. Raak en hou die knoppie Terug om te ontspeld.</string>
+ <string name="quick_settings_custom_tile_detail_title">Pasgemaakte teël</string>
+ <string name="quick_settings_remove">Verwyder teël</string>
+ <string name="quick_settings_network_adb_label">ADB oor netwerk</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Stelsel profiele</string>
+ <string name="quick_settings_profiles_off">Profiele is afgeskakel</string>
+ <string name="quick_settings_heads_up_label">Loer boodskap</string>
+ <string name="quick_settings_battery_saver_label">Battery bespaarder</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Battery bespaarder (laai)</string>
+ <string name="quick_settings_caffeine_label">Kafeïen</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinchronisering af.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinchronisering aan.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinchronisering afgeskakel.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinchronisering aangeskakel.</string>
+ <string name="quick_settings_sync_label">Sinkroniseer</string>
+ <string name="quick_settings_volume_panel_label">Volume paneel</string>
+ <string name="quick_settings_usb_tether_label">USB internet verbinding</string>
+ <string name="quick_settings_screen_timeout_detail_title">Skerm afsnytyd</string>
+ <string name="quick_settings_lockscreen_label">Slotskerm</string>
+ <string name="quick_settings_ambient_display_label">Omgewingstemperatuur skerm</string>
+ <string name="quick_settings_lockscreen_label_enforced">Slotskerm afgedwing</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Afgeskakel deur profiel</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Skerm slaap: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Skerm slaap verander na <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Battery modus</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Battery modus: energiebesparing modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Battery modus: gebalanseerde modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Battery modus: werkverrigting modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Battery modus: doeltreffendheid modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Battery modus: vinnige modus.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Battery modus verander na energiebesparings modus.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Battery modus verander na gebalanseerde modus.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Battery modus verander na werkverrigting modus.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Battery modus verander na doeltreffendheid modus.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Battery modus verander na vinnige modus.</string>
+ <string name="quick_settings_performance_profile_detail_title">Battery modus</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Slotskerm af.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Slotskerm aan.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Slotskerm afgeskakel.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Slotskerm aangeskakel.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Omgewingstemperatuur vertoning af.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Omgewingstemperatuur vertoning aan.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Omgewingstemperatuur skerm vertoning is afgeskakel.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Omgewingstemperatuur skerm vertoning is aangeskakel.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Loer boodskap af.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Loer boodskap aan.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Loer boodskap is afgeskakel.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Loer boodskap is aangeskakel.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kafeïen af.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kafeïen aan.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Battery bespaarder af.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Battery bespaarder aan.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Battery bespaarder afgeskakel.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Battery bespaarder aangeskakel.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamiese teëls</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Volgende alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Kies IME</string>
+ <string name="dynamic_qs_tile_su_label">\'Root\' toegang</string>
+ <string name="quick_settings_title_advanced_location">Drie-staat ligging</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Liggingverslaggewing: battery besparing.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Liggingverslaggewing: sensors alleenlik.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Liggingverslaggewing: hoë akkuraatheid modus.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Liggingsinligting modus</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Battery besparend</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Slegs Toestel</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Hoë akkuraatheid</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Plek verslagdoening verander na battery sparing modus.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Plek verslagdoening verander na sensors alleenlik modus.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Plek verslagdoening verander na hoë akkuraatheid modus.</string>
+ <string name="quick_settings_tiles_category_system">Stelsel teëls</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Voeg \'n teël by</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Kan nie aan mobiele netwerke koppel terwyl vliegtuig modus aan is nie. Skakel vliegtuig modus af en probeer weer.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Flitslig is aan</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Raak om af te skakel</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="other">%1$d kliente</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Geen data SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dok Battery <xliff:g id="number">%d</xliff:g> persent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Wys speel ry</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-am/cm_arrays.xml b/packages/SystemUI/res/values-am/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-am/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-am/cm_strings.xml b/packages/SystemUI/res/values-am/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-am/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ar/cm_arrays.xml b/packages/SystemUI/res/values-ar/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-ar/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ar/cm_strings.xml b/packages/SystemUI/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..5df04a3
--- /dev/null
+++ b/packages/SystemUI/res/values-ar/cm_strings.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">تحريك إلى اليمين من أجل %1$s</string>
+ <string name="right_shortcut_hint">تحريك إلى اليسار من أجل %1$s</string>
+ <string name="lockscreen_message">انقر فوق رمز على اليسار أو اليمين لتخصيص اختصار جديد على شاشة التأمين.</string>
+ <string name="lockscreen_default_target">الافتراضي</string>
+ <string name="select_application">حدد التطبيق</string>
+ <string name="lockscreen_choose_action_title">اختر إجراء</string>
+ <string name="lockscreen_none_target">لا شيء</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">اختر الإجراء لتخصيصه</string>
+ <string name="navbar_home_button">زر الرئيسية</string>
+ <string name="navbar_recent_button">زر الأشياء الأخيرة</string>
+ <string name="navbar_search_button">زر البحث</string>
+ <string name="navbar_back_button">زر العودة</string>
+ <string name="navbar_empty_button">زر خالٍ</string>
+ <string name="navbar_menu_conditional_button">زر القائمة (الإخفاء التلقائي)</string>
+ <string name="navbar_menu_always_button">زر القائمة (يظهر دائماً)</string>
+ <string name="navbar_menu_big_button">زر القائمة</string>
+ <string name="accessibility_dpad_left">المؤشر إلى اليسار</string>
+ <string name="accessibility_dpad_right">المؤشر الى اليمين</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">مسح بيانات التطبيق</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">إيقاف إجباري</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">إلغاء التثبيت</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">سطوع الضوء</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">إيقاف ملفات التعريف.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">ملف التعريف: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">تعطيل ملفات التعريف. </string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">تم تغيير ملف التعريف إلى <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">تهيئة\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">إعدادات الإضاءة</string>
+ <string name="led_notification_text">إضاءة الـLED مفعلة من الإعدادات</string>
+ <string name="qs_tile_edit_header_instruction">أضغط بإستمرار على الإختصارات لإعادة الترتيب</string>
+ <string name="quick_settings_edit_label">تعديل الاختصارات</string>
+ <string name="quick_settings_cannot_delete_edit_tile">لا يمكن حذف اختصار التعديل</string>
+ <string name="qs_tiles_reset_confirmation">إعادة تعيين إعدادات الاختصارات السريعة للوضع الافتراضى؟</string>
+ <string name="quick_settings_tile_reset_to_default">إعادة تعيين على التخطيط الافتراضي</string>
+ <string name="quick_settings_title_header">الرأس</string>
+ <string name="quick_settings_title_tiles">الإختصارات</string>
+ <string name="quick_settings_title_show_weather">إظهار حالة الطقس</string>
+ <string name="quick_settings_title_show_brightness_slider">إظهار شريط التحكم في السطوع</string>
+ <string name="quick_settings_title_enlarge_first_row">توسيع الصف الأول</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">ستظل ظاهرة حتى يمكنك إزالتها. المس مع الاستمرار زر العودة لإزالتها.</string>
+ <string name="quick_settings_custom_tile_detail_title">مربع مخصص</string>
+ <string name="quick_settings_remove">إزالة المربع</string>
+ <string name="quick_settings_network_adb_label">ADB عبر الشبكة</string>
+ <string name="quick_settings_compass_label">بوصلة</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">ملفات تعريف النظام</string>
+ <string name="quick_settings_profiles_off">تعطيل ملفات التعريف</string>
+ <string name="quick_settings_heads_up_label">إنذار مسبق</string>
+ <string name="quick_settings_battery_saver_label">موفر البطارية</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">حافظ البطارية (شحن)</string>
+ <string name="quick_settings_caffeine_label">وضع الكافيين</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">تعطيل المزامنة. </string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">تشغيل المزامنة.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">تم تعطيل المزامنة.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">تم تشغيل المزامنة.</string>
+ <string name="quick_settings_sync_label">المزامنة</string>
+ <string name="quick_settings_volume_panel_label">لوحة مستوى الصوت</string>
+ <string name="quick_settings_usb_tether_label">الربط عبر USB
+</string>
+ <string name="quick_settings_screen_timeout_detail_title">مهلة الشاشة</string>
+ <string name="quick_settings_lockscreen_label">شاشة القفل</string>
+ <string name="quick_settings_ambient_display_label">العرض المحيط</string>
+ <string name="quick_settings_lockscreen_label_enforced">إعمال قفل الشاشة</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">معطل بواسطة الوضع</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">مهلة الشاشة: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">تم تغيير مهلة الشاشة إلى: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">وضع البطارية</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">وضع البطارية: وضع توفير الطاقة.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">وضع البطارية: وضع متوازن.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">وضع البطارية: وضع الأداء.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">وضع البطارية: وضع الكفاءة.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">وضع البطارية: الوضع السريع.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">تم تغيير وضع البطارية إلى وضع توفير الطاقة.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">تم تغيير وضع البطارية إلى الوضع المتوازن.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">تم تغيير وضع البطارية إلى وضع الأداء.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">تم تغيير وضع البطارية الى وضع الكفاءة.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">تم تغيير وضع البطارية الى الوضع السريع.</string>
+ <string name="quick_settings_performance_profile_detail_title">وضع البطارية</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">تعطيل شاشة القفل.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">تشغيل شاشة القفل.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">تم تعطيل شاشة القفل.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">تم تشغيل شاشة القفل.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">تعطيل العرض المحيط.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">تشغيل العرض المحيط.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">تم تعطيل العرض المحيط.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">تم تشغيل العرض المحيط.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">تعطيل الإنذار المسبق.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">تشغيل الإنذار المسبق.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">تم تعطيل الإنذار المسبق.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">تم تشغيل الإنذار المسبق.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">ايقاف وضع الكافيين.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">تشغيل وضع الكافيين.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">إيقاف موفر البطارية.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">تشغيل موفر البطارية.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">تم ايقاف موفر البطارية.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">تشغيل موفر البطارية.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">مربع ديناميكي</string>
+ <string name="dynamic_qs_tile_next_alarm_label">التنبيه المقبل</string>
+ <string name="dynamic_qs_tile_ime_selector_label">محدد IME</string>
+ <string name="dynamic_qs_tile_su_label">الوصول إلى root</string>
+ <string name="quick_settings_title_advanced_location">الموقع الثلاثى</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">تحديد الموقع: وضع توفير البطارية.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">تحديد الموقع: وضع المستشعرات فقط.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">تحديد الموقع: وضع الدقة العالية.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">وضع الموقع</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">توفير البطارية</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">الجهاز فقط</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">دقة عالية</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">تغيير تحديد الموقع إلى وضع توفير البطارية.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">تغيير تحديد الموقع إلى وضع المستشعرات فقط.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">تغيير تحديد الموقع إلى وضع الدقة العالية.</string>
+ <string name="quick_settings_tiles_category_system">إختصارات النظام</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">إضافة إختصار</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">غير قادر على الإتصال بالشبكات عند تفعيل وضع الطيران. قم بإلغاء تفعيل وضع الطيران وحاول مرة أخرى.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ضوء الفلاش مشغل</string>
+ <string name="quick_settings_tile_flashlight_not_summary">المس لإيقاف التشغيل</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">لا توجد SIM للبيانات</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">بطارية الإرساء <xliff:g id="number">%d</xliff:g>في المائة.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">إظهار قائمة انتظار التشغيل</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-as-rIN/cm_arrays.xml b/packages/SystemUI/res/values-as-rIN/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-as-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-as-rIN/cm_strings.xml b/packages/SystemUI/res/values-as-rIN/cm_strings.xml
new file mode 100644
index 0000000..3937ca4
--- /dev/null
+++ b/packages/SystemUI/res/values-as-rIN/cm_strings.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s ৰ বাবে সোঁফালে ছোৱাইপ কৰক</string>
+ <string name="right_shortcut_hint">%1$s ৰ বাবে বাওঁফালে ছোৱাইপ কৰক</string>
+ <string name="lockscreen_message">লক স্ক্ৰীণ চমুপথ আৰোপ কৰিবলৈ বাওঁফালে বা সোঁফালে এটা আইকনত টেপ কৰক।</string>
+ <string name="lockscreen_default_target">ডিফল্ট</string>
+ <string name="select_application">এপ্লিকেশ্যন বাচনি কৰক</string>
+ <string name="lockscreen_choose_action_title">কাৰ্য পচন্দ কৰক</string>
+ <string name="lockscreen_none_target">হাল্লা</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">আৰোপ কৰিবলৈ ক্ৰিয়া পচন্দ কৰক</string>
+ <string name="navbar_home_button">হোম বুটাম</string>
+ <string name="navbar_recent_button">শেহতীয়া বুটাম</string>
+ <string name="navbar_search_button">অন্বেষণ বুটাম</string>
+ <string name="navbar_back_button">বেক বুটাম</string>
+ <string name="navbar_empty_button">খালি বুটাম</string>
+ <string name="navbar_menu_conditional_button">মেনু (অটোহাইড) বুটাম</string>
+ <string name="navbar_menu_always_button">মেনু (অলৱেজশ্বো) বুটাম</string>
+ <string name="navbar_menu_big_button">মেন্যু বুটাম</string>
+ <string name="accessibility_dpad_left">কাৰ্ছৰ বাওঁফালে</string>
+ <string name="accessibility_dpad_right">কাৰ্ছৰ সোঁফালে</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">এপ্প্ ডাটা পৰিষ্কাৰ কৰক</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">বলপ্ৰয়োগ কৰা বন্ধ</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">আনইনষ্টল</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">লাইটৰ উজ্জ্বলতা</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">প্ৰ\'ফাইল অফ।</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">প্ৰ\'ফাইল: <xliff:g id="profile" example="Default">%s</xliff:g>।</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">প্ৰ\'ফাইল অফ কৰা হৈছে।</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">প্ৰ\'ফাইল <xliff:g id="profile" example="Default">%s</xliff:g>লৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <string name="quick_settings_compass_init">সূচনা কৰিব আছে\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">লাইট ছেটিং</string>
+ <string name="led_notification_text">ছেটিংছৰ দ্বাৰা সক্ষমিত LED লাইট</string>
+ <string name="qs_tile_edit_header_instruction">পুনঃসজ্জিত কৰিবলৈ টাইলবোৰ টিপক আৰু ধৰি থাকক</string>
+ <string name="quick_settings_edit_label">টাইল সম্পাদনা কৰক</string>
+ <string name="quick_settings_cannot_delete_edit_tile">সম্পাদিত টাইল বিলোপ কৰিব নোৱাৰি</string>
+ <string name="qs_tiles_reset_confirmation">দ্ৰুত ছেটিংচ টাইল ডিফ\'ল্ট কনফিগাৰেচনলৈ ৰিছেট কৰিব?</string>
+ <string name="quick_settings_tile_reset_to_default">ডিফ\'ল্ট লেআউটলৈ ৰিছেট কৰক</string>
+ <string name="quick_settings_title_header">শিৰোশাৰী</string>
+ <string name="quick_settings_title_tiles">টাইলচ্‌</string>
+ <string name="quick_settings_title_show_weather">বতৰ প্ৰদৰ্শন কৰক</string>
+ <string name="quick_settings_title_show_brightness_slider">উজ্জ্বলতা স্লাইডাৰ প্ৰদৰ্শন কৰক</string>
+ <string name="quick_settings_title_enlarge_first_row">প্ৰথম শাৰী পৰিবৰ্ধন কৰক</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">ই আপুনি আনপিন নকৰালৈকে এইটো দৰ্শনত ৰাখিব৷ আনপিন কৰিবলৈ বেক বুটাম স্পৰ্শ কৰি ধৰি থাকক।</string>
+ <string name="quick_settings_custom_tile_detail_title">কাষ্টম টাইল</string>
+ <string name="quick_settings_remove">টাইল আঁতৰাওক</string>
+ <string name="quick_settings_network_adb_label">ADB অভাৰ নেটৱৰ্ক</string>
+ <string name="quick_settings_compass_label">কম্পাছ</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">ছিষ্টেম প্ৰ\'ফাইল</string>
+ <string name="quick_settings_profiles_off">প্ৰপাইল অক্ষম কৰা হৈছে</string>
+ <string name="quick_settings_heads_up_label">হেডচ আপ</string>
+ <string name="quick_settings_battery_saver_label">বেটাৰী চেভাৰ</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">কেফেইন</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">সকালীকৄত অফ কৰক।</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">সকালীকৄত অন কৰক।</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">সকালীকৄত অফ কৰা হৈছে।</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">সকালীকৄত অন কৰা হৈছে।</string>
+ <string name="quick_settings_sync_label">সংযোজন</string>
+ <string name="quick_settings_volume_panel_label">ভলিউম পেনেল</string>
+ <string name="quick_settings_usb_tether_label">USB টেথাৰিং</string>
+ <string name="quick_settings_screen_timeout_detail_title">স্ক্ৰীণ টাইম আউট</string>
+ <string name="quick_settings_lockscreen_label">লক স্ক্ৰীণ</string>
+ <string name="quick_settings_ambient_display_label">পৰিপাৰ্শ্বিক ডিচপ্লে</string>
+ <string name="quick_settings_lockscreen_label_enforced">লক স্ক্ৰীণ ৰূপায়িত</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">প্ৰফাইলৰ দ্ৱাৰা অক্ষম কৰা হৈছে</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">স্ক্ৰীণ টাইম আউট: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>।</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">স্ক্ৰীণ টাইম আউট <xliff:g id="timeout" example="30 seconds">%s</xliff:g>লৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <string name="qs_tile_performance">বেটাৰী মোড</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">বেটাৰি মোড: পাৱাৰ ছেভ মোড।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">বেটাৰি মোড: ৰাহি মোড।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">বেটাৰি মোড: কাৰ্য্যকাৰিতা মোড।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">বেটাৰি মোড: এফিচিয়েন্সী মোড।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">বেটাৰি মোড: কুইক মোড।</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">বেটাৰি মোড পাৱাৰ ছেভ মোডলৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">বেটাৰি মোড ৰাহি মোডলৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">বেটাৰি মোড কাৰ্য্যকাৰিতা মোডলৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">বেটাৰি মোড এফিচিয়েন্সী মোডলৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">বেটাৰি মোড কুইক মোডলৈ পৰিৱৰ্তন কৰা হৈছে।</string>
+ <string name="quick_settings_performance_profile_detail_title">বেটাৰী মোড</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">লক স্ক্ৰীণ অফ।</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">লক স্ক্ৰীণ অন।</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">লক স্ক্ৰীণ অফ কৰা হৈছে।</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">লক স্ক্ৰীণ অন কৰা হৈছে।</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">পাৰিপাৰ্শ্বিক প্রদর্শন অফ।</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">পাৰিপাৰ্শ্বিক প্রদর্শন অন।</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">পাৰিপাৰ্শ্বিক প্রদর্শন অফ কৰা হৈছে।</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">পাৰিপাৰ্শ্বিক প্রদর্শন অন কৰা হৈছে।</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">হেডচ আপ অফ।</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">হেডচ আপ অন।</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">হেডচ আপ অফ কৰা হৈছে।</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">হেডচ আপ অন কৰা হৈছে।</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">কেফেইন অফ.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">কেফেইন অন.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">বেটাৰি ছেভাৰ অফ।</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">বেটাৰি ছেভাৰ অন।</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">বেটাৰি ছেভাৰ অফ কৰা হৈছে।</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">বেটাৰি ছেভাৰ অন কৰা হৈছে।</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ডায়নামিক টাইল</string>
+ <string name="dynamic_qs_tile_next_alarm_label">পৰৱৰ্তী এলাৰ্ম</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME চয়নকাৰী</string>
+ <string name="dynamic_qs_tile_su_label">ৰুট প্ৰৱেশ কৰক</string>
+ <string name="quick_settings_title_advanced_location">ট্ৰাই-ষ্টেট অৱস্থান</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">অৱস্থান ৰিপোৰ্টিং: বেটাৰি ছেভিং মোড।</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">অৱস্থান ৰিপোৰ্টিং: কেৱল চেনচৰ মোড।</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">অৱস্থান ৰিপোৰ্টিং: উচ্চ নিৰ্ভুলতা মোড।</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">স্থানমোড</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">বেটাৰী ছেভ কৰা</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">কেৱল ডিভাইচ</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">উচ্চ সঠিকতা</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">অৱস্থান ৰিপোৰ্টিং বেটাৰি ছেভিং মোডলৈ পৰিৱৰ্তন কৰিলে।</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">অৱস্থান ৰিপোৰ্টিং কেৱল চেনচৰ মোডলৈ পৰিৱৰ্তন কৰিলে।</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">অৱস্থান ৰিপোৰ্টিং উচ্চ নিৰ্ভুলতা মোডলৈ পৰিৱৰ্তন কৰিলে।</string>
+ <string name="quick_settings_tiles_category_system">ছিষ্টেম টাইলচ্‌</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">এটা টাইল যোগ কৰক</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">এয়াৰপ্লেন মোড সক্ষম কৰা থাকিলে ম\'বাইল নেটৱৰ্কলৈ সংযোগ কৰিবলৈ অক্ষম। এয়াৰপ্লেন মোড অক্ষম কৰক আৰু পুনৰ চেষ্টা কৰক।</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ফ্লেশলাইট অন আছে</string>
+ <string name="quick_settings_tile_flashlight_not_summary">অফ কৰিবলৈ টেপ কৰক</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d ক্লায়েণ্ট</item>
+ <item quantity="other">%1$d ক্লায়েন্ট</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ডক বেটাৰী <xliff:g id="number">%d</xliff:g> শতাংশ।</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">প্লে কিউ প্ৰদৰ্শন কৰক</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-as-rIN/strings.xml b/packages/SystemUI/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-as-rIN/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-ast-rES/cm_arrays.xml b/packages/SystemUI/res/values-ast-rES/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-ast-rES/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ast-rES/cm_strings.xml b/packages/SystemUI/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..e530151
--- /dev/null
+++ b/packages/SystemUI/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Esliza a la derecha pa %1$s</string>
+ <string name="right_shortcut_hint">Esliza a la esquierda pa %1$s</string>
+ <string name="lockscreen_message">Toca nun iconu de la esquierda o derecha pa reasignar un atayu na pantalla de bloquéu.</string>
+ <string name="lockscreen_default_target">Por defeutu</string>
+ <string name="select_application">Esbillar app</string>
+ <string name="lockscreen_choose_action_title">Esbillar aición</string>
+ <string name="lockscreen_none_target">Nengún</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Seleicionar botón a amosar</string>
+ <string name="navbar_home_button">Botón Aniciu</string>
+ <string name="navbar_recent_button">Botón Recientes</string>
+ <string name="navbar_search_button">Botón Gueta</string>
+ <string name="navbar_back_button">Botón Atrás</string>
+ <string name="navbar_empty_button">Botón baleru</string>
+ <string name="navbar_menu_conditional_button">Botón Menú (auto-anubrir)</string>
+ <string name="navbar_menu_always_button">Botón Menú (siempre visible)</string>
+ <string name="navbar_menu_big_button">Botón Menú</string>
+ <string name="accessibility_dpad_left">Cursor esquierda</string>
+ <string name="accessibility_dpad_right">Cursor derecha</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Desaniciar datos</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forciar detención</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Rellumu de lluz</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfiles desactivaos.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfiles desactivaos.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil camudáu a <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <string name="quick_settings_compass_init">Anicializando\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Axustes de lluz</string>
+ <string name="led_notification_text">Lluz LED habilitada polos axustes</string>
+ <string name="qs_tile_edit_header_instruction">Toca y dexa primíos los controles pa reordenalos</string>
+ <string name="quick_settings_edit_label">Editar caxelles</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Nun pue desaniciase la caxella de \"Editar\"</string>
+ <string name="qs_tiles_reset_confirmation">¿Restaurar los controles d\'axustes rápidos a la configuración predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Reafitar distribución</string>
+ <string name="quick_settings_title_header">Testera</string>
+ <string name="quick_settings_title_tiles">Controles</string>
+ <string name="quick_settings_title_show_weather">Amosar clima</string>
+ <string name="quick_settings_title_show_brightness_slider">Amosar barra de lluminosidá</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar la primer filera</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Esto caltién la pantalla nesta vista hasta que se llibera. Caltén primíu\'l botón Atrás pa lliberala.</string>
+ <string name="quick_settings_custom_tile_detail_title">Caxella personalizada</string>
+ <string name="quick_settings_remove">Desaniciar caxella</string>
+ <string name="quick_settings_network_adb_label">ADB sobre rede</string>
+ <string name="quick_settings_compass_label">Brúxula</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfiles del sistema</string>
+ <string name="quick_settings_profiles_off">Perfiles deshabilitaos</string>
+ <string name="quick_settings_heads_up_label">Notificaciones emerxentes</string>
+ <string name="quick_settings_battery_saver_label">Aforrador d\'enerxía</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Aforrador de batería (cargando)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronización desactivada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronización activada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronización desactivada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronización activada.</string>
+ <string name="quick_settings_sync_label">Sincronización</string>
+ <string name="quick_settings_volume_panel_label">Panel de volume</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tiempu d\'espera</string>
+ <string name="quick_settings_lockscreen_label">Pantalla de bloquéu</string>
+ <string name="quick_settings_ambient_display_label">Pantalla ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Bloquéu de pantalla forzáu</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Deshabilitáu por perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tiempu d\'espera de pantalla: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tiempu d\'espera de pantalla camudáu a <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Mou de batería</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Mou de batería: mou d\'aforru d\'enerxía.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Mou de batería: mou balanceáu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Mou de batería: mou rindimientu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Mou de batería: mou eficiente.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Mou batería: mou rápidu.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Camudóse\'l mou de la batería a Aforru d\'enerxía.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Camudóse\'l mou de la batería a Balanceáu.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Camudóse\'l mou de la batería a Rindimientu.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Camudóse\'l mou de batería a eficiente.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Camudóse\'l mou de batería a mou rápidu.</string>
+ <string name="quick_settings_performance_profile_detail_title">Mou de batería</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Bloquéu de pantalla desactiváu.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Bloquéu de pantalla activáu.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Bloquéu de pantalla desactiváu.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Bloquéu de pantalla activáu.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Pantalla ambiente apagada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Pantalla ambiente prendida.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Apagóse la pantalla ambiente.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Prendióse la pantalla ambiente.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Desactivar notificaciones emerxentes.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Activar notificaciones emerxentes.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Notificaciones emerxentes desactivaes.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Notificaciones emerxentes activaes.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Desactivar Cafeína.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Activar Cafeína.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Aforru de bateríu apagáu.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Aforru de bateríu encesu.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Aforru de bateríu apagáu.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Aforru de bateríu encesu.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Caxella dinámica</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Alarma siguiente</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Seleutor d\'IME</string>
+ <string name="dynamic_qs_tile_su_label">Accesu root</string>
+ <string name="quick_settings_title_advanced_location">Llocalización por triangulación</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Informes de llocalización: mou d\'aforru de batería.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Informes de llocalización: mou de namái sensores.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Informes de llocalización: mou d\'alta precisión.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Mou de llocalización</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Aforru d\'enerxía</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Namái preséu</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Precisión alta</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Informes de llocalización camudaron a mou aforru de batería.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informes de llocalización camudaron a mou namái preséu.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Informes de llocalización camudaron a mou d\'alta precisión.</string>
+ <string name="quick_settings_tiles_category_system">Controles del sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Amestar un control</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Nun pue coneutase a redes móviles mentanto tea activáu el mou Avión. Desactiva\'l mou Avión ya inténtalo de nueves.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">La llinterna ta encesa</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toca p\'apagala</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d veceru</item>
+ <item quantity="other">%1$d veceros</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ensin datos SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batería de la bas al <xliff:g id="number">%d</xliff:g> por cientu.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Amosar la cola de reproducción</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ast-rES/strings.xml b/packages/SystemUI/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..3b9cdb0
--- /dev/null
+++ b/packages/SystemUI/res/values-ast-rES/strings.xml
@@ -0,0 +1,860 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <string name="app_label">IU sistema</string>
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <string name="status_bar_clear_all_button">Llimpiar</string>
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <string name="status_bar_recent_remove_item_title">Desaniciar de la llista</string>
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <string name="status_bar_recent_inspect_item_title">Información de l\'aplicación</string>
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <string name="status_bar_no_recent_apps">Les tos pantalles recientes apaecen equí</string>
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <string name="status_bar_accessibility_dismiss_recents">Inorar aplicaciones recientes</string>
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <plurals name="status_bar_accessibility_recent_apps">
+ <item quantity="one">1 pantalla en perspeutiva</item>
+ <item quantity="other">%d pantalles en perspeutiva</item>
+ </plurals>
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <string name="status_bar_no_notifications_title">Nun tienes notificaciones</string>
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <string name="status_bar_ongoing_events_title">Entrante</string>
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <string name="status_bar_latest_events_title">Notificaciones</string>
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <string name="battery_low_title">Batería baxa</string>
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <string name="invalid_charger">Nun s\'almite la carga por USB.\nUsa namái el cargador proporcionáu.</string>
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <string name="invalid_charger_title">La carga USB nun ta sofitada.</string>
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <string name="invalid_charger_text">Usar namái el cargador suministráu.</string>
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <string name="battery_low_why">Axustes</string>
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_confirmation_title">¿Prender l\'aforrador d\'enerxía?</string>
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <string name="battery_saver_confirmation_ok">Activar</string>
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_start_action">Prender l\'aforrador d\'enerxía</string>
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_settings_button">Axustes</string>
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_wifi_button">Wi-Fi</string>
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_auto_rotation">Xirar pantalla automáticamente</string>
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_mute_label">SILENC</string>
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_auto_brightness_label">AUTO</string>
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_notifications">Notificaciones</string>
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <string name="bluetooth_tethered">Bluetooth ancláu</string>
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <string name="status_bar_input_method_settings_configure_input_methods">Configurar métodos d\'entrada</string>
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <string name="status_bar_use_physical_keyboard">Tecláu físicu</string>
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_permission_prompt">¿Permitir que l\'aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> acceda al preséu USB?</string>
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_permission_prompt">¿Permitir que l\'aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> acceda al preséu USB?</string>
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_confirm_prompt">¿Quies abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> al coneutar esti preséu USB?</string>
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_confirm_prompt">¿Quies abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> al coneutar esti preséu USB?</string>
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_uri_prompt">Nenguna aplicación instalada funciona con esti preséu USB. Más información: <xliff:g id="URL">%1$s</xliff:g></string>
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <string name="title_usb_accessory">Preséu USB</string>
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <string name="label_view">Ver</string>
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_device">Usar de mou predetermináu pa esti preséu USB</string>
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_accessory">Usar de mou predetermináu pa esti preséu USB</string>
+ <!-- Title of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_title">¿Permitir depuración USB?</string>
+ <!-- Message of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_message">La buelga dixital de la to clave RSA ye:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g></string>
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <string name="usb_debugging_always">Permitir siempre dende esti ordenador</string>
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <string name="usb_debugging_secondary_user_title">Depuración USB non permitida</string>
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <string name="usb_debugging_secondary_user_message">L\'usuariu coneutáu agora con esti preséu nun pue activar la depuración por USB. Pa usar esta función, has camudar al usuariu principal \u201C<xliff:g id="name" example="John Doe">%s</xliff:g>\u201D.</string>
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <string name="compat_mode_on">Zoom p\'axustar</string>
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <string name="compat_mode_off">Espander p\'axustar</string>
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <string name="screenshot_saving_ticker">Guardando captura...</string>
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saving_title">Guardando captura...</string>
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saving_text">La captura de pantalla ta guardándose.</string>
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saved_title">Captura guardada</string>
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saved_text">Toca pa ver la captura de pantalla</string>
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <string name="screenshot_failed_title">Nun pudo guardase la captura de pantalla.</string>
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <string name="screenshot_failed_text">Nun pue facese captura de pantalla porque nun hai espaciu, o nun hai permisu pa esta app.</string>
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <string name="usb_preference_title">Opciones de tresferencia de ficheros por USB</string>
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_mtp_button_title">Activar como reproductor de medios (MTP)</string>
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_ptp_button_title">Activar como cámara (PTP)</string>
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="installer_cd_button_title">Instalar Android File Transfer pa Mac</string>
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_back">Atrás</string>
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_home">Aniciu</string>
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_menu">Menú</string>
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_recent">Perspeutiva</string>
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_search_light">Guetar</string>
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_camera_button">Cámara</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_button">Teléfonu</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_voice_assist_button">Asistente voz</string>
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_unlock_button">Desbloquiar</string>
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_unlock_button_fingerprint">Botón de desbloquéu, esperando buelga dixital</string>
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_unlock_without_fingerprint">Desbloquiar ensin usar buelga dixital</string>
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <string name="unlock_label">desbloquiar</string>
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="phone_label">abrir teléfonu</string>
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <string name="voice_assist_label">abrir l\'encontu de voz</string>
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="camera_label">abrir cámara</string>
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <string name="recents_caption_resize">Esbilla\'l diseñu nuevu de la xera</string>
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <string name="cancel">Encaboxar</string>
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_button">Botón de zoom de compatibilidá</string>
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_example">Zoom de pantalla más pequeña a más grande</string>
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_connected">Bluetooth coneutáu</string>
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_disconnected">Bluetooth desconeutáu</string>
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_battery">Ensin batería</string>
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_one_bar">Una barra de batería</string>
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_two_bars">Dos barres de batería</string>
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_three_bars">Trés barres de batería</string>
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_full">Batería completa</string>
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_phone">Ensin teléfonu</string>
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_one_bar">Una barra de cobertoria</string>
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_two_bars">Dos barres de cobertoria</string>
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_three_bars">Trés barres de cobertoria</string>
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_signal_full">Cobertoria al máximu</string>
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_data">Ensin datos</string>
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_one_bar">Una barra de datos</string>
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_two_bars">Dos barres de datos</string>
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_three_bars">Trés barres de datos</string>
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_signal_full">Señal de datos al máximu</string>
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_name">Coneutáu a <xliff:g id="wifi" example="Home Network">%s</xliff:g>.</string>
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_name">Coneutáu a <xliff:g id="bluetooth" example="Car Audio">%s</xliff:g>.</string>
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_wimax">Ensin conexón WiMAX</string>
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_one_bar">Una barra de WiMAX</string>
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_two_bars">Dos barres de WiMAX</string>
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_three_bars">Trés barres de WiMAX</string>
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_signal_full">Señal de WiMAX al máximu</string>
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ethernet_disconnected">Ethernet desconeutada.</string>
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ethernet_connected">Ethernet coneutada.</string>
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_signal">Nun hai señal</string>
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_not_connected">Ensin conexón</string>
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_zero_bars">Nenguna barra</string>
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_one_bar">Una barra</string>
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_two_bars">Dos barres</string>
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_three_bars">Trés barres</string>
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_signal_full">Señal al máximu</string>
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_on">Activáu</string>
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_off">Desactiváu</string>
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connected">Coneutáu</string>
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connecting">Coneutando.</string>
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_gprs">GPRS</string>
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_1x">1 X</string>
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspa">HSPA</string>
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3g">3G</string>
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3.5g">3.5 G</string>
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g">4G</string>
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_lte">LTE</string>
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_cdma">CDMA</string>
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_roaming">Itinerancia</string>
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_edge">Tipu Edge</string>
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_wifi">Wi-Fi</string>
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_sim">Ensin tarxeta SIM</string>
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_tether">Anclaxe de Bluetooth</string>
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">Mou avión</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_sims">Ensin tarxeta SIM.</string>
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_carrier_network_change_mode">Cambéu de fornidor de rede.</string>
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_level"><xliff:g id="NUMBER">%d</xliff:g> por cientu de batería</string>
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_settings_button">Axustes del sistema</string>
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notifications_button">Notificaciones</string>
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_remove_notification">Desaniciar notificación</string>
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_enabled">GPS habilitáu</string>
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_acquiring">Obteniendo llocalización...</string>
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_tty_enabled">Teletipu habilitáu</string>
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_vibrate">Mou vibración</string>
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_silent">Mou silenciu</string>
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <string name="accessibility_recents_item_will_be_dismissed">Descartar <xliff:g id="app" example="Calendar">%s</xliff:g>.</string>
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <string name="accessibility_recents_item_dismissed">Desanicióse <xliff:g id="APP">%s</xliff:g>.</string>
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <string name="accessibility_recents_all_items_dismissed">Descartáronse toles aplicaciones recientes.</string>
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <string name="accessibility_recents_item_launched">Aniciando <xliff:g id="app" example="Calendar">%s</xliff:g>.</string>
+ <!-- Content description of individual recents task. -->
+ <string name="accessibility_recents_task_header"><xliff:g id="app" example="Chrome">%1$s</xliff:g> <xliff:g id="activity_label" example="www.google.com">%2$s</xliff:g></string>
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <string name="accessibility_notification_dismissed">Notificación inorada</string>
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_notification_shade">Pantalla de notificaciones</string>
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_quick_settings">Axustes rápidos</string>
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_lock_screen">Pantalla de bloquéu.</string>
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_settings">Axustes</string>
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_recent_apps">Perspeutiva.</string>
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_close">Zarrar</string>
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_user">Usuariu <xliff:g id="USER">%s</xliff:g></string>
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi"><xliff:g id="signal" example="Three bars">%1$s</xliff:g>.</string>
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_off">Wifi apagada.</string>
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_on">Wifi prendida.</string>
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_mobile">Móvil <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g></string>
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery">Batería <xliff:g id="STATE">%s</xliff:g></string>
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_off">Mou avión apagáu.</string>
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_on">Mou avión prendíu.</string>
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_off">Mou avión apagáu.</string>
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_on">Mou avión prendíu.</string>
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_priority_on">Nun molestar activáu (namái prioridá)</string>
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_none_on">Nun molestar activáu, silenciu total.</string>
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_alarms_on">Nun molestar activáu, namái alarmes.</string>
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_off">Nun molestar desactiváu.</string>
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_changed_off">Nun molestar desactiváu.</string>
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_dnd_changed_on">Nun molestar activáu.</string>
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_off">Bluetooth desactiváu.</string>
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_on">Bluetooth prendíu.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connecting">Coneutando Bluetooth.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connected">Bluetooth coneutáu.</string>
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_off">Bluetooth desconeutáu.</string>
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_on">Bluetooth coneutáu.</string>
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_off">Informe de llocalización desactiváu</string>
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_on">Informe de llocalización activáu</string>
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_off">Informe de llocalización apagáu</string>
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_on">Informe de llocalización prendíu</string>
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_alarm">L\'alarma va sonar a les <xliff:g id="TIME">%s</xliff:g>.</string>
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_close">Zarrar panel.</string>
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_more_time">Más tiempu.</string>
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_less_time">Menos tiempu.</string>
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_off">Llinterna apagada.</string>
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_on">Llinterna prendida.</string>
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_changed_off">Llinterna desconeutada.</string>
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_changed_on">Llinterna coneutada.</string>
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_color_inversion_changed_off">Inversión de color apagáu</string>
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_color_inversion_changed_on">Inversión de color prendíu</string>
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_hotspot_changed_off">Puntu d\'accesu móvil apagáu</string>
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_hotspot_changed_on">Puntu d\'accesu móvil prendíu</string>
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_casting_turned_off">Pantalla d\'emisión parada.</string>
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_brightness">Amosar brillu</string>
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <string name="data_usage_disabled_dialog_3g_title">Posáronse los datos 2G-3G</string>
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <string name="data_usage_disabled_dialog_4g_title">Posáronse los datos 4G</string>
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <string name="data_usage_disabled_dialog_mobile_title">Datos móviles en posa</string>
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <string name="data_usage_disabled_dialog_title">Datos posaos</string>
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <string name="data_usage_disabled_dialog">Darréu qu\'algamóse la llende de datos afitada, el preséu paró l\'usu de datos pal restu d\'esti ciclu.\n\nReanudar esto, podría tener como resultáu cargos del fornidor.</string>
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <string name="data_usage_disabled_dialog_enable">Reanudar</string>
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_disconnected">Ensin conexón a Internet</string>
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_wifi_nossid">Con conexón Wi-Fi</string>
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_searching_text">Guetando GPS</string>
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">Llocalización definida por GPS</string>
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <string name="accessibility_location_active">Solicitúes de llocalización actives</string>
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_clear_all">Llimpiar toles notificaciones</string>
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <string name="status_bar_notification_inspect_item_title">Axustes de notificaciones</string>
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <string name="status_bar_notification_app_settings_title">Axustes <xliff:g id="app_name" example="Calendar">%s</xliff:g></string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">La pantalla va xirar automáticamente.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">La pantalla ta bloquiada en mou horizontal.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">La pantalla ta bloquiada en mou vertical.</string>
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off_changed">La pantalla va xirar agora automáticamente.</string>
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape_changed">La pantalla ta bloquiada en mou horizontal.</string>
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait_changed">La pantalla ta bloquiada en mou vertical.</string>
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <string name="dessert_case">Caxa para postres</string>
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <string name="start_dreams">Curiapantalles</string>
+ <!-- Textual description of Ethernet connections -->
+ <string name="ethernet_label">Ethernet</string>
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_dnd_label">Nun molestar</string>
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_dnd_priority_label">Namái prioridá</string>
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_dnd_alarms_label">Namái alarmes</string>
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_dnd_none_label">Silenciu total</string>
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_label">Bluetooth</string>
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_multiple_devices_label">Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> preseos)</string>
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_off_label">Bluetooth desactiváu</string>
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_detail_empty_text">Nun hai disponibles preseos empareyaos</string>
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_label">Brillu</string>
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_unlocked_label">Xiru-auto</string>
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_label">Xiru bloquiáu</string>
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_portrait_label">Retratu</string>
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_landscape_label">Paisaxe</string>
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_ime_label">Métodu d\'entrada</string>
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_label">Llocalización</string>
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_off_label">Llocalización desactivada</string>
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_media_device_label">Preséu multimedia</string>
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_label">RSSI</string>
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_emergency_only">Namái llamaes d\'emerxencia</string>
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_settings_label">Axustes</string>
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_time_label">Hora</string>
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_label">Yo</string>
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_title">Usuariu</string>
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_new_user">Usuariu nuevu</string>
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_label">Wi-Fi</string>
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_not_connected">Non coneutáu</string>
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_no_network">Nun hai rede.</string>
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_off_label">Wi-Fi desactiváu</string>
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_detail_empty_text">Nun hai redes Wi-Fi disponibles</string>
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_title">Tresmitir</string>
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_casting">Emisión</string>
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_device_default_name">Preséu ensin nome</string>
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_device_default_description">Preparáu pa emitir</string>
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_detail_empty_text">Nun hai preseos disponibles</string>
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_title">Brillu</string>
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_auto_brightness_label">AUTO</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_inversion_label">Invertir colores</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_color_space_label">Mou de correición de color</string>
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_more_settings">Más axustes</string>
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_done">Fecho</string>
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_connected">Coneutáu</string>
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_connecting">Coneutando...</string>
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_tethering_label">Anclaxe a rede</string>
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_hotspot_label">Hotspot</string>
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_notifications_label">Notificaciones</string>
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_flashlight_label">Llinterna</string>
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_title">Datos móvil</string>
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_usage">Usu de datos</string>
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_remaining_data">Datos restantes</string>
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_used"><xliff:g id="data_used" example="2.0 GB">%s</xliff:g> usaos</string>
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_limit">Llende <xliff:g id="data_limit" example="2.0 GB">%s</xliff:g></string>
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_warning">Avisu <xliff:g id="data_limit" example="2.0 GB">%s</xliff:g></string>
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <string name="recents_empty_message">Les tos pantalles recientes apaecen equí</string>
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <string name="recents_app_info_button_label">Info d\'aplicación</string>
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <string name="recents_search_bar_label">guetar</string>
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <string name="recents_launch_error_message">Nun pudo aniciase <xliff:g id="app" example="Calendar">%s</xliff:g>.</string>
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <string name="recents_dismiss_all_message">Descartar toles apps</string>
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <string name="recents_multistack_add_stack_dialog_split_horizontal">División horizontal</string>
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <string name="recents_multistack_add_stack_dialog_split_vertical">División vertical</string>
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <string name="recents_multistack_add_stack_dialog_split_custom">División personalizada</string>
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charged">Cargada</string>
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charging">Cargando</string>
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charging_with_time">Queden <xliff:g id="charging_time" example="2 hrs 25 min">%s</xliff:g> cargando</string>
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_not_charging">Nun se ta cargando</string>
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <string name="battery_meter_very_low_overlay_symbol">!</string>
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <string name="ssl_ca_cert_warning">La rede pue\nsupervisase</string>
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_target_search">Guetar</string>
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_direction_up">Esliza\'l deu hacia arriba pa <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string>
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_direction_left">\"Esliza\'l deu hacia la esquierda pa <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string>
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <string name="zen_priority_introduction">Nun van molestate los soníos nin les vibraciones, sacante que seyan alarmes, recordatorios, eventos y emisores qu\'especifiques.</string>
+ <!-- Zen mode: Priority only customization button label -->
+ <string name="zen_priority_customize_button">Personalizar</string>
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <string name="zen_silence_introduction_voice">Esta aición bloquia TOLOS soníos y les vibraciones, incluyíes les que remanecen d\'alarmes, vídeos y xuegos. Vas poder facer llamaes telefóniques.</string>
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <string name="zen_silence_introduction">Esta aición bloquia TOLOS soníos y les vibraciones, incluyíes les que remanecen d\'alarmes, vídeos y xuegos.</string>
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <string name="keyguard_more_overflow_text">+<xliff:g id="number_of_notifications" example="5">%d</xliff:g></string>
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <string name="speed_bump_explanation">Notificaciones menos urxentes, debaxo</string>
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <string name="notification_tap_again">Toca otra vuelta p\'abrir</string>
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <string name="keyguard_unlock">Eslizar arriba pa desbloquiar</string>
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <string name="phone_hint">Esliza\'l deu pa desbloquiar el teléfonu</string>
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <string name="voice_hint">Esliza\'l deu dende l\'iconu p\'abrir encontu de voz</string>
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <string name="camera_hint">Esliza\'l deu p\'acceder a la cámara</string>
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <string name="interruption_level_none_with_warning">Silenciu total. Tamién van silenciase los llectores de pantalla.</string>
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <string name="interruption_level_none">Silenciu total</string>
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <string name="interruption_level_priority">Namái prioridá</string>
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <string name="interruption_level_alarms">Namái alarmes</string>
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_none_twoline">Silenciu\ntotal</string>
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_priority_twoline">Namái\nprioridá</string>
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_alarms_twoline">Namái\nalarmes</string>
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time">Cargando (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> pa completar)</string>
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time_fast">Carga rápida (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> pa completar la carga)</string>
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time_slowly">Carga lenta (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> pa completar la carga)</string>
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <string name="accessibility_multi_user_switch_switcher">Camudar usuariu</string>
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <string name="accessibility_multi_user_switch_switcher_with_current">Cambiar usuariu, usuariu actual <xliff:g id="current_user_name" example="John Doe">%s</xliff:g></string>
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <string name="accessibility_multi_user_switch_inactive">L\'usuariu actual ye <xliff:g id="current_user_name" example="John Doe">%s</xliff:g></string>
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <string name="accessibility_multi_user_switch_quick_contact">Amosar perfil</string>
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <string name="user_add_user">Amestar usuariu</string>
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <string name="user_new_user_name">Usuariu nuevu</string>
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <string name="guest_nickname">Convidáu</string>
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_new_guest">Amestar convidáu</string>
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest">Desaniciar convidáu</string>
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_exit_guest_dialog_title">Desaniciar convidáu?</string>
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_exit_guest_dialog_message">Van desaniciase toles apps y datos nesta sesión.</string>
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest_dialog_remove">Desaniciar</string>
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_wipe_session_title">Bienllegáu otra vuelta, convidáu!</string>
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_wipe_session_message">Quies continuar la to sesión?</string>
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <string name="guest_wipe_session_wipe">Aniciar sesión nueva</string>
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <string name="guest_wipe_session_dontwipe">Sí, siguir</string>
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <string name="guest_notification_title">Usuariu convidáu</string>
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <string name="guest_notification_text">Pa desaniciar aplicaciones y datos, desanicia l\'usuariu convidáu</string>
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <string name="guest_notification_remove_action">DESANICIAR CONVIDÁU</string>
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <string name="user_add_user_title" msgid="2108112641783146007">Amestar usuariu nuevu?</string>
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <string name="user_add_user_message_short" msgid="1511354412249044381">Cuando amiestes un usuariu nuevu, esi usuariu necesita configurar el so espaciu\n\nCualquier usuariu pue anovar apps pa otros usuarios. </string>
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <string name="battery_saver_notification_title">L\'aforrador de batería ta activáu</string>
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <string name="battery_saver_notification_text">Amenorga los datos de rindimientu y de fondu</string>
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <string name="battery_saver_notification_action_text">Prender l\'aforrador d\'enerxía</string>
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <string name="notification_hidden_text">Conteníos anubríos</string>
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <string name="media_projection_dialog_text"><xliff:g id="app_seeking_permission" example="Hangouts">%s</xliff:g> va empezar a capturar tolo que s\'amuese na pantalla.</string>
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <string name="media_projection_remember_text">Nun amosar más</string>
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <string name="clear_all_notifications_text">Llimpiar too</string>
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <string name="media_projection_action_text">Aniciar agora</string>
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <string name="empty_shade_text">Nun tienes notificaciones</string>
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <string name="device_owned_footer">El preséu pue ser monitoreáu</string>
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <string name="profile_owned_footer">El perfil pue ser monitoreáu</string>
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <string name="vpn_footer">La rede pue ser monitoreada</string>
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <string name="monitoring_title_device_owned">Monitoréu de preseos</string>
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <string name="monitoring_title_profile_owned">Monitoréu de perfiles</string>
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <string name="monitoring_title">Monitoréu de rede</string>
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <string name="disable_vpn">Deshabilitar VPN</string>
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <string name="disconnect_vpn">Desconeutar VPN</string>
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <string name="monitoring_description_device_owned"><xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona\'l to preséu.\n\nL\'alministrador pue supervisar y alministra la configuración, l\'accesu corporativu, les aplicaciones, los datos asociaos a esti preséu y la información de llocalización del preséu. Pa obtener más información, comunícate col alministrador.</string>
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <string name="monitoring_description_vpn">Disti permisu a una app p\'afitar una conexón VPN.\n\nEsta app pue monitorear el preséu y l\'actividá de rede, incluyendo correos, apps y webs.</string>
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <string name="monitoring_description_vpn_device_owned"><xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona\'l to preséu.\n\nL\'alministrador pue supervisar y alministra la configuración, l\'accesu corporativu, les aplicaciones, los datos asociaos a esti preséu y la información de llocalización del preséu. Pa obtener más información, comunícate col alministrador.\n\nTamién tienes una conexón VPN, que pue supervisar l\'actividá de la rede (corréu-e, apps y sitios web).\n\nPa tener más información, contauta col alministrador.</string>
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <string name="monitoring_description_vpn_profile_owned"><xliff:g id="organization">%1$s</xliff:g> xestiona\'l to perfil de trabayu.\n\nL\'alministrador pue supervisar l\'actividá de la rede, incluyíos los correos-e, les apps y los sitios web.\n\nPa obtener más información, comunícate col alministrador.\n\nTamién tienes conexón a una VPN, que pue supervisar l\'actividá de la to rede.</string>
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <string name="legacy_vpn_name">VPN</string>
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <string name="monitoring_description_app">Tas coneutáu a <xliff:g id="application">%1$s</xliff:g>, que pue monitorear la to actividá personal na rede, correos, apps y sitios web.</string>
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <string name="monitoring_description_app_personal">Tas coneutáu a <xliff:g id="application">%1$s</xliff:g>, que pue monitorear la to actividá personal na rede, correos, apps y sitios web.</string>
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <string name="monitoring_description_app_work"><xliff:g id="organization">%1$s</xliff:g> xestiona\'l to perfil de trabayu. Ta coneutáu a <xliff:g id="application">%2$s</xliff:g>, que pue supervisar l\'actividá de la rede, incluyíos los correos-e, les apps y los sitios web.\n\nPa obtener más información, contauta col alministrador.</string>
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <string name="monitoring_description_app_personal_work"><xliff:g id="organization">%1$s</xliff:g> xestiona\'l to perfil de trabayu. Ta coneutáu a <xliff:g id="application_work">%2$s</xliff:g>, que pue supervisar l\'actividá de la rede, incluyíos los correos-e, les apps y los sitios web.\n\nTamién tas coneutáu a <xliff:g id="application_personal">%3$s</xliff:g>, que pue monitorear la to actividá personal na rede.</string>
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <string name="monitoring_description_vpn_app_device_owned"><xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona\'l to preséu.\n\nL\'alministrador pue supervisar y alministra la configuración, l\'accesu corporativu, les aplicaciones, los datos asociaos a esti preséu y la información de llocalización del preséu.\n\nTienes conexón a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pue supervisar l\'actividá de la rede, incluidos los correos electrónicos, les aplicaciones y los sitios web.\n\nPa obtener más información, comunícate col alministrador.</string>
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <string name="keyguard_indication_trust_disabled">El preséu va tar bloquiáu hasta que lu desbloquies manualmente</string>
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <string name="hidden_notifications_title">Obtener notificaciones más rápido</string>
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <string name="hidden_notifications_text">Veles enantes de desbloquiar</string>
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <string name="hidden_notifications_cancel">Non, gracies</string>
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <string name="hidden_notifications_setup">Configurar</string>
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <string name="notification_expand_button_text">Ver toes</string>
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <string name="notification_collapse_button_text">Anubrir toes</string>
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <string name="zen_mode_and_condition"><xliff:g id="zen_mode" example="Priority interruptions only">%1$s</xliff:g>. <xliff:g id="exit_condition" example="For one hour">%2$s</xliff:g></string>
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <string name="volume_zen_end_now">Finar agora</string>
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_volume_expand">Espander</string>
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_volume_collapse">Contrayer</string>
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <string name="volumeui_prompt_message"><xliff:g id="app_name" example="Volume Prototype 1">%1$s</xliff:g> quier ser el cuadru de diálogu de volume.</string>
+ <!-- VolumeUI activation dialog: allow button label -->
+ <string name="volumeui_prompt_allow">Permitir</string>
+ <!-- VolumeUI activation dialog: deny button label -->
+ <string name="volumeui_prompt_deny">Ñegar</string>
+ <!-- VolumeUI restoration notification: title -->
+ <string name="volumeui_notification_title"><xliff:g id="app_name" example="Volume Prototype 1">%1$s</xliff:g> ye\'l diálogu de volume</string>
+ <!-- VolumeUI restoration notification: text -->
+ <string name="volumeui_notification_text">Toca pa restaurar l\'orixinal.</string>
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <string name="managed_profile_foreground_toast">Tas usando\'l to perfil de trabayu</string>
+ <!-- Name of special SystemUI debug settings -->
+ <string name="system_ui_tuner">Sintonizador de IU del sistema</string>
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <string name="show_battery_percentage">Amosar porcentaxe de la batería integrada</string>
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <string name="show_battery_percentage_summary">Amosar porcentaxe del nivel de batería nel iconu de la barra d\'estáu cuando nun se ta cargando</string>
+ <!-- Name of quick settings -->
+ <string name="quick_settings">Axustes rápidos</string>
+ <!-- Name of status bar -->
+ <string name="status_bar">Barra d\'estáu</string>
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <string name="demo_mode">Mou desmostración</string>
+ <!-- Enable demo mode -->
+ <string name="enable_demo_mode">Activar el mou de demostración</string>
+ <!-- Show demo mode icons -->
+ <string name="show_demo_mode">Amosar mou demo</string>
+ <!-- Name of the ethernet status bar icon. -->
+ <string name="status_bar_ethernet">Ethernet</string>
+ <!-- Name of the alarm status bar icon. -->
+ <string name="status_bar_alarm">Alarma</string>
+ <!-- Name of the work status bar icon. -->
+ <string name="status_bar_work">Perfil de trabayu</string>
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">Mou avión</string>
+ <!-- Description for adding a quick settings tile -->
+ <string name="add_tile">Amestar mosaicu</string>
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <string name="broadcast_tile">Mosaicu de tresmisión</string>
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <string name="regrettable_lack_of_easter_egg">
+ ¯\\_(ツ)_/¯
+ </string>
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <string name="zen_alarm_warning_indef">Nun vas sentir la próxima alarma a la(les) <xliff:g id="when" example="at 7:00 AM">%1$s</xliff:g> sacantes que desactives esta enantes</string>
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <string name="zen_alarm_warning">Nun vas sentir la próxima alarma a la(les) <xliff:g id="when" example="at 7:00 AM">%1$s</xliff:g></string>
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <string name="alarm_template">a la(les) <xliff:g id="when" example="at 7:00 AM">%1$s</xliff:g></string>
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <string name="alarm_template_far">el <xliff:g id="WHEN">%1$s</xliff:g></string>
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_detail">Configuración rápida: <xliff:g id="TITLE">%s</xliff:g></string>
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <string name="accessibility_status_bar_hotspot">Hotspot</string>
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_managed_profile">Perfil de trabayu</string>
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <string name="tuner_warning_title">Diversión pa dalgunos, pero non pa toos</string>
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <string name="tuner_warning">El sintonizador de IU del sistema date más formes pa editar y personalizar la interfaz d\'usuariu d\'Android. Estes funciones esperimentales puen camudar, dexar de furrular, o nun incluyise en versiones futures. Procede con precuru.</string>
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <string name="tuner_persistent_warning">Estes funciones esperimentales puen camudar, dexar de furrular, o nun incluyise en versiones futures. Procede con precuru.</string>
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <string name="tuner_toast">Amestóse\'l sintonizador de IU del sistema a Axustes</string>
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <string name="remove_from_settings">Quitar de Axustes</string>
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <string name="remove_from_settings_prompt">¿Quies quitar el sintonizador de IU del sistema de Axustes y dexar d\'usar toles sos funciones?</string>
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <string name="enable_bluetooth_title">¿Prender Bluetooth?</string>
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <string name="enable_bluetooth_message">Pa coneutar el tecláu cola tablet, primero tienes d\'activar Bluetooth.</string>
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+ <string name="enable_bluetooth_confirmation_ok">Activar</string>
+</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/cm_arrays.xml b/packages/SystemUI/res/values-az-rAZ/cm_arrays.xml
new file mode 100644
index 0000000..4d75e51
--- /dev/null
+++ b/packages/SystemUI/res/values-az-rAZ/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Şi</item>
+ <!-- North -->
+ <item>ŞŞ</item>
+ <!-- North east -->
+ <item>Şə</item>
+ <!-- East -->
+ <item>CŞ</item>
+ <!-- South east -->
+ <item>C</item>
+ <!-- South -->
+ <item>CQ</item>
+ <!-- South west -->
+ <item>Q</item>
+ <!-- West -->
+ <item>ŞQ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/cm_strings.xml b/packages/SystemUI/res/values-az-rAZ/cm_strings.xml
new file mode 100644
index 0000000..d9b0088
--- /dev/null
+++ b/packages/SystemUI/res/values-az-rAZ/cm_strings.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s üçün sağa sürüşdürün</string>
+ <string name="right_shortcut_hint">%1$s üçün sola sürüşdürün</string>
+ <string name="select_application">Tətbiqetmə seç</string>
+ <string name="lockscreen_choose_action_title">Hərəkət seç</string>
+ <string name="lockscreen_none_target">Yoxdur</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Hərəkət seçin</string>
+ <string name="navbar_home_button">Əsas ekran düyməsi</string>
+ <string name="navbar_recent_button">Son tətb. düyməsi</string>
+ <string name="navbar_search_button">Axtarış düyməsi</string>
+ <string name="navbar_back_button">Geri düyməsi</string>
+ <string name="navbar_empty_button">Boş düymə</string>
+ <string name="navbar_menu_conditional_button">Menyu (avtoGizlət) düyməsi</string>
+ <string name="navbar_menu_always_button">Menyu (hmşGöstər) düyməsi</string>
+ <string name="navbar_menu_big_button">Menyu düyməsi</string>
+ <string name="accessibility_dpad_left">Sol kursor</string>
+ <string name="accessibility_dpad_right">Sağ kursor</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Tətbiq verilənlərini sil</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Dayanmağa məcbur et</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Çıxart</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profillər bağlıdır.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profillər bağlıdır.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed"><xliff:g id="profile" example="Default">%s</xliff:g> profilinə keçildi.</string>
+ <string name="quick_settings_compass_init">Başladılır\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Ekrandan çıxarılana qədər görsənəcək. Çıxartmaq üçün Geri düyməsinə toxunub basılı tutun.</string>
+ <string name="quick_settings_custom_tile_detail_title">Özəl kvadrat</string>
+ <string name="quick_settings_remove">Kvadratı çıxart</string>
+ <string name="quick_settings_network_adb_label">Şəbəkə üzərindən ADB</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistem profilləri</string>
+ <string name="quick_settings_profiles_off">Profillər ləğv edildi</string>
+ <string name="quick_settings_heads_up_label">Açılan başlıqlar</string>
+ <string name="quick_settings_battery_saver_label">Batereyaya qənaət</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Eyniləşdirmə bağlıdır.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Eyniləşdirmə açıqdır.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Eyniləşdirmə bağlanıldı.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Eyniləşdirmə açıldı.</string>
+ <string name="quick_settings_sync_label">Eyniləşdirmə</string>
+ <string name="quick_settings_volume_panel_label">Səs paneli</string>
+ <string name="quick_settings_usb_tether_label">USB internet paylaşımı</string>
+ <string name="quick_settings_screen_timeout_detail_title">Ekrana qoyulan vaxt</string>
+ <string name="quick_settings_lockscreen_label">Kilid ekranı</string>
+ <string name="quick_settings_ambient_display_label">Bildiriş ekranı</string>
+ <string name="quick_settings_lockscreen_label_enforced">Kilit ekranı məcburidir</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ekrana qoyulan vaxt: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Ekrana qoyulan vaxt <xliff:g id="timeout" example="30 seconds">%s</xliff:g> olaraq tənzimləndi.</string>
+ <string name="qs_tile_performance">Batereya rejimi</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Batereya rejimi: enerjiyə qənaəti rejimi.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Batereya rejimi: tarazlaşdırılmış rejim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Batereya rejimi: performans rejimi.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Batareya rejimi: səmərəli rejim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Batereya rejimi: cəld rejim.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Batereya rejimi enerjiyə qənaət rejiminə keçdi.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Batereya rejimi tarazlaşdırılmış rejimə keçdi.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Batereya rejimi performans rejiminə keçdi.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Batereya rejimi səmərəli rejimə keçdi.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Batereya rejimi cəld rejiminə keçdi.</string>
+ <string name="quick_settings_performance_profile_detail_title">Batereya rejimi</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Kilit ekranı bağlıdır.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Kilit ekranı açıldı.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Kilit ekranı bağlanıldı.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Kilit ekranı açıldı.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Bildiriş ekranı bağlıdır.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Bildiriş ekranı açıqdır.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Bildiriş ekranı bağlanıldı.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Bildiriş ekranı açıldı.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Açılan başlıq bildirişi bağlıdır.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Açılan başlıq bildişi açıqdır.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Açılan başlıq bildirişi bağlanıldı.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Açılan başlıq bildirişi açıldı.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Batereyaya qənaət bağlıdır.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Batereyaya qənaət açıqdır.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Batereyaya qənaət bağlanıldı.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Batereyaya qənaət açıldı.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamik kvadrat</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Növbəti zəngli saat</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME seçici</string>
+ <string name="dynamic_qs_tile_su_label">Root müraciəti</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Yer hesabatı: batareyaya qənaət rejimi.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Yer hesabatı: yalnız sensorlar rejimi.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Yer hesabatı: yüksək həssaslıq rejimi.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Yer rejimi</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Batareyaya qənaət</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Yalnız cihaz</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Yüksək həssaslıq</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Yer bildirişi batereyaya qənaət rejiminə keçdi.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Yer bildirişi yalnız sensorlar rejiminə keçdi.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Yer bildirişi yüksək dəqiqlik rejiminə keçdi.</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Modul batareya faizi <xliff:g id="number">%d</xliff:g>.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Oynatma sırasını göstər</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-be/cm_arrays.xml b/packages/SystemUI/res/values-be/cm_arrays.xml
new file mode 100644
index 0000000..e41fd7f
--- /dev/null
+++ b/packages/SystemUI/res/values-be/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Паўночны</item>
+ <!-- North -->
+ <item>Паўночна-Усходні</item>
+ <!-- North east -->
+ <item>Усходні</item>
+ <!-- East -->
+ <item>Паўднёва-Усходні</item>
+ <!-- South east -->
+ <item>Паўднёвы</item>
+ <!-- South -->
+ <item>Паўднёва-Заходні</item>
+ <!-- South west -->
+ <item>Заходні</item>
+ <!-- West -->
+ <item>Паўночна-Заходні</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-be/cm_strings.xml b/packages/SystemUI/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..4db516e
--- /dev/null
+++ b/packages/SystemUI/res/values-be/cm_strings.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Правядзіце направа, каб адкрыць дадатак %1$s</string>
+ <string name="right_shortcut_hint">Правядзіце налева, каб адкрыць дадатак %1$s</string>
+ <string name="lockscreen_message">Націсніце значок злева альбо справа для змянення цэтліка экрана блакавання.</string>
+ <string name="lockscreen_default_target">Па змаўчанні</string>
+ <string name="select_application">Выбар дадатку</string>
+ <string name="lockscreen_choose_action_title">Выбар дзеяння</string>
+ <string name="lockscreen_none_target">Нічога</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Выберыце дзеянне</string>
+ <string name="navbar_home_button">Дамоў</string>
+ <string name="navbar_recent_button">Запушчаныя дадаткі</string>
+ <string name="navbar_search_button">Пошук</string>
+ <string name="navbar_back_button">Назад</string>
+ <string name="navbar_empty_button">Пустая кнопка</string>
+ <string name="navbar_menu_conditional_button">Меню (калі даступна)</string>
+ <string name="navbar_menu_always_button">Меню (заўсёды)</string>
+ <string name="navbar_menu_big_button">Меню</string>
+ <string name="accessibility_dpad_left">Курсор налева</string>
+ <string name="accessibility_dpad_right">Курсор направа</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Сцерці дадзеныя</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Спыніць прымусова</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Выдаліць</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Яскравасць</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Профілі выключаны.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Профіль: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Профілі выключаны.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Профіль зменены на <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Ініцыялізацыя\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Індыкатар падзей</string>
+ <string name="led_notification_text">Светадыёд уключаны параметрамі</string>
+ <string name="qs_tile_edit_header_instruction">Націсніце і ўтрымвайце плітку для змены</string>
+ <string name="quick_settings_edit_label">Рэдагаваць плітку</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Немагчыма выдаліць кнопку рэдагавання</string>
+ <string name="qs_tiles_reset_confirmation">Аднавіць набор плітак па змаўчанні?</string>
+ <string name="quick_settings_tile_reset_to_default">Скінуць на \"па змаўчанню\"</string>
+ <string name="quick_settings_title_header">Назва</string>
+ <string name="quick_settings_title_tiles">Пліткі</string>
+ <string name="quick_settings_title_show_weather">Звесткі пра надвор\'е</string>
+ <string name="quick_settings_title_show_brightness_slider">Паказваць рэгулятар яскравасці</string>
+ <string name="quick_settings_title_enlarge_first_row">Павялічыць першы рад</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Гэты дадатак застанецца актыўным, пакуль вы не скасуеце блакаванне доўгім націскам кнопкі \"Назад\".</string>
+ <string name="quick_settings_custom_tile_detail_title">Карыстальніцкая плітка</string>
+ <string name="quick_settings_remove">Выдаліць плітку</string>
+ <string name="quick_settings_network_adb_label">Адладка па сетцы</string>
+ <string name="quick_settings_compass_label">Компас</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Сістэмныя профілі</string>
+ <string name="quick_settings_profiles_off">Профілі адключаны</string>
+ <string name="quick_settings_heads_up_label">Усплывальныя паведамленні</string>
+ <string name="quick_settings_battery_saver_label">Энергазахавання</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Сінхранізацыя адключаная.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Сінхранізацыя ўключана.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Сінхранізацыя адключаная.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Сінхранізацыя ўключана.</string>
+ <string name="quick_settings_sync_label">Сінхранізацыя</string>
+ <string name="quick_settings_volume_panel_label">Панэль гучнасці</string>
+ <string name="quick_settings_usb_tether_label">USB-мадэм</string>
+ <string name="quick_settings_screen_timeout_detail_title">Затрымка адключэння экрана</string>
+ <string name="quick_settings_lockscreen_label">Экран блакіроўкі</string>
+ <string name="quick_settings_ambient_display_label">Індыкацыя падзей</string>
+ <string name="quick_settings_lockscreen_label_enforced">Блакаванне экрана ўключана</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Адключаны профілем</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Час да выключэння экрана: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Час да выключэння экрана зменены на <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Энергаспажыванне</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Рэжым батарэі: энергазахавальны.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Рэжым батарэі: збалансаваны.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Рэжым батарэі: прадукцыйны.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Рэжым энергаспажывання: эфектыўны.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Рэжым энергаспажывання: прадукцыйнасць.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Рэжым батарэі зменены на энергазахавальны.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Рэжым батарэі зменены на збалансаваны.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Рэжым батарэі зменены на прадукцыйны.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Рэжым энергаспажывання зменены на эфектыўны.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Рэжым энергаспажывання зменены на прадукцыйны.</string>
+ <string name="quick_settings_performance_profile_detail_title">Энергаспажыванне</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Экран блакавання выключаны.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Экран блакавання ўключаны.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Экран блакавання выключаны.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Экран блакавання ўключаны.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Індыкацыя падзей экранам адключаная.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Індыкацыя падзей экранам уключана.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Індыкацыя падзей экранам адключаная.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Індыкацыя падзей экранам уключана.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Усплывальныя паведамленні адключаны.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Усплывальныя паведамленні ўключаны.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Усплывальныя паведамленні адключаны.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Усплывальныя паведамленні ўключаны.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Рэжым энергазахавання вымкнуты.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Рэжым энергазахавання ўлучаны.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Рэжым энергазахавання вымкнуты.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Рэжым энергазахавання ўлучаны.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Дынамічная плітка</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Наступны будзільнік</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Выбар метаду ўводу</string>
+ <string name="dynamic_qs_tile_su_label">Суперкарыстальнік</string>
+ <string name="quick_settings_title_advanced_location">Налады адсылання геададзеных</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Адпраўка месцазнаходжання: рэжым эканоміі батарэі.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Адпраўка месцазнаходжання: толькі па GPS.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Адпраўка месцазнаходжання: рэжым высокай дакладнасці.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Вызначэнне месцазнаходжання</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Па каардынатах сеткі</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Па спадарожніках GPS</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Па ўсіх крыніцах</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Служба адпраўкі месцазнаходжання пераключана ў рэжым эканоміі батарэі.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Для адпраўкі месцазнаходжання выкарыстоўваюцца толькі дадзеныя GPS.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Служба адпраўкі месцазнаходжання пераключана ў рэжым высокай дакладнасці.</string>
+ <string name="quick_settings_tiles_category_system">Сістэмны пліткі</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Дадаць плітку</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Немагчыма падлучыцца да сеткі сотавай сувязі ў той час як рэжым палёту ўключаны. Адключыце рэжым палёту і паспрабуйце ізноў.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Выбліск уключаны</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Націсніце, каб уключыць</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Няма дадзеных SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Зарад батарэі док-станцыі <xliff:g id="number">%d</xliff:g> адсоткаў.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Паказаць чаргу прайгравання</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
new file mode 100644
index 0000000..bcd4e8d
--- /dev/null
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_mtp_button_title">Падлучыць як медыяпрайгравальнік (MTP)</string>
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="installer_cd_button_title">Усталяваць праграму Android File Transfer для Mac</string>
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_connected">Bluetooth падлучаны.</string>
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_disconnected">Bluetooth адлучаны.</string>
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">Рэжым лёту.</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_off">Ліхтарык выключаны.</string>
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_on">Ліхтарык уключаны.</string>
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_hotspot_label">Кропка доступу</string>
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_flashlight_label">Ліхтарык</string>
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">Рэжым самалёту</string>
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <string name="accessibility_status_bar_hotspot">Кропка доступу</string>
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-bg/cm_arrays.xml b/packages/SystemUI/res/values-bg/cm_arrays.xml
new file mode 100644
index 0000000..5558075
--- /dev/null
+++ b/packages/SystemUI/res/values-bg/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Север</item>
+ <!-- North -->
+ <item>Северо-изток</item>
+ <!-- North east -->
+ <item>Изток</item>
+ <!-- East -->
+ <item>Юго-изток</item>
+ <!-- South east -->
+ <item>Юг</item>
+ <!-- South -->
+ <item>Юго-запад</item>
+ <!-- South west -->
+ <item>Запад</item>
+ <!-- West -->
+ <item>Северо-запад</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-bg/cm_strings.xml b/packages/SystemUI/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..1f2baeb
--- /dev/null
+++ b/packages/SystemUI/res/values-bg/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s </xliff:g> - <xliff:g id="condition">%2$s </xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Плъзнете надясно за %1$s</string>
+ <string name="right_shortcut_hint">Плъзнете наляво за %1$s</string>
+ <string name="lockscreen_message">Докоснете иконата в наляво или надясно, за да присвоите команда за бърз достъп при заключен на екран.</string>
+ <string name="lockscreen_default_target">По подразбиране</string>
+ <string name="select_application">Изберете приложение</string>
+ <string name="lockscreen_choose_action_title">Изберете действие</string>
+ <string name="lockscreen_none_target">Няма</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Изберете действие</string>
+ <string name="navbar_home_button">Начален бутон</string>
+ <string name="navbar_recent_button">Последен бутон</string>
+ <string name="navbar_search_button">Бутон за търсене</string>
+ <string name="navbar_back_button">Бутон \"Назад\"</string>
+ <string name="navbar_empty_button">Празен бутон</string>
+ <string name="navbar_menu_conditional_button">Меню бутон (Автоскриване)</string>
+ <string name="navbar_menu_always_button">Меню бутон (Видим)</string>
+ <string name="navbar_menu_big_button">Меню бутон</string>
+ <string name="accessibility_dpad_left">Курсора наляво</string>
+ <string name="accessibility_dpad_right">Курсора надясно</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Изтриване данни на приложението</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Принудително спиране</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Деинсталиране</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Яркостта на светлината</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Изключени профили.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Профил: <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Профилите са изключени.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Профила е сменен с <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <string name="quick_settings_compass_init">Стартиране на\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Настройки на светлината</string>
+ <string name="led_notification_text">Светлинните индикации са разрешени от настройките</string>
+ <string name="qs_tile_edit_header_instruction">Натиснете и задръжте плочка за да я пренаредите или премахнете</string>
+ <string name="quick_settings_edit_label">Редактиране на плочки</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Не може да изтрие редактираната на плочка</string>
+ <string name="qs_tiles_reset_confirmation">Нулиране бързи настройки на плочки и връщане на конфигурацията по подразбиране?</string>
+ <string name="quick_settings_tile_reset_to_default">Възстанови оформление по подразбиране</string>
+ <string name="quick_settings_title_header">Горен</string>
+ <string name="quick_settings_title_tiles">Плочки</string>
+ <string name="quick_settings_title_show_weather">Показване на времето</string>
+ <string name="quick_settings_title_show_brightness_slider">Показване на плъзгача за яркост</string>
+ <string name="quick_settings_title_enlarge_first_row">Уголемяване на първия ред</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Това допълнение ще остане активено, докато не натиснете и зъдържите на бутона \"Назад\".</string>
+ <string name="quick_settings_custom_tile_detail_title">Персонализирана плочка</string>
+ <string name="quick_settings_remove">Премахни на плочки</string>
+ <string name="quick_settings_network_adb_label">ADB чрез мрежата</string>
+ <string name="quick_settings_compass_label">Компас</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Системни профили</string>
+ <string name="quick_settings_profiles_off">Деактивирани профили</string>
+ <string name="quick_settings_heads_up_label">Изскачащи известия</string>
+ <string name="quick_settings_battery_saver_label">Пестене на батерия</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Пестене на батерията (зареждане)</string>
+ <string name="quick_settings_caffeine_label">Кофеин</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Изключена синхронизация.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Включена синхронизация.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Синхронизацията е изключена.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Синхронизацията е включена.</string>
+ <string name="quick_settings_sync_label">Синхронизация</string>
+ <string name="quick_settings_volume_panel_label">Звуков панел</string>
+ <string name="quick_settings_usb_tether_label">Тетъринг през USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Изключване на дисплея</string>
+ <string name="quick_settings_lockscreen_label">Заключен екран</string>
+ <string name="quick_settings_ambient_display_label">Атмосферен екран</string>
+ <string name="quick_settings_lockscreen_label_enforced">Принудително заключен екран</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Деактивирано от профила</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Изключване на екрана след: <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Изключване на екрана е променен на <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <string name="qs_tile_performance">Режим на батерията</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Режим на батерията: Енергоспестяващ.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Режим на батерията: Балансиран.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Режим на батерията: Производителен.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Режим на батерията: Ефективен.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Режим на батерията: Скоростен.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Преминаване в режим Енергоспестяващ.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Преминаване в режим Балансиран.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Преминаване в режим Производителен.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Преминаване в режим Ефективност.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Преминаване в режим Скоростен.</string>
+ <string name="quick_settings_performance_profile_detail_title">Режим на батерията</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Изключване на заключване на екрана.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Включване на заключване на екран.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Заключване екран е изключено.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Заключване екран е включено.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Атмосферен екран изключен.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Атмосферен екран включен.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Атмосферен екран е изключен.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Атмосферен екран е включен.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Изключи изскачащи известия.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Включи изскачащи известия.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Изскачащите известия са изключени.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Изскачащите известия са включени.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Кофеин изключен.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Кофеин включен.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Режим за пестене на батерията изключен.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Режим за пестене на батерията включен.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Режим за пестене на батерията е изключен.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Режим за пестене на батерията е включен.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Динамични плочки</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Следваща аларма</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME селектор</string>
+ <string name="dynamic_qs_tile_su_label">Администраторски достъп</string>
+ <string name="dynamic_qs_tile_themes_label">Теми</string>
+ <string name="quick_settings_title_advanced_location">Три-посочно местоположение</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Настройка на местоположение: икономичен режим на батерията.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Доклад на местоположение: само по GPS.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Доклад на местоположение: режим на висока точност.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Режим за местоположение</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Пестене на батерия</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Само по GPS</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Висока точност</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Доклад на местоположение променен в икономичен режим на батерията.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Доклад на местоположение променен в режим GPS.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Доклад на местоположение променен в режим с висока точнос.</string>
+ <string name="quick_settings_tiles_category_system">Системни плочки</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Добавяне на плочка</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Свързването към мобилна мрежа не е възможно, докато сте в Самолетен режим. Изключете го и след това опитайте отново.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Фенерчето е включено</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Натиснете, за изключване</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d клиент</item>
+ <item quantity="other">%1$d клиента</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">СИМ картата не е конфигурирана</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Док батерия <xliff:g id="number">%d </xliff:g> процента.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Покажи опашка за изпълнение</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s </xliff:g> <xliff:g id="condition">%2$s </xliff:g></string>
+ <string name="expand_hint">Плъзнете надолу за разширяване</string>
+ <string name="swipe_left_hint">Плъзнете наляво за <xliff:g id="app_name">%1$s </xliff:g></string>
+ <string name="swipe_right_hint">Плъзнете надясно за известия</string>
+</resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/cm_arrays.xml b/packages/SystemUI/res/values-bn-rBD/cm_arrays.xml
new file mode 100644
index 0000000..26a6a84
--- /dev/null
+++ b/packages/SystemUI/res/values-bn-rBD/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>উঃ</item>
+ <!-- North -->
+ <item>উঃপূঃ</item>
+ <!-- North east -->
+ <item>পূঃ</item>
+ <!-- East -->
+ <item>দঃপূঃ</item>
+ <!-- South east -->
+ <item>দঃ</item>
+ <!-- South -->
+ <item>দঃপঃ</item>
+ <!-- South west -->
+ <item>পঃ</item>
+ <!-- West -->
+ <item>উঃপঃ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/cm_strings.xml b/packages/SystemUI/res/values-bn-rBD/cm_strings.xml
new file mode 100644
index 0000000..4fcb247
--- /dev/null
+++ b/packages/SystemUI/res/values-bn-rBD/cm_strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">দায়িত্ব অর্পণ পদক্ষেপ বেছে নিন</string>
+ <string name="navbar_home_button">মূল বোতাম</string>
+ <string name="navbar_recent_button">সাম্প্রতিক বোতাম</string>
+ <string name="navbar_search_button">অনুসন্ধান বোতাম</string>
+ <string name="navbar_back_button">ব্যাক বোতাম</string>
+ <string name="navbar_menu_conditional_button">মেনু (স্বয়ংক্রিয়অদৃশ্য) বোতাম</string>
+ <string name="navbar_menu_always_button">মেনু (সর্বদাদৃশ্যমান) বোতাম</string>
+ <string name="navbar_menu_big_button">মেনু বোতাম</string>
+ <string name="accessibility_dpad_left">কার্সর বামে</string>
+ <string name="accessibility_dpad_right">কার্সর ডানে</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">অ্যাপ ডাটা মুছে ফেলুন</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">জোরপূর্বক বন্ধ</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">আনইনস্টল</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">আরম্ভ করা\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-br-rFR/cm_arrays.xml b/packages/SystemUI/res/values-br-rFR/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-br-rFR/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-br-rFR/cm_strings.xml b/packages/SystemUI/res/values-br-rFR/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-br-rFR/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-br-rFR/strings.xml b/packages/SystemUI/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-br-rFR/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/cm_arrays.xml b/packages/SystemUI/res/values-bs-rBA/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-bs-rBA/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/cm_strings.xml b/packages/SystemUI/res/values-bs-rBA/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-bs-rBA/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-bs-rBA/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-ca/cm_arrays.xml b/packages/SystemUI/res/values-ca/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-ca/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ca/cm_strings.xml b/packages/SystemUI/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..8296219
--- /dev/null
+++ b/packages/SystemUI/res/values-ca/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Llisca a la dreta per %1$s</string>
+ <string name="right_shortcut_hint">Llisca a l\'esquerra per %1$s</string>
+ <string name="lockscreen_message">Toca una icona a l\'esquerra o a la dreta per reassignar una drecera a la pantalla de bloqueig.</string>
+ <string name="lockscreen_default_target">Per defecte</string>
+ <string name="select_application">Selecciona l\'aplicació</string>
+ <string name="lockscreen_choose_action_title">Tria una acció</string>
+ <string name="lockscreen_none_target">Cap</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Tria l\'acció a assignar</string>
+ <string name="navbar_home_button">Botó Inici</string>
+ <string name="navbar_recent_button">Botó Recent</string>
+ <string name="navbar_search_button">Botó Cerca</string>
+ <string name="navbar_back_button">Botó Enrera</string>
+ <string name="navbar_empty_button">Botó buit</string>
+ <string name="navbar_menu_conditional_button">Botó Menú (autoAmaga)</string>
+ <string name="navbar_menu_always_button">Botó Menú (mostraSempre)</string>
+ <string name="navbar_menu_big_button">Botó Menú</string>
+ <string name="accessibility_dpad_left">Cursor esquerra</string>
+ <string name="accessibility_dpad_right">Cursor dreta</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Neteja dades de l\'aplicació</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Força el tancament</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstal·la</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Lluminositat</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfils desactivats.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfils: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">S\'han desactivat els perfils.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil canviat a <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">S\'està inicialitzant\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ajustaments de llum</string>
+ <string name="led_notification_text">Llum LED habilitada per ajustos</string>
+ <string name="qs_tile_edit_header_instruction">Prem i aguanta les cel·les per reordenar-les</string>
+ <string name="quick_settings_edit_label">Edita cel·les</string>
+ <string name="quick_settings_cannot_delete_edit_tile">No s\'ha pogut esborrar la cel·la Edita</string>
+ <string name="qs_tiles_reset_confirmation">Vols restablir les cel·les d\'ajustaments ràpids a la configuració predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Restableix la disposició per defecte</string>
+ <string name="quick_settings_title_header">Capçalera</string>
+ <string name="quick_settings_title_tiles">Cel·les</string>
+ <string name="quick_settings_title_show_weather">Mostra el temps</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostra la barra lliscant de lluminositat</string>
+ <string name="quick_settings_title_enlarge_first_row">Engrandeix la primera fila</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Això ho manté a la vista fins que el desancoris. Toca i aguanta el botó Enrera per desancorar.</string>
+ <string name="quick_settings_custom_tile_detail_title">Cel·la personalitzada</string>
+ <string name="quick_settings_remove">Esborra cel·la</string>
+ <string name="quick_settings_network_adb_label">ADB sobre xarxa</string>
+ <string name="quick_settings_compass_label">Brúixola</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfils de sistema</string>
+ <string name="quick_settings_profiles_off">Perfils desactivats</string>
+ <string name="quick_settings_heads_up_label">Notificacions emergents</string>
+ <string name="quick_settings_battery_saver_label">Estalvi de bateria</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Estalvi de bateria (carregant)</string>
+ <string name="quick_settings_caffeine_label">Cafeïna</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinc desactivada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinc activada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">S\'ha desactivat la sincronització.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">S\'ha activat la sincronització.</string>
+ <string name="quick_settings_sync_label">Sinc</string>
+ <string name="quick_settings_volume_panel_label">Panell de volum</string>
+ <string name="quick_settings_usb_tether_label">Ancoratge USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Temps d\'espera de la pantalla</string>
+ <string name="quick_settings_lockscreen_label">Pantalla de bloqueig</string>
+ <string name="quick_settings_ambient_display_label">Pantalla ambient</string>
+ <string name="quick_settings_lockscreen_label_enforced">Pantalla de bloqueig aplicada</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Deshabilitat pel perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Temps d\'espera de la pantalla: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Temps d\'espera de la pantalla canviat a <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Mode de la bateria</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Mode de la bateria: mode estalvi d\'energia.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Mode de la bateria: mode equilibrat.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Mode de la bateria: mode rendiment.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Mode de la bateria: mode d\'eficiència.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Mode de la bateria: mode ràpid.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Mode de la bateria canviat a mode estalvi d\'energia.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Mode de la bateria canviat a mode equilibrat.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Mode de la bateria canviat a mode rendiment.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Mode de la bateria canviat a mode d\'eficiència.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Mode de la bateria canviat a mode ràpid.</string>
+ <string name="quick_settings_performance_profile_detail_title">Mode de la bateria</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Pantalla de bloqueig desactivada.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Pantalla de bloqueig activada.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">S\'ha desactivat la pantalla de bloqueig.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">S\'ha activat la pantalla de bloqueig.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Pantalla ambient desactivada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Pantalla ambient activada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">S\'ha desactivat la pantalla ambient.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">S\'ha activat la pantalla ambient.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Notificacions emergents apagades.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Notificacions emergents activades.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">S\'han apagat les notificacions emergents.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">S\'han encès les notificacions emergents.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Cafeïna desactivada.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Cafeïna activada.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Estalvi de bateria apagat.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Estalvi de bateria encès.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">S\'ha apagat l\'estalvi de bateria.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">S\'ha encès l\'estalvi de bateria.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Cel·la dinàmica</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Propera alarma</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selector de l\'IME</string>
+ <string name="dynamic_qs_tile_su_label">Accés Superusuari</string>
+ <string name="dynamic_qs_tile_themes_label">Temes</string>
+ <string name="quick_settings_title_advanced_location">Localització per triangulació</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Informes d\'ubicació: Mode d\'estalvi de bateria.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Informes d\'ubicació: Mode només sensors.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Informes d\'ubicació: Mode d\'alta precisió.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Mode d\'ubicació</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Estalvi de bateria</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Només dispositiu</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisió</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Informes d\'ubicació canviats al mode d\'estalvi d\'energia.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informes d\'ubicació canviats al mode només sensors.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Informes d\'ubicació canviats al mode d\'alta precisió.</string>
+ <string name="quick_settings_tiles_category_system">Cel·les del sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Afegeix una cel·la</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">No es pot connectar a xarxes mòbils mentre el mode Avió està habilitat. Deshabilita el mode Avió i intenta-ho de nou.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">La llanterna està encesa</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Pica per apagar-la</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Sense dades SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Acoblament bateria <xliff:g id="number">%d</xliff:g> percent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Mostra la cua de reproducció</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Llisca cap avall per expandir</string>
+ <string name="swipe_left_hint">Llisca cap a l\'esquerra per <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Llisca cap a la dreta per veure les notificacions</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 318084f..b5000b0 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode d\'avió."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"No hi ha cap targeta SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"S\'està canviant la xarxa de l\'operador de telefonia mòbil."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> per cent de bateria."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Configuració del sistema."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificacions."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Esborra la notificació."</string>
diff --git a/packages/SystemUI/res/values-cs/cm_arrays.xml b/packages/SystemUI/res/values-cs/cm_arrays.xml
new file mode 100644
index 0000000..3c17f45
--- /dev/null
+++ b/packages/SystemUI/res/values-cs/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>S</item>
+ <!-- North -->
+ <item>SV</item>
+ <!-- North east -->
+ <item>V</item>
+ <!-- East -->
+ <item>JV</item>
+ <!-- South east -->
+ <item>J</item>
+ <!-- South -->
+ <item>JZ</item>
+ <!-- South west -->
+ <item>Z</item>
+ <!-- West -->
+ <item>SZ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-cs/cm_strings.xml b/packages/SystemUI/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..4a0fc63
--- /dev/null
+++ b/packages/SystemUI/res/values-cs/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Přejeďte doprava pro %1$s</string>
+ <string name="right_shortcut_hint">Přejeďte doleva pro %1$s</string>
+ <string name="lockscreen_message">Dotykem na ikonu na levé nebo pravé straně zamykací obrazovky změňte zástupce.</string>
+ <string name="lockscreen_default_target">Výchozí</string>
+ <string name="select_application">Vybrat aplikaci</string>
+ <string name="lockscreen_choose_action_title">Zvolit akci</string>
+ <string name="lockscreen_none_target">Žádný</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Vybrat akci k přiřazení</string>
+ <string name="navbar_home_button">Tlačítko Domů</string>
+ <string name="navbar_recent_button">Tlačítko Nedávné</string>
+ <string name="navbar_search_button">Tlačítko Hledat</string>
+ <string name="navbar_back_button">Tlačítko Zpět</string>
+ <string name="navbar_empty_button">Prázdné tlačítko</string>
+ <string name="navbar_menu_conditional_button">Tlačítko (skrývat) Nabídka</string>
+ <string name="navbar_menu_always_button">Tlačítko (vždy zobrazit) Nabídka</string>
+ <string name="navbar_menu_big_button">Tlačítko Nabídka</string>
+ <string name="accessibility_dpad_left">Kurzor doleva</string>
+ <string name="accessibility_dpad_right">Kurzor doprava</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Vymazat data aplikací</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Vynutit ukončení</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Odinstalovat</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Jas podsvícení</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profily vyp.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profily vypnuty.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil změněn na <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializace\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Nastavení jasu</string>
+ <string name="led_notification_text">LED světlo povoleno v nastavení</string>
+ <string name="qs_tile_edit_header_instruction">Stiskněte a podržte tlačítko dlaždice pro přeskupení</string>
+ <string name="quick_settings_edit_label">Úprava dlaždic</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Dlaždici „Úprava dlaždic“ nelze odstranit</string>
+ <string name="qs_tiles_reset_confirmation">Obnovit výchozí dlaždice rychlého nastavení?</string>
+ <string name="quick_settings_tile_reset_to_default">Obnovit výchozí rozložení</string>
+ <string name="quick_settings_title_header">Záhlaví</string>
+ <string name="quick_settings_title_tiles">Dlaždice</string>
+ <string name="quick_settings_title_show_weather">Zobrazit počasí</string>
+ <string name="quick_settings_title_show_brightness_slider">Zobrazit posuvník jasu</string>
+ <string name="quick_settings_title_enlarge_first_row">Zvětšit první řádek</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Zůstává zobrazeno, dokud není uvolněn. Dotykem a podržením tlačítka Zpět bude provedeno uvolnění.</string>
+ <string name="quick_settings_custom_tile_detail_title">Vlastní dlaždice</string>
+ <string name="quick_settings_remove">Odebrat dlaždici</string>
+ <string name="quick_settings_network_adb_label">ADB přes síť</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systémové profily</string>
+ <string name="quick_settings_profiles_off">Profily zakázány</string>
+ <string name="quick_settings_heads_up_label">Plovoucí upozornění</string>
+ <string name="quick_settings_battery_saver_label">Spořič baterie</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Úspora baterie (nabíjení)</string>
+ <string name="quick_settings_caffeine_label">Kofein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synch. vyp.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synch. zap.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronizace vypnuta.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronizace zapnuta.</string>
+ <string name="quick_settings_sync_label">Synchronizace</string>
+ <string name="quick_settings_volume_panel_label">Panel hlasitosti</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Zhasínání obrazovky</string>
+ <string name="quick_settings_lockscreen_label">Zamykací obrazovka</string>
+ <string name="quick_settings_ambient_display_label">Ambientní zobrazení</string>
+ <string name="quick_settings_lockscreen_label_enforced">Vynucení zámku obrazovky</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Potlačen profilem</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Limit vypnutí obrazovky: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Limit vypnutí obrazovky změněn na <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Režim baterie</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Režim baterie: úspora energie.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Režim baterie: vyvážený.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Režim baterie: výkonný.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Režim baterie: efektivita</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Režim baterie: výkon</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Režim baterie změněn na úsporu energie.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Režim baterie změněn na vyvážený.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Režim baterie změněn na vysoký výkon.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Režim baterie změněn na efektivní.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Režim baterie změněn na výkonný.</string>
+ <string name="quick_settings_performance_profile_detail_title">Režim baterie</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Zámek displeje vyp.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Zámek displeje zap.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Zámek displeje je vypnutý.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Zámek displeje je zapnutý.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambientní zobrazení vypnuto.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambientní zobrazení zapnuto.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambientní zobrazení vypnuto.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambientní zobrazení zapnuto.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Plovoucí upozorněn vyp.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Plovoucí upozornění zap.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Plovoucí upozorněn vyp.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Plovoucí upozornění zap.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofein vyp.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofein zap.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Spořič baterie vyp.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Spořič baterie zap.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Spořič baterie vypnut.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Spořič baterie zapnut.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamické dlaždice</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Další budík</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Výběr IME</string>
+ <string name="dynamic_qs_tile_su_label">Root přístup</string>
+ <string name="quick_settings_title_advanced_location">Třístavové nastavení určení polohy</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Zjištění polohy: úsporný režim.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Zjištění polohy: pouze GPS.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Zjištění polohy: vysoká přesnost.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Poloha</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Úspora baterie</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Pouze zařízení</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Vysoká přesnost</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Zjištění polohy změněno na úsporu baterie.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Zjištění polohy změněno na pouze GPS.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Zjištění polohy změněno na vysokou přesnost.</string>
+ <string name="quick_settings_tiles_category_system">Systémové dlaždice</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Přidat dlaždici</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Nelze se připojit k mobilním datům při zapnutém režimu „Letadlo“. Vypněte tento režim a zkuste to znovu.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Svítilna zapnuta</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Dotykem vypněte</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="few">%1$d klienti</item>
+ <item quantity="other">%1$d klientů</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Žádná SIM pro data</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Baterie doku: <xliff:g id="number">%d</xliff:g>\u0025.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Zobrazit frontu přehrávání</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Posunutím dolů rozbalit</string>
+ <string name="swipe_left_hint">Posunutím doleva spustit <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Posunutím doprava zobrazit oznámení</string>
+</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 8f347b1..ab5caa5 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -152,9 +152,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim Letadlo."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Není vložena SIM karta"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Probíhá změna sítě operátora."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Stav baterie: <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Systémová nastavení."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Oznámení."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Vymazat oznámení."</string>
diff --git a/packages/SystemUI/res/values-csb-rPL/cm_arrays.xml b/packages/SystemUI/res/values-csb-rPL/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-csb-rPL/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-csb-rPL/cm_strings.xml b/packages/SystemUI/res/values-csb-rPL/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-csb-rPL/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-csb-rPL/strings.xml b/packages/SystemUI/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-csb-rPL/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-cy/cm_arrays.xml b/packages/SystemUI/res/values-cy/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-cy/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-cy/cm_strings.xml b/packages/SystemUI/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-cy/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-cy/strings.xml b/packages/SystemUI/res/values-cy/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-cy/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-da/cm_arrays.xml b/packages/SystemUI/res/values-da/cm_arrays.xml
new file mode 100644
index 0000000..1d89f10
--- /dev/null
+++ b/packages/SystemUI/res/values-da/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NØ</item>
+ <!-- North east -->
+ <item>Ø</item>
+ <!-- East -->
+ <item>SØ</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SV</item>
+ <!-- South west -->
+ <item>V</item>
+ <!-- West -->
+ <item>NV</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-da/cm_strings.xml b/packages/SystemUI/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..4a39c75
--- /dev/null
+++ b/packages/SystemUI/res/values-da/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Stryg til højre for %1$s</string>
+ <string name="right_shortcut_hint">Stryg til venstre for %1$s</string>
+ <string name="lockscreen_message">Tryk på et ikon til venstre eller højre for at tildele en genvej til skærmlåsen.</string>
+ <string name="lockscreen_default_target">Standard</string>
+ <string name="select_application">Vælg applikation</string>
+ <string name="lockscreen_choose_action_title">Vælg handling</string>
+ <string name="lockscreen_none_target">Ingen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Vælg handling at tildele</string>
+ <string name="navbar_home_button">Startknap</string>
+ <string name="navbar_recent_button">Seneste-knap</string>
+ <string name="navbar_search_button">Søgeknap</string>
+ <string name="navbar_back_button">Tilbageknap</string>
+ <string name="navbar_empty_button">Tom knap</string>
+ <string name="navbar_menu_conditional_button">Menuknap (auto-skjul)</string>
+ <string name="navbar_menu_always_button">Menuknap (vis altid)</string>
+ <string name="navbar_menu_big_button">Menuknap</string>
+ <string name="accessibility_dpad_left">Venstremarkør</string>
+ <string name="accessibility_dpad_right">Højremarkør</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Ryd appdata</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Gennemtving stop</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Afinstallér</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Lysstyrke</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiler fra.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiler slået fra.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil ændret til <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initialisere\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Indstillinger for lys</string>
+ <string name="led_notification_text">LED-lys aktiveret via indstillinger</string>
+ <string name="qs_tile_edit_header_instruction">Tryk og hold, for at flytte fliserne</string>
+ <string name="quick_settings_edit_label">Redigér fliser</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Kan ikke slette Redigér-flisen</string>
+ <string name="qs_tiles_reset_confirmation">Nulstil indstillinger for hurtig tiles til standardkonfiguration?</string>
+ <string name="quick_settings_tile_reset_to_default">Nulstil til standardlayout</string>
+ <string name="quick_settings_title_header">Overskrift</string>
+ <string name="quick_settings_title_tiles">Fliser</string>
+ <string name="quick_settings_title_show_weather">Vis vejr</string>
+ <string name="quick_settings_title_show_brightness_slider">Vis skyder til lysstyrke</string>
+ <string name="quick_settings_title_enlarge_first_row">Forstør første række</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Dette fastholder det i visningen indtil du frigører det. Tryk og hold tilbage-knappen nede for at frigøre.</string>
+ <string name="quick_settings_custom_tile_detail_title">Tilpasset flise</string>
+ <string name="quick_settings_remove">Fjern flise</string>
+ <string name="quick_settings_network_adb_label">ADB via netværk</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systemprofiler</string>
+ <string name="quick_settings_profiles_off">Profiler deaktiveret</string>
+ <string name="quick_settings_heads_up_label">Svævende meddelelser</string>
+ <string name="quick_settings_battery_saver_label">Strømsparetilstand</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Strømsparetilstand (oplader)</string>
+ <string name="quick_settings_caffeine_label">Koffein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synkr. fra.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synkr. til.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synkr. er slået fra.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synkr. er slået til.</string>
+ <string name="quick_settings_sync_label">Synkr.</string>
+ <string name="quick_settings_volume_panel_label">Lydstyrkepanel</string>
+ <string name="quick_settings_usb_tether_label">USB-tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Skærm-timeout</string>
+ <string name="quick_settings_lockscreen_label">Låseskærm</string>
+ <string name="quick_settings_ambient_display_label">Inaktivitetsvisning</string>
+ <string name="quick_settings_lockscreen_label_enforced">Tving låseskærm</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Deaktiveret via profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tidsudløb for skærm: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tidsudløb for skærm ændret til <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Batteritilstand</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Batteri tilstand: strømsparetilstand.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Batteri tilstand: balanceret tilstand.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Batteri tilstand: høj ydeevne tilstand.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Batteritilstand: effektivitetstilstand.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Batteritilstand: hurtig tilstand.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Batteritilstand skiftet til strømsparetilstand.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Batteritilstand ændret til balanceret tilstand.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Batteritilstand ændret til tilstanden høj ydeevne.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Batteritilstand ændret til effektivitetstilstand.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Batteritilstand ændret til hurtigt tilstand.</string>
+ <string name="quick_settings_performance_profile_detail_title">Batteritilstand</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Skærmlås fra.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Skærmlås til.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Skærmlås er slået fra.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Skærmlås er slået til.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Inaktivitetsvisning fra.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Inaktivitetsvisning til.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Inaktivitetsvisning er slået fra.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Inaktivitetsvisning er slået til.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Svævende meddelelser fra.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Svævende meddelelser til.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Svævende meddelelser er slået fra.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Svævende meddelelser er slået til.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Koffein fra.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Koffein til.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Strømsparetilstand fra.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Strømsparetilstand til.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Strømsparetilstand er slået fra.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Strømsparetilstand er slået til.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamisk flise</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Næste alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME-vælger</string>
+ <string name="dynamic_qs_tile_su_label">Root-adgang</string>
+ <string name="dynamic_qs_tile_themes_label">Temaer</string>
+ <string name="quick_settings_title_advanced_location">Lokation via triangulering</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Placeringsrapportering: Batterisparetilstand.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Placeringsrapportering: Kun sensorer-tilstand.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Placeringsrapportering: Høj nøjagtighed-tilstand.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Placeringstilstand</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Batteribesparelse</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Kun enhed</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Høj nøjagtighed</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Rapportering af placering ændret til batterisparetilstand.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Lokationsrapportering ændret til kun at bruge sensorer.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Lokationsrapportering ændret til høj nøjagtighed.</string>
+ <string name="quick_settings_tiles_category_system">System-fliser</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Tilføj en flise</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Kan ikke oprette forbindelse til mobile netværk når Flytilstand er aktiveret. Deaktiver Flytilstand og prøv igen.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Lommelygten er tændt</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tryk for at slukke</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="other">%1$d klienter</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ingen data-SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dockingstations batteri <xliff:g id="number">%d</xliff:g> procent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Vis afspillingskø</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Stryg ned for at udvide</string>
+ <string name="swipe_left_hint">Stryg til venstre for at <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Stryg til højre for meddelelser</string>
+</resources>
diff --git a/packages/SystemUI/res/values-de/cm_arrays.xml b/packages/SystemUI/res/values-de/cm_arrays.xml
new file mode 100644
index 0000000..3008606
--- /dev/null
+++ b/packages/SystemUI/res/values-de/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NO</item>
+ <!-- North east -->
+ <item>O</item>
+ <!-- East -->
+ <item>SO</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-de/cm_strings.xml b/packages/SystemUI/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..c588c5c
--- /dev/null
+++ b/packages/SystemUI/res/values-de/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> – <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Nach rechts wischen für %1$s</string>
+ <string name="right_shortcut_hint">Nach links wischen für %1$s</string>
+ <string name="lockscreen_message">Berühren Sie das linke oder rechte Symbol, um eine Sperrbildschirm-Verknüpfung festzulegen.</string>
+ <string name="lockscreen_default_target">Standard</string>
+ <string name="select_application">App wählen</string>
+ <string name="lockscreen_choose_action_title">Aktion auswählen</string>
+ <string name="lockscreen_none_target">Keine</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Funktion zuweisen</string>
+ <string name="navbar_home_button">Home</string>
+ <string name="navbar_recent_button">Anwendungsverlauf-Taste</string>
+ <string name="navbar_search_button">Suche-Taste</string>
+ <string name="navbar_back_button">Zurück-Taste</string>
+ <string name="navbar_empty_button">Nicht belegt</string>
+ <string name="navbar_menu_conditional_button">Menü (automatisch ausblenden)</string>
+ <string name="navbar_menu_always_button">Menü (immer sichtbar)</string>
+ <string name="navbar_menu_big_button">Menüschaltfläche</string>
+ <string name="accessibility_dpad_left">Pfeiltaste links</string>
+ <string name="accessibility_dpad_right">Pfeiltaste rechts</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Anwendungsdaten löschen</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Beenden erzwingen</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Deinstallieren</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Helligkeit</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profile aus.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profile ausgeschaltet.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil auf <xliff:g id="profile" example="Default">%s</xliff:g> geändert.</string>
+ <string name="quick_settings_compass_init">Initialisierung\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">LED-Einstellungen</string>
+ <string name="led_notification_text">Benachrichtigungs-LED durch Einstellungen aktiviert</string>
+ <string name="qs_tile_edit_header_instruction">Drücken und halten Sie die Kacheln, um sie neu anzuordnen.</string>
+ <string name="quick_settings_edit_label">Kacheln bearbeiten</string>
+ <string name="quick_settings_cannot_delete_edit_tile">\"Kacheln bearbeiten\" kann nicht gelöscht werden</string>
+ <string name="qs_tiles_reset_confirmation">Kacheln der Schnelleinstellungen auf Standardkonfiguration zurücksetzen?</string>
+ <string name="quick_settings_tile_reset_to_default">Standardlayout wiederherstellen</string>
+ <string name="quick_settings_title_header">Kopfzeile</string>
+ <string name="quick_settings_title_tiles">Kacheln</string>
+ <string name="quick_settings_title_show_weather">Wetter anzeigen</string>
+ <string name="quick_settings_title_show_brightness_slider">Helligkeitsregler anzeigen</string>
+ <string name="quick_settings_title_enlarge_first_row">Erste Zeile vergrößern</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Dies fixiert die aktuelle Ansicht. Zum Lösen die Zurück-Taste drücken und halten.</string>
+ <string name="quick_settings_custom_tile_detail_title">Benutzerdefinierte Kachel</string>
+ <string name="quick_settings_remove">Kachel entfernen</string>
+ <string name="quick_settings_network_adb_label">ADB über Netzwerk</string>
+ <string name="quick_settings_compass_label">Kompass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systemprofile</string>
+ <string name="quick_settings_profiles_off">Profile deaktiviert</string>
+ <string name="quick_settings_heads_up_label">Pop-up</string>
+ <string name="quick_settings_battery_saver_label">Akku-Sparmodus</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Akku-Sparmodus (Aufladen)</string>
+ <string name="quick_settings_caffeine_label">Koffein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synchronisierung aus.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synchronisierung an.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronisierung ist ausgeschaltet.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronisierung ist eingeschaltet.</string>
+ <string name="quick_settings_sync_label">Synchronisieren</string>
+ <string name="quick_settings_volume_panel_label">Lautstärke</string>
+ <string name="quick_settings_usb_tether_label">USB-Tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Bildschirm-Timeout</string>
+ <string name="quick_settings_lockscreen_label">Bildschirmsperre</string>
+ <string name="quick_settings_ambient_display_label">Inaktivitätsdisplay</string>
+ <string name="quick_settings_lockscreen_label_enforced">Bildschirmsperre aktiviert</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Durch Profil gesperrt</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ruhezustand nach <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Zeit bis zum Ruhezustand in <xliff:g id="timeout" example="30 seconds">%s</xliff:g> geändert.</string>
+ <string name="qs_tile_performance">Akkumodus</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Akkumodus: Energie sparen.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Akkumodus: Ausgeglichen.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Akkumodus: Mehr Leistung.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Akkumodus: Effizient.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Akkumodus: Schnell.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Akkumodus auf \"Energie sparen\" geändert.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Akkumodus auf \"Ausgeglichen\" geändert.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Akkumodus auf \"Mehr Leistung\" geändert.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Akkumodus auf \"Effizient\" geändert.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Akkumodus auf \"Schnell\" geändert.</string>
+ <string name="quick_settings_performance_profile_detail_title">Akkumodus</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Bildschirmsperre aus.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Bildschirmsperre an.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Bildschirmsperre ausgeschaltet.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Bildschirmsperre eingeschaltet.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Inaktivitätsdisplay aus.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Inaktivitätsdisplay an.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Inaktivitätsdisplay ausgeschaltet.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Inaktivitätsdisplay eingeschaltet.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Pop-up aus.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Pop-up an.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Pop-up ausgeschaltet.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Pop-up eingeschaltet.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Koffein aus.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Koffein an.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Akku-Sparmodus aus.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Akku-Sparmodus an.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Akku-Sparmodus ausgeschaltet.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Akku-Sparmodus eingeschaltet.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamische Kachel</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Nächster Alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Eingabemethode</string>
+ <string name="dynamic_qs_tile_su_label">Root-Zugriff</string>
+ <string name="dynamic_qs_tile_themes_label">Designs</string>
+ <string name="quick_settings_title_advanced_location">Standort mit drei Zuständen</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Standortdienste: Energiesparmodus.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Standortdienste: Nur Gerät.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Standortdienste: Hohe Genauigkeit.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Standortmodus</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Akku-Sparmodus</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Nur Gerät</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Hohe Genauigkeit</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Standortmodus auf \"Energiesparmodus\" geändert.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Standortmodus auf \"Nur Gerät\" geändert.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Standortmodus auf \"Hohe Genauigkeit\" geändert.</string>
+ <string name="quick_settings_tiles_category_system">System-Kacheln</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Kachel hinzufügen</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Im Flugmodus ist keine Verbindung zum Mobilfunknetz möglich. Deaktivieren Sie den Flugmodus und versuchen Sie es erneut.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Taschenlampe ist eingeschaltet</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Zum Ausschalten tippen</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d Client</item>
+ <item quantity="other">%1$d Clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Keine Daten-SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dock-Akku <xliff:g id="number">%d</xliff:g> Prozent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Warteschlange anzeigen</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> – <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Zum Erweitern nach unten wischen</string>
+ <string name="swipe_left_hint">Für <xliff:g id="app_name">%1$s</xliff:g> nach links wischen</string>
+ <string name="swipe_right_hint">Für Benachrichtigungen nach rechts wischen</string>
+</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index c70c175..82d067e 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -23,7 +23,7 @@
<string name="status_bar_clear_all_button" msgid="7774721344716731603">"Löschen"</string>
<string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Aus Liste entfernen"</string>
<string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"App-Info"</string>
- <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"Hier sehen Sie Ihre zuletzt geöffneten Apps."</string>
+ <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"Hier siehst du deine zuletzt geöffneten Apps."</string>
<string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Kürzlich geöffnete Apps schließen"</string>
<plurals name="status_bar_accessibility_recent_apps" formatted="false" msgid="9138535907802238759">
<item quantity="other">%d Bildschirme in der Übersicht</item>
@@ -35,9 +35,9 @@
<string name="battery_low_title" msgid="6456385927409742437">"Akku ist schwach"</string>
<string name="battery_low_percent_format" msgid="2900940511201380775">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend"</string>
<string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend. Der Energiesparmodus ist aktiviert."</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB-Aufladung wird nicht unterstützt.\nVerwenden Sie das mitgelieferte Aufladegerät."</string>
+ <string name="invalid_charger" msgid="4549105996740522523">"USB-Aufladung wird nicht unterstützt.\nVerwende das mitgelieferte Aufladegerät."</string>
<string name="invalid_charger_title" msgid="3515740382572798460">"Laden per USB wird nicht unterstützt."</string>
- <string name="invalid_charger_text" msgid="5474997287953892710">"Verwenden Sie nur das im Lieferumfang enthaltene Ladegerät."</string>
+ <string name="invalid_charger_text" msgid="5474997287953892710">"Verwende nur das im Lieferumfang enthaltene Ladegerät."</string>
<string name="battery_low_why" msgid="4553600287639198111">"Einstellungen"</string>
<string name="battery_saver_confirmation_title" msgid="5299585433050361634">"Energiesparmodus aktivieren?"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktivieren"</string>
@@ -64,7 +64,7 @@
<string name="usb_debugging_message" msgid="2220143855912376496">"Der Fingerabdruck des RSA-Schlüssels für diesen Computer lautet: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="303335496705863070">"Von diesem Computer immer zulassen"</string>
<string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"USB-Debugging nicht zulässig"</string>
- <string name="usb_debugging_secondary_user_message" msgid="6011931347142270156">"Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Um diese Funktion zu aktivieren, wechseln Sie zum primären Nutzer \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
+ <string name="usb_debugging_secondary_user_message" msgid="6011931347142270156">"Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Um diese Funktion zu aktivieren, wechsle zum primären Nutzer \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom auf Bildschirmgröße"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Auf Bildschirmgröße anpassen"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Screenshot wird gespeichert..."</string>
@@ -73,7 +73,7 @@
<string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot aufgenommen"</string>
<string name="screenshot_saved_text" msgid="1152839647677558815">"Zum Ansehen berühren"</string>
<string name="screenshot_failed_title" msgid="705781116746922771">"Screenshot konnte nicht aufgenommen werden."</string>
- <string name="screenshot_failed_text" msgid="1260203058661337274">"Screenshot nicht möglich. Entweder zu wenig Speicher oder die App/Ihr Unternehmen lässt dies nicht zu."</string>
+ <string name="screenshot_failed_text" msgid="1260203058661337274">"Screenshot nicht möglich. Entweder zu wenig Speicher oder die App/dein Unternehmen lässt dies nicht zu."</string>
<string name="usb_preference_title" msgid="6551050377388882787">"USB-Dateiübertragungsoptionen"</string>
<string name="use_mtp_button_title" msgid="4333504413563023626">"Als Medienplayer (MTP) bereitstellen"</string>
<string name="use_ptp_button_title" msgid="7517127540301625751">"Als Kamera (PTP) bereitstellen"</string>
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugmodus"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Keine SIM-Karte"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Netzwerk des Mobilfunkanbieters wird gewechselt"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Akku bei <xliff:g id="NUMBER">%d</xliff:g> Prozent."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Systemeinstellungen"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Benachrichtigungen"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Benachrichtigung löschen"</string>
@@ -219,7 +217,7 @@
<string name="data_usage_disabled_dialog_4g_title" msgid="1601769736881078016">"4G-Daten pausiert"</string>
<string name="data_usage_disabled_dialog_mobile_title" msgid="4651001290947318931">"Mobilfunkdaten pausiert"</string>
<string name="data_usage_disabled_dialog_title" msgid="3932437232199671967">"Daten pausiert"</string>
- <string name="data_usage_disabled_dialog" msgid="8453242888903772524">"Da Ihr festgelegtes Datenlimit erreicht wurde, hat das Gerät die Datennutzung für den Rest dieses Zeitraums pausiert.\n\nWenn Sie diese fortsetzen, können möglicherweise Kosten bei Ihrem Mobilfunkanbieter entstehen."</string>
+ <string name="data_usage_disabled_dialog" msgid="8453242888903772524">"Da dein festgelegtes Datenlimit erreicht wurde, hat das Gerät die Datennutzung für den Rest dieses Zeitraums pausiert.\n\nWenn du die Nutzung fortsetzt, entstehen möglicherweise Kosten bei deinem Mobilfunkanbieter."</string>
<string name="data_usage_disabled_dialog_enable" msgid="1412395410306390593">"Fortsetzen"</string>
<string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Keine Internetverbindung"</string>
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN verbunden"</string>
@@ -291,7 +289,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> verwendet"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Datenlimit"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Warnung für <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
- <string name="recents_empty_message" msgid="8682129509540827999">"Hier sehen Sie Ihre zuletzt geöffneten Apps."</string>
+ <string name="recents_empty_message" msgid="8682129509540827999">"Hier siehst du deine zuletzt geöffneten Apps."</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"App-Info"</string>
<string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"Bildschirmfixierung"</string>
<string name="recents_search_bar_label" msgid="8074997400187836677">"Suche"</string>
@@ -308,9 +306,9 @@
<string name="description_target_search" msgid="3091587249776033139">"Suche"</string>
<string name="description_direction_up" msgid="7169032478259485180">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach oben schieben"</string>
<string name="description_direction_left" msgid="7207478719805562165">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach links schieben"</string>
- <string name="zen_priority_introduction" msgid="3070506961866919502">"Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von Ihnen festgelegten Personen."</string>
+ <string name="zen_priority_introduction" msgid="3070506961866919502">"Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von dir festgelegten Personen."</string>
<string name="zen_priority_customize_button" msgid="7948043278226955063">"Anpassen"</string>
- <string name="zen_silence_introduction_voice" msgid="2284540992298200729">"Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele. Anrufe können Sie jedoch weiterhin tätigen."</string>
+ <string name="zen_silence_introduction_voice" msgid="2284540992298200729">"Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele. Anrufe kannst du jedoch weiterhin tätigen."</string>
<string name="zen_silence_introduction" msgid="3137882381093271568">"Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele."</string>
<string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
<string name="speed_bump_explanation" msgid="1288875699658819755">"Weniger dringende Benachrichtigungen unten"</string>
@@ -342,19 +340,19 @@
<string name="guest_exit_guest_dialog_message" msgid="4155503224769676625">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
<string name="guest_exit_guest_dialog_remove" msgid="7402231963862520531">"Entfernen"</string>
<string name="guest_wipe_session_title" msgid="6419439912885956132">"Willkommen zurück im Gastmodus"</string>
- <string name="guest_wipe_session_message" msgid="8476238178270112811">"Möchten Sie Ihre Sitzung fortsetzen?"</string>
+ <string name="guest_wipe_session_message" msgid="8476238178270112811">"Möchtest du deine Sitzung fortsetzen?"</string>
<string name="guest_wipe_session_wipe" msgid="5065558566939858884">"Von vorn"</string>
<string name="guest_wipe_session_dontwipe" msgid="1401113462524894716">"Ja, weiter"</string>
<string name="guest_notification_title" msgid="1585278533840603063">"Gastnutzer"</string>
<string name="guest_notification_text" msgid="335747957734796689">"Zum Löschen von Apps und Daten Gastnutzer entfernen"</string>
<string name="guest_notification_remove_action" msgid="8820670703892101990">"Gast entfernen"</string>
<string name="user_add_user_title" msgid="4553596395824132638">"Neuen Nutzer hinzufügen?"</string>
- <string name="user_add_user_message_short" msgid="2161624834066214559">"Wenn Sie einen neuen Nutzer hinzufügen, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
+ <string name="user_add_user_message_short" msgid="2161624834066214559">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
<string name="battery_saver_notification_title" msgid="237918726750955859">"Energiesparmodus ist aktiviert"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduzierung der Leistung und Hintergrunddaten"</string>
<string name="battery_saver_notification_action_text" msgid="109158658238110382">"Energiesparmodus deaktivieren"</string>
<string name="notification_hidden_text" msgid="1135169301897151909">"Inhalte ausgeblendet"</string>
- <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> nimmt alle auf Ihrem Bildschirm angezeigten Aktivitäten auf."</string>
+ <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> nimmt alle auf deinem Bildschirm angezeigten Aktivitäten auf."</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Nicht erneut anzeigen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Alle löschen"</string>
<string name="media_projection_action_text" msgid="8470872969457985954">"Jetzt starten"</string>
@@ -367,17 +365,17 @@
<string name="monitoring_title" msgid="169206259253048106">"Netzwerküberwachung"</string>
<string name="disable_vpn" msgid="4435534311510272506">"VPN deaktivieren"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"VPN-Verbindung trennen"</string>
- <string name="monitoring_description_device_owned" msgid="5780988291898461883">"Ihr Gerät wird verwaltet von <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nIhr Administrator kann die zu Ihrem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen Ihres Geräts. Weitere Informationen erhalten Sie bei Ihrem Administrator."</string>
- <string name="monitoring_description_vpn" msgid="4445150119515393526">"Sie haben einer App gestattet, eine VPN-Verbindung einzurichten.\n\nDiese App kann Ihr Gerät und Ihre Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites."</string>
- <string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"Ihr Gerät wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nIhr Administrator kann die zu Ihrem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen Ihres Geräts.\n\nSie sind zudem mit einem VPN verbunden, das Ihre persönliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhalten Sie bei Ihrem Administrator."</string>
- <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"Ihr Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nIhr Administrator kann Ihre Netzwerkaktivität überwachen, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhalten Sie bei Ihrem Administrator.\n\nSie sind zudem mit einem VPN verbunden, das Ihre persönliche Netzwerkaktivität überwachen kann."</string>
+ <string name="monitoring_description_device_owned" msgid="5780988291898461883">"Dein Gerät wird verwaltet von <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nDein Administrator kann die zu deinem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen deines Geräts. Weitere Informationen erhältst du bei deinem Administrator."</string>
+ <string name="monitoring_description_vpn" msgid="4445150119515393526">"Du hast einer App gestattet, eine VPN-Verbindung einzurichten.\n\nDiese App kann dein Gerät und deine Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites."</string>
+ <string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"Dein Gerät wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nDein Administrator kann die zu deinem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen deines Geräts.\n\nDu bist außerdem mit einem VPN verbunden, das deine persönliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du bei deinem Administrator."</string>
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nDein Administrator kann deine Netzwerkaktivität überwachen, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du bei deinem Administrator.\n\nDu bist außerdem mit einem VPN verbunden, das deine persönliche Netzwerkaktivität überwachen kann."</string>
<string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string>
- <string name="monitoring_description_app" msgid="6259179342284742878">"Sie sind mit der App <xliff:g id="APPLICATION">%1$s</xliff:g> verbunden, die Ihre Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites."</string>
- <string name="monitoring_description_app_personal" msgid="484599052118316268">"Sie sind mit der App <xliff:g id="APPLICATION">%1$s</xliff:g> verbunden, die Ihre persönliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites."</string>
- <string name="monitoring_description_app_work" msgid="1754325860918060897">"Ihr Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit der App <xliff:g id="APPLICATION">%2$s</xliff:g> verbunden, die Ihre geschäftlichen Netzwerkaktivitäten überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhalten Sie von Ihrem Administrator."</string>
- <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"Ihr Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit der App <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> verbunden, die Ihre geschäftliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nSie sind außerdem mit der App <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> verbunden, die Ihre persönliche Netzwerkaktivität überwachen kann."</string>
- <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"Ihr Gerät wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nIhr Administrator kann die zu Ihrem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen Ihres Geräts.\n\nSie sind mit der App <xliff:g id="APPLICATION">%2$s</xliff:g> verbunden, die Ihre persönlichen Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhalten Sie bei Ihrem Administrator."</string>
- <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Das Gerät bleibt gesperrt, bis Sie es manuell entsperren."</string>
+ <string name="monitoring_description_app" msgid="6259179342284742878">"Du bist mit der App <xliff:g id="APPLICATION">%1$s</xliff:g> verbunden, die deine Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites."</string>
+ <string name="monitoring_description_app_personal" msgid="484599052118316268">"Du bist mit der App <xliff:g id="APPLICATION">%1$s</xliff:g> verbunden, die deine persönliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites."</string>
+ <string name="monitoring_description_app_work" msgid="1754325860918060897">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit der App <xliff:g id="APPLICATION">%2$s</xliff:g> verbunden, die deine geschäftlichen Netzwerkaktivitäten überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du von deinem Administrator."</string>
+ <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit der App <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> verbunden, die deine geschäftliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nDu bist außerdem mit der App <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> verbunden, die deine persönliche Netzwerkaktivität überwachen kann."</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"Dein Gerät wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet.\n\nDein Administrator kann die zu deinem Gerät gehörigen Einstellungen, Unternehmenszugriffsrechte, Apps und Daten überwachen und verwalten, einschließlich der Standortinformationen deines Geräts.\n\nDu bist außerdem mit der App <xliff:g id="APPLICATION">%2$s</xliff:g> verbunden, die deine persönliche Netzwerkaktivität überwachen kann, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du bei deinem Administrator."</string>
+ <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Das Gerät bleibt gesperrt, bis du es manuell entsperrst."</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"Benachrichtigungen schneller erhalten"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"Vor dem Entsperren anzeigen"</string>
<string name="hidden_notifications_cancel" msgid="3690709735122344913">"Nein danke"</string>
@@ -389,19 +387,19 @@
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Maximieren"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minimieren"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Bildschirm ist fixiert"</string>
- <string name="screen_pinning_description" msgid="1346522416878235405">"Der Bildschirm wird solange angezeigt, bis Sie die Fixierung aufheben. Berühren und halten Sie \"Zurück\" und \"Übersicht\" gleichzeitig, um die Fixierung aufzuheben."</string>
- <string name="screen_pinning_description_accessible" msgid="8518446209564202557">"Der Bildschirm wird solange angezeigt, bis Sie die Fixierung aufheben. Berühren und halten Sie \"Übersicht\", wenn Sie die Fixierung aufheben möchten."</string>
+ <string name="screen_pinning_description" msgid="1346522416878235405">"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre und halte \"Zurück\" und \"Übersicht\" gleichzeitig, um die Fixierung aufzuheben."</string>
+ <string name="screen_pinning_description_accessible" msgid="8518446209564202557">"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre und halte \"Übersicht\", wenn du die Fixierung aufheben möchtest."</string>
<string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
<string name="screen_pinning_negative" msgid="3741602308343880268">"Nein danke"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ausblenden?"</string>
- <string name="quick_settings_reset_confirmation_message" msgid="2235970126803317374">"Sie wird wieder eingeblendet, wenn Sie sie in den Einstellungen erneut aktivieren."</string>
+ <string name="quick_settings_reset_confirmation_message" msgid="2235970126803317374">"Sie wird wieder eingeblendet, wenn du sie in den Einstellungen erneut aktivierst."</string>
<string name="quick_settings_reset_confirmation_button" msgid="2660339101868367515">"Ausblenden"</string>
<string name="volumeui_prompt_message" msgid="918680947433389110">"<xliff:g id="APP_NAME">%1$s</xliff:g> will die Lautstärke regeln."</string>
<string name="volumeui_prompt_allow" msgid="7954396902482228786">"Zulassen"</string>
<string name="volumeui_prompt_deny" msgid="5720663643411696731">"Ablehnen"</string>
<string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> regelt die Lautstärke."</string>
<string name="volumeui_notification_text" msgid="1826889705095768656">"Zum Wiederherstellen des Originals hier tippen"</string>
- <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Sie verwenden Ihr Arbeitsprofil."</string>
+ <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du verwendest dein Arbeitsprofil."</string>
<string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"Eingebettete Akku-Prozentzahl anzeigen"</string>
<string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prozentzahl für Akkustand in Statusleistensymbol anzeigen, wenn das Gerät nicht geladen wird"</string>
@@ -416,7 +414,7 @@
<string name="status_bar_airplane" msgid="7057575501472249002">"Flugmodus"</string>
<string name="add_tile" msgid="2995389510240786221">"Kachel hinzufügen"</string>
<string name="broadcast_tile" msgid="3894036511763289383">"Broadcast-Kachel"</string>
- <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Sie erhalten einen lautlosen Weckruf <xliff:g id="WHEN">%1$s</xliff:g>, wenn Sie ihn nicht vorher ausschalten."</string>
+ <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Du erhältst einen lautlosen Weckruf <xliff:g id="WHEN">%1$s</xliff:g>, wenn du ihn nicht vorher ausschaltest."</string>
<string name="zen_alarm_warning" msgid="444533119582244293">"Lautloser Weckruf <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template" msgid="3980063409350522735">"um <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="4242179982586714810">"am <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -424,7 +422,7 @@
<string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Hotspot"</string>
<string name="accessibility_managed_profile" msgid="6613641363112584120">"Arbeitsprofil"</string>
<string name="tuner_warning_title" msgid="7094689930793031682">"Für einige ein Vergnügen, aber nicht für alle"</string>
- <string name="tuner_warning" msgid="8730648121973575701">"Mit System UI Tuner erhalten Sie zusätzliche Möglichkeiten, die Android-Benutzeroberfläche anzupassen. Achtung: Diese Testfunktionen können sich ändern, abstürzen oder in zukünftigen Versionen verschwinden."</string>
+ <string name="tuner_warning" msgid="8730648121973575701">"Mit System UI Tuner erhältst du zusätzliche Möglichkeiten, die Android-Benutzeroberfläche anzupassen. Achtung: Diese Testfunktionen können sich ändern, abstürzen oder in zukünftigen Versionen verschwinden."</string>
<string name="tuner_persistent_warning" msgid="8597333795565621795">"Achtung: Diese Testfunktionen können sich ändern, abstürzen oder in zukünftigen Versionen verschwinden."</string>
<string name="got_it" msgid="2239653834387972602">"OK"</string>
<string name="tuner_toast" msgid="603429811084428439">"Herzlichen Glückwunsch! System UI Tuner wurde \"Einstellungen\" hinzugefügt."</string>
diff --git a/packages/SystemUI/res/values-el/cm_arrays.xml b/packages/SystemUI/res/values-el/cm_arrays.xml
new file mode 100644
index 0000000..82272d5
--- /dev/null
+++ b/packages/SystemUI/res/values-el/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Β</item>
+ <!-- North -->
+ <item>ΒΑ</item>
+ <!-- North east -->
+ <item>Α</item>
+ <!-- East -->
+ <item>ΝΑ</item>
+ <!-- South east -->
+ <item>Ν</item>
+ <!-- South -->
+ <item>ΝΔ</item>
+ <!-- South west -->
+ <item>Δ</item>
+ <!-- West -->
+ <item>ΒΔ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-el/cm_strings.xml b/packages/SystemUI/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..49fa515
--- /dev/null
+++ b/packages/SystemUI/res/values-el/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Σύρετε προς τα δεξιά για %1$s</string>
+ <string name="right_shortcut_hint">Σύρετε προς τα αριστερά για %1$s</string>
+ <string name="lockscreen_message">Πιέστε ένα εικονίδιο στα αριστερά ή δεξιά για να αντιστοιχίσετε εκ νέου μια συντόμευση οθόνης κλειδώματος.</string>
+ <string name="lockscreen_default_target">Προεπιλογή</string>
+ <string name="select_application">Επιλέξτε εφαρμογή</string>
+ <string name="lockscreen_choose_action_title">Επιλέξτε ενέργεια</string>
+ <string name="lockscreen_none_target">Καμία</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Επιλέξτε ενέργεια για εκχώρηση</string>
+ <string name="navbar_home_button">Πλήκτρο αρχικής οθόνης</string>
+ <string name="navbar_recent_button">Πλήκτρο πρόσφατων εφαρμογών</string>
+ <string name="navbar_search_button">Πλήκτρο αναζήτησης</string>
+ <string name="navbar_back_button">Πλήκτρο πίσω</string>
+ <string name="navbar_empty_button">Άδειο πλήκτρο</string>
+ <string name="navbar_menu_conditional_button">Πλήκτρο μενού (αυτόματη απόκρυψη)</string>
+ <string name="navbar_menu_always_button">Πλήκτρο μενού (εμφάνιση πάντα)</string>
+ <string name="navbar_menu_big_button">Πλήκτρο μενού</string>
+ <string name="accessibility_dpad_left">Κέρσορας αριστερά</string>
+ <string name="accessibility_dpad_right">Κέρσορας δεξιά</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Εκκαθάριση δεδομένων</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Αναγκαστική διακοπή</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Απεγκατάσταση</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Φωτεινότητα LED</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Ανενεργά προφίλ.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Προφίλ: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Τα προφίλ απενεργοποιήθηκαν.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Το προφίλ άλλαξε σε <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Προετοιμασία\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ρυθμίσεις LED</string>
+ <string name="led_notification_text">Το LED ενεργοποιήθηκε από τις ρυθμίσεις</string>
+ <string name="qs_tile_edit_header_instruction">Πιέστε παρατεταμένα στα πλακίδια για αναδιάταξη</string>
+ <string name="quick_settings_edit_label">Επεξεργασία πλακιδίων</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Δεν είναι δυνατή η διαγραφή του πλακιδίου επεξεργασίας</string>
+ <string name="qs_tiles_reset_confirmation">Επαναφορά των πλακιδίων γρήγορων ρυθμίσεων στις προεπιλογές;</string>
+ <string name="quick_settings_tile_reset_to_default">Επαναφορά στην προεπιλεγμένη διάταξη</string>
+ <string name="quick_settings_title_header">Επικεφαλίδα</string>
+ <string name="quick_settings_title_tiles">Πλακίδια</string>
+ <string name="quick_settings_title_show_weather">Εμφάνιση καιρού</string>
+ <string name="quick_settings_title_show_brightness_slider">Εμφάνιση ρυθμιστικού φωτεινότητας</string>
+ <string name="quick_settings_title_enlarge_first_row">Μεγέθυνση της πρώτης γραμμής</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Αυτό κλειδώνει την συγκεκριμένη οθόνη μέχρι να την ξεκαρφιτσώσετε. Αγγίξτε και κρατήστε πατημένο το πλήκτρο Πίσω για ξεκαρφίτσωμα.</string>
+ <string name="quick_settings_custom_tile_detail_title">Προσαρμοσμένο πλακίδιο</string>
+ <string name="quick_settings_remove">Αφαίρεση πλακιδίου</string>
+ <string name="quick_settings_network_adb_label">ADB μέσω δικτύου</string>
+ <string name="quick_settings_compass_label">Πυξίδα</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Προφίλ συστήματος</string>
+ <string name="quick_settings_profiles_off">Προφίλ απενεργοποιημένα</string>
+ <string name="quick_settings_heads_up_label">Αναδυόμενες ειδοποιήσεις</string>
+ <string name="quick_settings_battery_saver_label">Εξοικονόμηση μπαταρίας</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Εξοικονόμηση μπαταρίας (φόρτιση)</string>
+ <string name="quick_settings_caffeine_label">Καφεΐνη</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Ανενεργός συγχρονισμός.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Ενεργός συγχρονισμός.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Ο συγχρονισμός απενεργοποιήθηκε.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Ο συγχρονισμός ενεργοποιήθηκε.</string>
+ <string name="quick_settings_sync_label">Συγχρονισμός</string>
+ <string name="quick_settings_volume_panel_label">Πάνελ έντασης</string>
+ <string name="quick_settings_usb_tether_label">Πρόσδεση USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Χρονικό όριο οθόνης</string>
+ <string name="quick_settings_lockscreen_label">Οθόνη κλειδώματος</string>
+ <string name="quick_settings_ambient_display_label">Οθόνη ambient</string>
+ <string name="quick_settings_lockscreen_label_enforced">Επιβαλλόμενη οθόνη κλειδώματος</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Απενεργοποιήθηκε από προφίλ</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Χρονικό όριο οθόνης: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Το χρονικό όριο οθόνης άλλαξε σε: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Λειτουργία μπαταρίας</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Λειτουργία μπαταρίας: εξοικονόμηση ενέργειας.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Λειτουργία μπαταρίας: ισορροπημένο.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Λειτουργία μπαταρίας: επιδόσεις.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Λειτουργία μπαταρίας: αποδοτικό.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Λειτουργία μπαταρίας: γρήγορο.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Η λειτουργία μπαταρίας άλλαξε σε εξοικονόμηση ενέργειας.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Η λειτουργία μπαταρίας άλλαξε σε ισορροπημένο.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Η λειτουργία μπαταρίας άλλαξε σε επιδόσεις.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Η λειτουργία μπαταρίας άλλαξε σε αποδοτικό.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Η λειτουργία μπαταρίας άλλαξε σε γρήγορο.</string>
+ <string name="quick_settings_performance_profile_detail_title">Λειτουργία μπαταρίας</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Ανενεργή οθόνη κλειδώματος.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Ενεργή οθόνη κλειδώματος.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Η οθόνη κλειδώματος απενεργοποιήθηκε.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Η οθόνη κλειδώματος ενεργοποιήθηκε.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ανενεργή οθόνη ambient.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ενεργή οθόνη ambient.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Η οθόνη ambient απενεργοποιήθηκε.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Η οθόνη ambient ενεργοποιήθηκε.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Ανενεργές αναδυόμενες ειδοποιήσεις.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Ενεργές αναδυόμενες ειδοποιήσεις.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Οι αναδυόμενες ειδοποιήσεις απενεργοποιήθηκαν.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Οι αναδυόμενες ειδοποιήσεις ενεργοποιήθηκαν.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Καφεΐνη ανενεργή.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Καφεΐνη ενεργή.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Ανενεργή εξοικονόμηση μπαταρίας.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Ενεργή εξοικονόμηση μπαταρίας.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Η εξοικονόμηση μπαταρίας απενεργοποιήθηκε.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Η εξοικονόμηση μπαταρίας ενεργοποιήθηκε.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Δυναμικό πλακίδιο</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Επόμενο ξυπνητήρι</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Επιλογέας μεθόδου εισόδου</string>
+ <string name="dynamic_qs_tile_su_label">Πρόσβαση root</string>
+ <string name="dynamic_qs_tile_themes_label">Θέματα</string>
+ <string name="quick_settings_title_advanced_location">Προηγμένη ρύθμιση τοποθεσίας</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Αναφορά τοποθεσίας: λειτουργία εξοικονόμησης μπαταρίας.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Αναφορά τοποθεσίας: λειτουργία μόνο αισθητήρων.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Αναφορά τοποθεσίας: λειτουργία υψηλής ακρίβειας.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Λειτουργία τοποθεσίας</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Εξοικονόμηση μπαταρίας</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Μόνο συσκευή</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Υψηλή ακρίβεια</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Η αναφορά τοποθεσίας άλλαξε σε λειτουργία εξοικονόμησης μπαταρίας.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Η αναφορά τοποθεσίας άλλαξε σε λειτουργία μόνο αισθητήρων.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Η αναφορά τοποθεσίας άλλαξε σε λειτουργία υψηλής ακρίβειας.</string>
+ <string name="quick_settings_tiles_category_system">Πλακίδια συστήματος</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Προσθήκη πλακιδίου</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Δεν είναι δυνατή η σύνδεση με δίκτυα κινητής τηλεφωνίας ενώ είναι ενεργοποιημένη η λειτουργία πτήσης. Απενεργοποιήστε τη λειτουργία πτήσης και προσπαθήστε ξανά.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Ο φακός είναι ενεργοποιημένος</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Πιέστε για απενεργοποίηση</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d συνδεδεμένος</item>
+ <item quantity="other">%1$d συνδεδεμένοι</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Δεν υπάρχει SIM δεδομένων</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Μπαταρία βάσης σύνδεσης <xliff:g id="number">%d</xliff:g> τοις εκατό.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Εμφάνιση ουράς αναπαραγωγής</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Σύρετε προς τα κάτω για ανάπτυξη</string>
+ <string name="swipe_left_hint">Σύρετε προς τα αριστερά για <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Σύρετε προς τα δεξιά για ειδοποιήσεις</string>
+</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 4b68bdb..51bcb81 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Λειτουργία πτήσης."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Δεν υπάρχει κάρτα SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Αλλαγή δικτύου εταιρείας κινητής τηλεφωνίας."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Μπαταρία <xliff:g id="NUMBER">%d</xliff:g> τοις εκατό."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Ρυθμίσεις συστήματος."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Ειδοποιήσεις."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Εκκαθάριση ειδοποίησης."</string>
diff --git a/packages/SystemUI/res/values-en-rAU/cm_arrays.xml b/packages/SystemUI/res/values-en-rAU/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rAU/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/cm_strings.xml b/packages/SystemUI/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..5607867
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Swipe right for %1$s</string>
+ <string name="right_shortcut_hint">Swipe left for %1$s</string>
+ <string name="select_application">Select application</string>
+ <string name="lockscreen_choose_action_title">Choose action</string>
+ <string name="lockscreen_none_target">None</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Choose action to assign</string>
+ <string name="navbar_home_button">Home button</string>
+ <string name="navbar_recent_button">Recent button</string>
+ <string name="navbar_search_button">Search button</string>
+ <string name="navbar_back_button">Back button</string>
+ <string name="navbar_empty_button">Empty button</string>
+ <string name="navbar_menu_conditional_button">Menu (autoHide) button</string>
+ <string name="navbar_menu_always_button">Menu (alwaysShow) button</string>
+ <string name="navbar_menu_big_button">Menu button</string>
+ <string name="accessibility_dpad_left">Cursor left</string>
+ <string name="accessibility_dpad_right">Cursor right</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Wipe app data</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Force stop</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Uninstall</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">Initialising\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="quick_settings_network_adb_label">ADB over network</string>
+ <string name="quick_settings_compass_label">Compass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">System profiles</string>
+ <string name="quick_settings_profiles_off">Profiles disabled</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_screen_timeout_detail_title">Screen timeout</string>
+ <string name="quick_settings_lockscreen_label">Lock screen</string>
+ <string name="quick_settings_lockscreen_label_enforced">Lock screen enforced</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Location reporting: Battery-saving mode.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Location reporting: Sensors-only mode.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Location reporting: High-accuracy mode.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Location mode</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Battery-saving</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Device only</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">High accuracy</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/cm_arrays.xml b/packages/SystemUI/res/values-en-rGB/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rGB/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/cm_strings.xml b/packages/SystemUI/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..4b3b506
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Unable to connect to mobile networks while Airplane mode is enabled. Disable Airplane mode and try again.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/cm_arrays.xml b/packages/SystemUI/res/values-en-rIN/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/cm_strings.xml b/packages/SystemUI/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..37769e0
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Swipe right for %1$s</string>
+ <string name="right_shortcut_hint">Swipe left for %1$s</string>
+ <string name="lockscreen_message">Tap an icon on the left or right to reassign a lock screen shortcut.</string>
+ <string name="lockscreen_default_target">Default</string>
+ <string name="select_application">Select application</string>
+ <string name="lockscreen_choose_action_title">Choose action</string>
+ <string name="lockscreen_none_target">None</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Choose action to assign</string>
+ <string name="navbar_home_button">Home button</string>
+ <string name="navbar_recent_button">Recent button</string>
+ <string name="navbar_search_button">Search button</string>
+ <string name="navbar_back_button">Back button</string>
+ <string name="navbar_empty_button">Empty button</string>
+ <string name="navbar_menu_conditional_button">Menu (autoHide) button</string>
+ <string name="navbar_menu_always_button">Menu (alwaysShow) button</string>
+ <string name="navbar_menu_big_button">Menu button</string>
+ <string name="accessibility_dpad_left">Cursor left</string>
+ <string name="accessibility_dpad_right">Cursor right</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Wipe app data</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Force stop</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Uninstall</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Light brightness</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiles off.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profile: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiles turned off.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profile changed to <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initializing\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Light settings</string>
+ <string name="led_notification_text">LED light enabled by settings</string>
+ <string name="qs_tile_edit_header_instruction">Press and hold tiles to rearrange</string>
+ <string name="quick_settings_edit_label">Edit tiles</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Cannot delete the Edit tile</string>
+ <string name="qs_tiles_reset_confirmation">Reset quick settings tiles to default configuration?</string>
+ <string name="quick_settings_tile_reset_to_default">Reset to default layout</string>
+ <string name="quick_settings_title_header">Header</string>
+ <string name="quick_settings_title_tiles">Tiles</string>
+ <string name="quick_settings_title_show_weather">Show weather</string>
+ <string name="quick_settings_title_enlarge_first_row">Enlarge first row</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">This keeps it in view until you unpin. Touch and hold the Back button to unpin.</string>
+ <string name="quick_settings_custom_tile_detail_title">Custom tile</string>
+ <string name="quick_settings_remove">Remove tile</string>
+ <string name="quick_settings_network_adb_label">ADB over network</string>
+ <string name="quick_settings_compass_label">Compass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">System profiles</string>
+ <string name="quick_settings_profiles_off">Profiles disabled</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Battery saver</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sync off.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sync on.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sync turned off.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sync turned on.</string>
+ <string name="quick_settings_sync_label">Sync</string>
+ <string name="quick_settings_volume_panel_label">Volume panel</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Screen timeout</string>
+ <string name="quick_settings_lockscreen_label">Lock screen</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Lock screen enforced</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Screen timeout: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Screen timeout changed to <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Battery mode</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Battery mode: power save mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Battery mode: balanced mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Battery mode: performance mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Battery mode: efficiency mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Battery mode: quick mode.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Battery mode changed to power save mode.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Battery mode changed to balanced mode.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Battery mode changed to performance mode.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Battery mode changed to efficiency mode.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Battery mode changed to quick mode.</string>
+ <string name="quick_settings_performance_profile_detail_title">Battery mode</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Lock screen off.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Lock screen on.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Lock screen turned off.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Lock screen turned on.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display off.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display on.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display turned off.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display turned on.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up off.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up on.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up turned off.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up turned on.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Battery saver off.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Battery saver on.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Battery saver turned off.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Battery saver turned on.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamic tile</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Next alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME selector</string>
+ <string name="dynamic_qs_tile_su_label">Root access</string>
+ <string name="quick_settings_title_advanced_location">Tri-state location</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Location reporting: battery saving mode.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Location reporting: sensors only mode.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Location reporting: high accuracy mode.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Location mode</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Battery saving</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Device only</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">High accuracy</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Location reporting changed to battery saving mode.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Location reporting changed to sensors only mode.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Location reporting changed to high accuracy mode.</string>
+ <string name="quick_settings_tiles_category_system">System tiles</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Add a tile</string>
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dock battery <xliff:g id="number">%d</xliff:g> percent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Show play queue</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rPT/cm_arrays.xml b/packages/SystemUI/res/values-en-rPT/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rPT/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rPT/cm_strings.xml b/packages/SystemUI/res/values-en-rPT/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rPT/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-en-rPT/strings.xml b/packages/SystemUI/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rPT/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-eo/cm_arrays.xml b/packages/SystemUI/res/values-eo/cm_arrays.xml
new file mode 100644
index 0000000..90be37c
--- /dev/null
+++ b/packages/SystemUI/res/values-eo/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>N-Or</item>
+ <!-- North east -->
+ <item>Or</item>
+ <!-- East -->
+ <item>S-Or</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>S-Ok</item>
+ <!-- South west -->
+ <item>Ok</item>
+ <!-- West -->
+ <item>N-Ok</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-eo/cm_strings.xml b/packages/SystemUI/res/values-eo/cm_strings.xml
new file mode 100644
index 0000000..a44e4c8
--- /dev/null
+++ b/packages/SystemUI/res/values-eo/cm_strings.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Movi dekstren por %1$s</string>
+ <string name="right_shortcut_hint">Movi maldekstren por %1$s</string>
+ <string name="select_application">Elekti aplikaĵon</string>
+ <string name="lockscreen_choose_action_title">Elekti agon</string>
+ <string name="lockscreen_none_target">Nenio</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Elekti agon por atribui</string>
+ <string name="navbar_home_button">Hejmbutono</string>
+ <string name="navbar_recent_button">Lasttempe-butono</string>
+ <string name="navbar_search_button">Serĉ-butono</string>
+ <string name="navbar_back_button">Reen-butono</string>
+ <string name="navbar_empty_button">Malplena butono</string>
+ <string name="navbar_menu_conditional_button">Menubutono (aŭtomate kaŝita)</string>
+ <string name="navbar_menu_always_button">Menubutono (ĉiam videbla)</string>
+ <string name="navbar_menu_big_button">Menubutono</string>
+ <string name="accessibility_dpad_left">Maldekstra kursoro</string>
+ <string name="accessibility_dpad_right">Dekstra kursoro</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Forigi ĉiujn datumojn</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Devigi ĉesadon</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Malinstali</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiloj malaktivaj.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profilo: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiloj malŝaltitaj.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profilo ŝanĝita al <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Preparado\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Tio lasos ĝin videbla ĝin kiam vi malfiksos ĝin. Tuŝetu kaj tenu la reenbutonon por malfiksi.</string>
+ <string name="quick_settings_custom_tile_detail_title">Tajlorita kahelo</string>
+ <string name="quick_settings_remove">Forigi kahelon</string>
+ <string name="quick_settings_network_adb_label">reta ADB</string>
+ <string name="quick_settings_compass_label">Kompaso</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistemaj profiloj</string>
+ <string name="quick_settings_profiles_off">Profiloj malŝaltitaj</string>
+ <string name="quick_settings_heads_up_label">Atentigoj</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinkronigado malaktiva.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinkronigado aktiva.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinkronigado malŝaltita.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinkronigado ŝaltita.</string>
+ <string name="quick_settings_sync_label">Sinkronigo</string>
+ <string name="quick_settings_usb_tether_label">USB modemo</string>
+ <string name="quick_settings_screen_timeout_detail_title">Ekrana tempolimo</string>
+ <string name="quick_settings_lockscreen_label">Ŝlosa ekrano</string>
+ <string name="quick_settings_ambient_display_label">Ĉirkaŭaĵa afiŝado</string>
+ <string name="quick_settings_lockscreen_label_enforced">Ŝlosa ekrano devigita</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ekrana tempolimo: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Ekrana tempolimo ŝanĝita al <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Bateria reĝimo: reĝimo de energia ŝparado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Bateria reĝimo: meza reĝimo.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Bateria reĝimo: reĝimo de rendimento.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Bateria reĝimo ŝanĝita al reĝimo de energia ŝparado.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Bateria reĝimo ŝanĝita al meza reĝimo.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Bateria reĝimo ŝanĝita al reĝimo de rendimento.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Ŝlosa ekrano malaktiva.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Ŝlosa ekrano aktiva.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Ŝlosa ekrano malŝaltita.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Ŝlosa ekrano ŝaltita.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ĉirkaŭaĵa afiŝado malaktiva.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ĉirkaŭaĵa afiŝado aktiva.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ĉirkaŭaĵa afiŝado malŝaltita.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ĉirkaŭaĵa afiŝado ŝaltita.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Atentigoj malaktivaj.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Atentigoj aktivaj.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Atentigoj malŝaltitaj.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Atentigoj ŝaltitaj.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamika kahelo</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Venonta alarmo</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME elektilo</string>
+ <string name="dynamic_qs_tile_su_label">Radikuzanta atingo</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Lokalizado: reĝimo de bateria ŝparado.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Lokalizado: reĝimo de nur aparato.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Lokalizado: reĝimo de alta precizeco.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Moduso por loko</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Ŝparado de baterio</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Nur aparato</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precizeco</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Lokalizado ŝanĝita al ŝparado de baterio.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Lokalizado ŝanĝita al reĝimo de nur aparato.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Lokalizado ŝanĝita al reĝimo de alta precizeco.</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-eo/strings.xml b/packages/SystemUI/res/values-eo/strings.xml
new file mode 100644
index 0000000..8041df8
--- /dev/null
+++ b/packages/SystemUI/res/values-eo/strings.xml
@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <string name="status_bar_latest_events_title">Sciigoj</string>
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <string name="battery_low_why">Agordoj</string>
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_settings_button">Agordoj</string>
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_notifications">Sciigoj</string>
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_search_light">Serĉi</string>
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_button">Telefono</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <string name="cancel">Nuligi</string>
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">Aviadila reĝimo.</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notifications_button">Sciigoj.</string>
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_settings">Agordoj</string>
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_close">Fermi</string>
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_label">Loko</string>
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_settings_label">Agordoj</string>
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_label">Mi</string>
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_title">Uzanto</string>
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_notifications_label">Sciigoj</string>
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_target_search">Serĉi</string>
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <string name="user_new_user_name">Nova uzanto</string>
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <string name="guest_nickname">Gasto</string>
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_new_guest">Aldoni gaston</string>
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest">Forigi gaston</string>
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest_dialog_remove">Forigi</string>
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <string name="guest_notification_remove_action">FORIGI GASTON</string>
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">Aviadila reĝimo</string>
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rCO/cm_arrays.xml b/packages/SystemUI/res/values-es-rCO/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rCO/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rCO/cm_strings.xml b/packages/SystemUI/res/values-es-rCO/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rCO/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rCO/strings.xml b/packages/SystemUI/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rCO/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rMX/cm_arrays.xml b/packages/SystemUI/res/values-es-rMX/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rMX/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rMX/cm_strings.xml b/packages/SystemUI/res/values-es-rMX/cm_strings.xml
new file mode 100644
index 0000000..f7de9c2
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rMX/cm_strings.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="lockscreen_message">Toca un icono a la izquierda o derecha para volver a asignar un atajo a la pantalla de bloqueo.</string>
+ <string name="lockscreen_default_target">Por defecto</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Ajuste de brillo</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ajustes de luz</string>
+ <string name="led_notification_text">Luz LED activada por ajustes</string>
+ <string name="qs_tile_edit_header_instruction">Toca y deja presionados los controles para reorganizarlos</string>
+ <string name="quick_settings_edit_label">Editar controles</string>
+ <string name="quick_settings_cannot_delete_edit_tile">No se puede eliminar el control de \"Editar\"</string>
+ <string name="qs_tiles_reset_confirmation">¿Restaurar los controles de ajustes rápidos a su configuración predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Restaurar disposición por defecto</string>
+ <string name="quick_settings_title_header">Encabezado</string>
+ <string name="quick_settings_title_tiles">Controles</string>
+ <string name="quick_settings_title_show_weather">Mostrar clima</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostrar barra de brillo</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar la primera fila</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Desactivado por perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Desactivar Cafeína.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Activar Cafeína.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_title_advanced_location">Ubicación por triangulación</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_tiles_category_system">Controles del sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Añadir un control</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">No se puede conectar con redes móviles cuando el modo avión está activado. Desactiva el modo avión y vuelve a intentarlo.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">La linterna está encendida</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toca para apagarla</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Sin datos SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rMX/strings.xml b/packages/SystemUI/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rMX/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/cm_arrays.xml b/packages/SystemUI/res/values-es-rUS/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rUS/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..a193b19
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Deslizar a la derecha para %1$s</string>
+ <string name="right_shortcut_hint">Deslizar a la izquierda para %1$s</string>
+ <string name="lockscreen_message">Pulsar un icono a la izquierda o derecha para reasignar un atajo de la pantalla bloqueada.</string>
+ <string name="lockscreen_default_target">Predeterminado</string>
+ <string name="select_application">Selecciona una aplicación</string>
+ <string name="lockscreen_choose_action_title">Elegir acción</string>
+ <string name="lockscreen_none_target">Ninguna</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Seleccionar acción a asignar</string>
+ <string name="navbar_home_button">Botón de inicio</string>
+ <string name="navbar_recent_button">Botón reciente</string>
+ <string name="navbar_search_button">Botón de búsqueda</string>
+ <string name="navbar_back_button">Botón Atrás</string>
+ <string name="navbar_empty_button">Botón vacío</string>
+ <string name="navbar_menu_conditional_button">Botón de menú (auto-ocultar)</string>
+ <string name="navbar_menu_always_button">Botón de menú (siempre visible)</string>
+ <string name="navbar_menu_big_button">Botón de menú</string>
+ <string name="accessibility_dpad_left">Cursor izquierda</string>
+ <string name="accessibility_dpad_right">Cursor derecha</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Borrar datos de la aplicación</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forzar detención</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Ajuste de brillo</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfiles desactivados.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfiles desactivados.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil cambiado a <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializando\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ajustes de luz de notificación</string>
+ <string name="led_notification_text">Luz LED activada por ajustes</string>
+ <string name="qs_tile_edit_header_instruction">Tocar y dejar presionados los mosaicos para reorganizarlos</string>
+ <string name="quick_settings_edit_label">Editar mosaicos</string>
+ <string name="quick_settings_cannot_delete_edit_tile">No se puede eliminar el mosaico Editar</string>
+ <string name="qs_tiles_reset_confirmation">¿Restaurar lo mosaicos de ajustes rápidos a su configuración predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Restaurar disposición predeterminada</string>
+ <string name="quick_settings_title_header">Encabezado</string>
+ <string name="quick_settings_title_tiles">Mosaicos</string>
+ <string name="quick_settings_title_show_weather">Mostrar clima</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostrar barra de brillo</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar la primera fila</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Esto fija la pantalla en esta vista hasta que se desancla. Mantén pulsado el botón Atrás para desanclar.</string>
+ <string name="quick_settings_custom_tile_detail_title">Control personalizado</string>
+ <string name="quick_settings_remove">Eliminar control</string>
+ <string name="quick_settings_network_adb_label">ADB sobre red</string>
+ <string name="quick_settings_compass_label">Brújula</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfiles del sistema</string>
+ <string name="quick_settings_profiles_off">Perfiles desactivados</string>
+ <string name="quick_settings_heads_up_label">Notificaciones emergentes</string>
+ <string name="quick_settings_battery_saver_label">Modo de ahorro de batería</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Ahorrador de batería (cargando)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronización desactivada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronización activada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronización desactivada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronización activada.</string>
+ <string name="quick_settings_sync_label">Sincronizar</string>
+ <string name="quick_settings_volume_panel_label">Panel de volumen</string>
+ <string name="quick_settings_usb_tether_label">Anclaje USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tiempo de espera de pantalla</string>
+ <string name="quick_settings_lockscreen_label">Pantalla bloqueada</string>
+ <string name="quick_settings_ambient_display_label">Pantalla ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Pantalla bloqueada forzada</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Deshabilitado por perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tiempo de espera de pantalla: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tiempo de espera de pantalla cambiado a <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Modo de batería</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Modo de batería: ahorro de energía.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Modo de batería: equilibrado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Modo de batería: rendimiento.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Modo de batería: eficiente.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Modo de batería: rápido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Modo de batería cambiado a ahorro de energía.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Modo de batería cambiado a equilibrado.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Modo de batería cambiado a rendimiento.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Modo de batería cambiado a eficiente.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Modo de batería cambiado a rápido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Modo de batería</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Pantalla bloqueada desactivada.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Pantalla bloqueada activada.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Pantalla bloqueada desactivada.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Pantalla bloqueada activada.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Pantalla ambiente desactivada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Pantalla ambiente activada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Pantalla ambiente desactivada.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Pantalla ambiente activada.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Desactivar notificaciones emergentes.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Activar notificaciones emergentes.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Notificaciones emergentes desactivadas.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Notificaciones emergentes activadas.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Deshabilitar cafeína.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Habilitar cafeína.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Apagar modo de ahorro de batería.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Encender modo de ahorro de batería.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Modo de ahorro de batería apagado.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Modo de ahorro de batería encendido.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Control dinámico</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Próxima alarma</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selector IME</string>
+ <string name="dynamic_qs_tile_su_label">Acceso a raíz</string>
+ <string name="quick_settings_title_advanced_location">Localización trizona</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Informes de ubicación: modo de ahorro de batería.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Informes de ubicación: modo de solo sensores.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Informes de ubicación: modo de alta precisión.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Modos de ubicación</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Ahorro de batería</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Solo dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisión</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Informes de ubicación cambiados a modo de ahorro de batería.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informes de ubicación cambiados a modo solo dispositivo.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Informes de ubicación cambiados a modo de gran precisión.</string>
+ <string name="quick_settings_tiles_category_system">Mosaicos del sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Añadir un mosaico</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">No se puede conectar con redes móviles cuando el modo avión está activado. Desactivar el modo avión y volver a intentarlo.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">La linterna está encendida</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Pulsar para apagarla</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d cliente</item>
+ <item quantity="other">%1$d clientes</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Sin datos SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batería del dock al <xliff:g id="number">%d</xliff:g> %.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Mostrar la cola de reproducción</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index aaaa2dc..b58d4db 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Sin tarjeta SIM"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio de proveedor de red"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Batería <xliff:g id="NUMBER">%d</xliff:g> por ciento"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Configuración del sistema"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificaciones"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Eliminar notificación"</string>
diff --git a/packages/SystemUI/res/values-es/cm_arrays.xml b/packages/SystemUI/res/values-es/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-es/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-es/cm_strings.xml b/packages/SystemUI/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..a9b7a8d
--- /dev/null
+++ b/packages/SystemUI/res/values-es/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Desliza a la derecha para %1$s</string>
+ <string name="right_shortcut_hint">Desliza a la izquierda para %1$s</string>
+ <string name="lockscreen_message">Toca un icono a la izquierda o derecha para volver a asignar un atajo a la pantalla de bloqueo.</string>
+ <string name="lockscreen_default_target">Por defecto</string>
+ <string name="select_application">Selecciona una aplicación</string>
+ <string name="lockscreen_choose_action_title">Elegir acción</string>
+ <string name="lockscreen_none_target">Ninguno</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Elegir acción a asignar</string>
+ <string name="navbar_home_button">Botón Inicio</string>
+ <string name="navbar_recent_button">Botón reciente</string>
+ <string name="navbar_search_button">Botón de búsqueda</string>
+ <string name="navbar_back_button">Botón Atrás</string>
+ <string name="navbar_empty_button">Botón vacío</string>
+ <string name="navbar_menu_conditional_button">Botón de menú (auto-ocultar)</string>
+ <string name="navbar_menu_always_button">Botón de menú (siempre visible)</string>
+ <string name="navbar_menu_big_button">Botón de menú</string>
+ <string name="accessibility_dpad_left">Cursor izquierdo</string>
+ <string name="accessibility_dpad_right">Cursor derecho</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Borrar datos de la aplicación</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forzar detención</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Brillo ligero</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfiles desactivados.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfiles desactivado.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil cambiado a <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializando\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ajustes de luz</string>
+ <string name="led_notification_text">Luz LED activada por ajustes</string>
+ <string name="qs_tile_edit_header_instruction">Toca y deja presionados los controles para reorganizarlos</string>
+ <string name="quick_settings_edit_label">Editar controles</string>
+ <string name="quick_settings_cannot_delete_edit_tile">No se puede eliminar el control de \"Editar\"</string>
+ <string name="qs_tiles_reset_confirmation">¿Restaurar los controles de ajustes rápidos a su configuración predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Restaurar disposición por defecto</string>
+ <string name="quick_settings_title_header">Encabezado</string>
+ <string name="quick_settings_title_tiles">Controles</string>
+ <string name="quick_settings_title_show_weather">Mostrar el clima</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostrar barra de brillo</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar la primera fila</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Esto fija la pantalla en esta vista hasta que es liberada. Mantén pulsado el botón Atrás para liberarla.</string>
+ <string name="quick_settings_custom_tile_detail_title">Control personalizado</string>
+ <string name="quick_settings_remove">Eliminar control</string>
+ <string name="quick_settings_network_adb_label">ADB sobre red</string>
+ <string name="quick_settings_compass_label">Brújula</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfiles del sistema</string>
+ <string name="quick_settings_profiles_off">Perfiles desactivados</string>
+ <string name="quick_settings_heads_up_label">Notificaciones emergentes</string>
+ <string name="quick_settings_battery_saver_label">Modo de ahorro de batería</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Ahorrador de batería (cargando)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronización desactivada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronización activada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronización desactivada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronización activada.</string>
+ <string name="quick_settings_sync_label">Sincronizar</string>
+ <string name="quick_settings_volume_panel_label">Panel de volumen</string>
+ <string name="quick_settings_usb_tether_label">Anclaje de red por USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tiempo de espera de pantalla</string>
+ <string name="quick_settings_lockscreen_label">Pantalla de bloqueo</string>
+ <string name="quick_settings_ambient_display_label">Pantalla ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Pantalla de bloqueo forzada</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Desactivado por perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tiempo de espera de pantalla: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tiempo de espera de pantalla cambiado a <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Modo de la batería</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Modo de batería: ahorro de energía.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Modo de batería: equilibrado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Modo de batería: rendimiento.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Modo de la batería: eficiente.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Modo de la batería: rápido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Modo de batería cambiado a ahorro de energía.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Modo de batería cambiado a equilibrado.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Modo de batería cambiado a rendimiento.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Modo de la batería cambiado a eficiente.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Modo de la batería cambiado a rápido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Modo de la batería</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Bloqueo de pantalla desactivado.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Bloqueo de pantalla activado.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Bloqueo de pantalla desactivado.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Bloqueo de pantalla activado.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Pantalla ambiente desactivada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Pantalla ambiente activada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Pantalla ambiente desactivada.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Pantalla ambiente activada.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Desactivar notificaciones emergentes.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Activar notificaciones emergentes.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Notificaciones emergentes desactivadas.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Notificaciones emergentes activadas.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Desactivar Cafeína.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Activar Cafeína.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Apagar modo de ahorro de batería.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Encender modo de ahorro de batería.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Modo de ahorro de batería apagado.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Modo de ahorro de batería encendido.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Control dinámico</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Próxima alarma</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selector IME</string>
+ <string name="dynamic_qs_tile_su_label">Acceso administrativo</string>
+ <string name="quick_settings_title_advanced_location">Ubicación por triangulación</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Informes de ubicación: modo de ahorro de batería.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Informes de ubicación: modo de solo sensores.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Informes de ubicación: modo de alta precisión.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Modo de ubicación</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Ahorro de batería</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Solo en dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisión</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Informes de ubicación cambiados a modo de ahorro de batería.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informes de ubicación cambiados a modo solo dispositivo.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Informes de ubicación cambiados a modo de gran precisión.</string>
+ <string name="quick_settings_tiles_category_system">Controles del sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Añadir un control</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">No se puede conectar a redes móviles mientras el modo Avión esté activado. Desactiva el modo Avión e inténtalo de nuevo.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">La linterna está encendida</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toca para apagarla</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d cliente</item>
+ <item quantity="other">%1$d clientes</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Sin datos SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batería de la base al <xliff:g id="number">%d</xliff:g> por ciento.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Mostrar la cola de reproducción</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-et-rEE/cm_arrays.xml b/packages/SystemUI/res/values-et-rEE/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-et-rEE/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-et-rEE/cm_strings.xml b/packages/SystemUI/res/values-et-rEE/cm_strings.xml
new file mode 100644
index 0000000..d3265c5
--- /dev/null
+++ b/packages/SystemUI/res/values-et-rEE/cm_strings.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Libista paremale et käivitada %1$s</string>
+ <string name="right_shortcut_hint">Libista vasakule et käivitada %1$s</string>
+ <string name="lockscreen_message">Koputage vasaku või parema ikooni peale, et muuta lukustusekraani lühiteid.</string>
+ <string name="lockscreen_default_target">Vaikimisi</string>
+ <string name="select_application">Valige rakendus</string>
+ <string name="lockscreen_choose_action_title">Valige toiming</string>
+ <string name="lockscreen_none_target">Puudub</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Vali toiming mida lisada</string>
+ <string name="navbar_home_button">Kodu nupp</string>
+ <string name="navbar_recent_button">Hiljutiste nupp</string>
+ <string name="navbar_search_button">Otsimise nupp</string>
+ <string name="navbar_back_button">Tagasi nupp</string>
+ <string name="navbar_empty_button">Tühi nupp</string>
+ <string name="navbar_menu_conditional_button">Menüü (isePeida) nupp</string>
+ <string name="navbar_menu_always_button">Menüü (alatiNäita) nupp</string>
+ <string name="navbar_menu_big_button">Menüü nupp</string>
+ <string name="accessibility_dpad_left">Kursor vasakule</string>
+ <string name="accessibility_dpad_right">Kursor paremale</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Kustuta rakenduse andmed</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Jõuga peatamine</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Eemalda</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Teavitustule heledus</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiilid väljas.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profiil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiilid välja lülitatud.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profiil muudetud: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Määratlen\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Teavitustule sätted</string>
+ <string name="led_notification_text">LED tule lubamine</string>
+ <string name="qs_tile_edit_header_instruction">Hoia plaatide ümber paigutamiseks</string>
+ <string name="quick_settings_edit_label">Redigeeri plaate</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Ei saa kustutada Redigeerimise plaati</string>
+ <string name="qs_tiles_reset_confirmation">Taasta kiirseadistuse plaatide vaikekonfoguratsioon?</string>
+ <string name="quick_settings_tile_reset_to_default">Taasta plaatide vaikeseadistus</string>
+ <string name="quick_settings_title_header">Päis</string>
+ <string name="quick_settings_title_tiles">Plaadid</string>
+ <string name="quick_settings_title_show_weather">Näita Ilmateadet</string>
+ <string name="quick_settings_title_show_brightness_slider">Kuva heleduse liugur</string>
+ <string name="quick_settings_title_enlarge_first_row">Suurenda esimene rida</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">See hoiab vaate kuni vabastamiseni. Vajuta ja hoia tagasi nuppu vabastamiseks.</string>
+ <string name="quick_settings_custom_tile_detail_title">Kohandatud plaat</string>
+ <string name="quick_settings_remove">Eemalda plaat</string>
+ <string name="quick_settings_network_adb_label">ADB üle võrgu</string>
+ <string name="quick_settings_compass_label">Kompass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Süsteemi profiilid</string>
+ <string name="quick_settings_profiles_off">Profiilid välja lülitatud</string>
+ <string name="quick_settings_heads_up_label">Etteteavitus</string>
+ <string name="quick_settings_battery_saver_label">Akusäästja</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Akusäästja (laadimine)</string>
+ <string name="quick_settings_caffeine_label">Kofeiin</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sünk väljas.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sünk sees.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sünk välja lülitatud.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sünk sisse lülitatud.</string>
+ <string name="quick_settings_sync_label">Sünk</string>
+ <string name="quick_settings_volume_panel_label">Helipaneel</string>
+ <string name="quick_settings_usb_tether_label">USB lõastamine</string>
+ <string name="quick_settings_screen_timeout_detail_title">Ekraani viide</string>
+ <string name="quick_settings_lockscreen_label">Lukustusekraan</string>
+ <string name="quick_settings_ambient_display_label">Ambient kuva</string>
+ <string name="quick_settings_lockscreen_label_enforced">Lukustusekraan sunnitud</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Profiili poolt keelatud</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ekraani ajalõpp: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Ekraani ajalõpp muudetud <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Aku režiim</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Aku režiim: energiasäästmise režiim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Aku režiim: tasakaalustatud režiim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Aku režiim: jõudlus režiim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Aku režiim: energiatõhususe režiimis.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Aku režiim: kiirrežiim.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Aku režiim muudeti energiasäästu režiimiks.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Aku režiim muudeti tasakaalustatud režiimiks.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Aku režiim muudeti jõudluse režiimiks.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Aku režiimi muudeti tõhususe režiimiks.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Aku režiimi muudeti kiirrežiimiks.</string>
+ <string name="quick_settings_performance_profile_detail_title">Aku režiim</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Lukustusekraan väljas.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Lukustusekraan sees.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Lukustusekraan välja lülitatud.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Lukustusekraan sisse lülitatud.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient kuva väljas.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient kuva sees.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient kuva väljalülitatud.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient kuva sisselülitatud.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Etteteavitus väljas.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Etteteavitus sees.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Etteteavitus on väljalülitatud.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Etteteavitus on sisselülitatud.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofeiin välja.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofeiin sisse.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Akusäästja väljas.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Akusäästja sees.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Akusäästja on välja lülitatud.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Akusäästja on sisse lülitatud.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dünaamiline plaat</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Järgmine alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME valija</string>
+ <string name="dynamic_qs_tile_su_label">Root ligipääs</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Asukoha teatamine: aku säästmise režiim.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Asukoha teatamine: ainult andurite režiim.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Asukoha teatamine: kõrge täpsusega režiim.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Asukoha režiim</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Akut säästev</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Ainult seade</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Kõrge täpsusega</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Asukoha teavitus muudetud aku säästmise režiimi.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Asukoha teavitus muudetud vaid sensorite režiimi.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Asukoha teavitus muudetud kõrge täpsusega režiimi.</string>
+ <string name="quick_settings_tiles_category_system">Süsteemi plaadid</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Lisa plaat</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Ei saa ühenduda mobiilsidevõrguga kuni lennukirežiim on lubatud. Lülita lennukirežiim välja ja proovi uuesti.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Taskulamp põleb</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Väljalülitamiseks koputage</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d seade</item>
+ <item quantity="other">%1$d seadmed</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Andmeside puudub</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Doki aku <xliff:g id="number">%d</xliff:g> protsenti.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Näita esitamise järjekorda</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Laiendamiseks tõmmake alla</string>
+ <string name="swipe_left_hint">Tõmmake vasakule. et avada rakendus <xliff:g id="app_name">%1$s </xliff:g></string>
+ <string name="swipe_right_hint">Teadete nägemiseks tõmmake paremale</string>
+</resources>
diff --git a/packages/SystemUI/res/values-eu-rES/cm_arrays.xml b/packages/SystemUI/res/values-eu-rES/cm_arrays.xml
new file mode 100644
index 0000000..ba9d5de
--- /dev/null
+++ b/packages/SystemUI/res/values-eu-rES/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>I</item>
+ <!-- North -->
+ <item>IE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>HE</item>
+ <!-- South east -->
+ <item>H</item>
+ <!-- South -->
+ <item>HM</item>
+ <!-- South west -->
+ <item>M</item>
+ <!-- West -->
+ <item>IM</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-eu-rES/cm_strings.xml b/packages/SystemUI/res/values-eu-rES/cm_strings.xml
new file mode 100644
index 0000000..6e55af9
--- /dev/null
+++ b/packages/SystemUI/res/values-eu-rES/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Pasatu hatza eskumara: %1$s</string>
+ <string name="right_shortcut_hint">Pasatu hatza ezkerrera: %1$s</string>
+ <string name="lockscreen_message">Sakatu ezker edo eskuineko ikono bat blokeo-pantailako lasterbide bat aldatzeko.</string>
+ <string name="lockscreen_default_target">Lehenetsia</string>
+ <string name="select_application">Hautatu aplikazioa</string>
+ <string name="lockscreen_choose_action_title">Aukeratu ekintza</string>
+ <string name="lockscreen_none_target">Bat ere ez</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Hautatu esleituko zaion ekintza</string>
+ <string name="navbar_home_button">Hasiera botoia</string>
+ <string name="navbar_recent_button">Azkenak botoia</string>
+ <string name="navbar_search_button">Bilaketa botoia</string>
+ <string name="navbar_back_button">Atzera botoia</string>
+ <string name="navbar_empty_button">Botoi hutsa</string>
+ <string name="navbar_menu_conditional_button">Menu botoia (automatikoki ezkutatu)</string>
+ <string name="navbar_menu_always_button">Menu botoia (beti erakutsi)</string>
+ <string name="navbar_menu_big_button">Menu botoia</string>
+ <string name="accessibility_dpad_left">Kurtsorea ezkerrean</string>
+ <string name="accessibility_dpad_right">Kurtsorea eskuman</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Ezabatu aplikazioaren datuak</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Gelditzera behartu</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalatu</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Argiaren distira</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profilak ezgaituta.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profila: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profilak ezgaituta.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil honetara aldatu da: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Hasieratzen\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Argi ezarpenak</string>
+ <string name="led_notification_text">LED argia ezarpenetan gaituta</string>
+ <string name="qs_tile_edit_header_instruction">Sakatu eta mantendu lauzak berrantolatzeko</string>
+ <string name="quick_settings_edit_label">Editatu lauzak</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Ezin da Editatu lauza ezabatu</string>
+ <string name="qs_tiles_reset_confirmation">Berrezarri ezarpen azkarretako lauzak lehenetsitako konfiguraziora?</string>
+ <string name="quick_settings_tile_reset_to_default">Itzuli lehenetsitako diseinura</string>
+ <string name="quick_settings_title_header">Goiburua</string>
+ <string name="quick_settings_title_tiles">Lauzak</string>
+ <string name="quick_settings_title_show_weather">Bistaratu eguraldia</string>
+ <string name="quick_settings_title_show_brightness_slider">Bistaratu distira graduatzailea</string>
+ <string name="quick_settings_title_enlarge_first_row">Handitu lehen lerroa</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Honek bistan mantenduko du desiltzatzen duzun arte. Sakatu eta mantendu atzera botoia desiltzatzeko.</string>
+ <string name="quick_settings_custom_tile_detail_title">Lauza pertsonalizatua</string>
+ <string name="quick_settings_remove">Ezabatu lauza</string>
+ <string name="quick_settings_network_adb_label">Sare gaineko ADB</string>
+ <string name="quick_settings_compass_label">Iparrorratza</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistema profilak</string>
+ <string name="quick_settings_profiles_off">Profilak ezgaituta</string>
+ <string name="quick_settings_heads_up_label">Jakinarazpen flotatzaileak</string>
+ <string name="quick_settings_battery_saver_label">Bateria aurrezlea</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Bateria aurrezlea (kargatzen)</string>
+ <string name="quick_settings_caffeine_label">Kafeina</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinkronizazioa ezgaituta.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinkronizazioa gaituta.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinkronizazioa ezgaituta.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinkronizazioa gaituta.</string>
+ <string name="quick_settings_sync_label">Sinkronizazioa</string>
+ <string name="quick_settings_volume_panel_label">Bolumen panela</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Pantailaren denbora-muga</string>
+ <string name="quick_settings_lockscreen_label">Blokeo-pantaila</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Blokeo-pantaila behartuta</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Profilak desgaituta</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Pantailaren denbora-muga: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Pantailaren denbora-muga aldatu da: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Bateria modua</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Bateria modua: energia aurrezteko modua.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Bateria modua: modu orekatua.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Bateria modua: Errendimendu modua.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Bateria modua: modu eraginkorra.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Bateria modua: modu azkarra.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Bateria modua energia aurrezteko modura aldatu da.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Bateria modua modu orekatura aldatu da.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Bateria modua errendimendu modura aldatu da.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Bateria modua modu eraginkorrera aldatu da.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Bateria modua modu azkarrera aldatu da.</string>
+ <string name="quick_settings_performance_profile_detail_title">Bateria modua</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Blokeo-pantaila ezgaituta.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Blokeo-pantaila gaituta.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Blokeo pantaila ezgaituta.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Blokeo pantaila gaituta.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display itzalita.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display piztuta.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display itzalita.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display piztuta.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Jakinarazpen flotatzaileak ezgaituta.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Jakinarazpen flotatzaileak gaituta.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Jakinarazpen flotatzaileak ezgaituta.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Jakinarazpen flotatzaileak gaituta.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kafeina ez.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kafeina bai.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Bateria aurrezlea itzalita.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Bateria aurrezlea piztuta.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Bateria aurrezlea itzalita.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Bateria aurrezlea piztuta.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Lauza dinamikoa</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Hurrengo alarma</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME hautatzailea</string>
+ <string name="dynamic_qs_tile_su_label">Root sarbidea</string>
+ <string name="dynamic_qs_tile_themes_label">Gaiak</string>
+ <string name="quick_settings_title_advanced_location">Hiru egoeratako kokapena</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Kokaleku txostena: bateria aurrezteko modua.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Kokaleku txostena: sentsoreak besterik ez modua.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Kokaleku txostena: Zehaztasun handiko modua.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Kokaleku modua</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Bateria aurreztea</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Gailua bakarrik</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Zehaztasun handia</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Kokaleku txostena bateria aurrezteko modura aldatu da.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Kokaleku txostena sentsoreak besterik ez modura aldatu da.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Kokaleku txostena zehaztasun handiko modura aldatu da.</string>
+ <string name="quick_settings_tiles_category_system">Sistemaren lauzak</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Gehitu lauza bat</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Ezin da sare mugikorretara konektatu hegaldi modua gaituta dagoenean. Desgaitu hegaldi modua eta saiatu berriro.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Linterna piztuta dago</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Sakatu itzaltzeko</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">bezero %1$d</item>
+ <item quantity="other">%1$d bezero</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ez dago datuetarako SIM txartelik</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Oinarriaren bateria, ehuneko <xliff:g id="number">%d</xliff:g>.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Bistaratu erreprodukzio ilara</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Pasatu hatza behera zabaltzeko</string>
+ <string name="swipe_left_hint">Pasatu hatza ezkerrera <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Pasatu hatza eskumara jakinarazpenentzat</string>
+</resources>
diff --git a/packages/SystemUI/res/values-fa/cm_arrays.xml b/packages/SystemUI/res/values-fa/cm_arrays.xml
new file mode 100644
index 0000000..24aeeac
--- /dev/null
+++ b/packages/SystemUI/res/values-fa/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>ش</item>
+ <!-- North -->
+ <item>ش خ</item>
+ <!-- North east -->
+ <item>خ</item>
+ <!-- East -->
+ <item>ج خ</item>
+ <!-- South east -->
+ <item>ج</item>
+ <!-- South -->
+ <item>ج ب</item>
+ <!-- South west -->
+ <item>ب</item>
+ <!-- West -->
+ <item>ش ب</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fa/cm_strings.xml b/packages/SystemUI/res/values-fa/cm_strings.xml
new file mode 100644
index 0000000..24235ea
--- /dev/null
+++ b/packages/SystemUI/res/values-fa/cm_strings.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s </xliff:g> - <xliff:g id="condition">%2$s </xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">برای %1$s به راست بکشید</string>
+ <string name="right_shortcut_hint">برای %1$s به چپ بکشید</string>
+ <string name="select_application">انتخاب برنامه</string>
+ <string name="lockscreen_choose_action_title">انتخاب عملکرد</string>
+ <string name="lockscreen_none_target">هیچ‌کدام</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">انتخاب عملکرد</string>
+ <string name="navbar_home_button">دکمه صفحه اصلی</string>
+ <string name="navbar_recent_button">دکمه برنامه‌های اخیر</string>
+ <string name="navbar_search_button">دکمه جستجو</string>
+ <string name="navbar_back_button">دکمه بازگشت</string>
+ <string name="navbar_empty_button">دکمه خالی</string>
+ <string name="navbar_menu_conditional_button">دکمه منو (پنهان)</string>
+ <string name="navbar_menu_always_button">دکمه منو (نمایش همیشگی)</string>
+ <string name="navbar_menu_big_button">دکمه منو</string>
+ <string name="accessibility_dpad_left">نشانگر چپ</string>
+ <string name="accessibility_dpad_right">نشانگر راست</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">پاک کردن داده‌های برنامه</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">توقف اجباری</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">لغو نصب</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">پروفایل‌ها خاموش.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">پروفایل: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">پروفایل‌ها خاموش شدند.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">پروفایل به <xliff:g id="profile" example="Default">%s</xliff:g> تغییر یافت.</string>
+ <string name="quick_settings_compass_init">مقداردهی اولیه\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">این صفحه تا زمانی که آن را از سنجاق درآورید نمایش داده می‌شود. برای از سنجاق درآوردن دکمه بازگشت را نگه دارید.</string>
+ <string name="quick_settings_custom_tile_detail_title">کاشی سفارشی</string>
+ <string name="quick_settings_remove">حذف کاشی</string>
+ <string name="quick_settings_network_adb_label">ای‌دی‌بی از طریق شبکه</string>
+ <string name="quick_settings_compass_label">قطب‌نما</string>
+ <string name="quick_settings_nfc_label">ان‌اف‌سی</string>
+ <string name="quick_settings_profiles">پروفایل‌ها</string>
+ <string name="quick_settings_profiles_off">پروفایل‌ها غیرفعالند</string>
+ <string name="quick_settings_heads_up_label">اعلان فوری</string>
+ <string name="quick_settings_battery_saver_label">بهینه‌ساز باتری</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">همگام‌سازی خاموش.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">همگام‌سازی روشن.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">همگام‌سازی خاموش شد.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">همگام‌سازی روشن شد.</string>
+ <string name="quick_settings_sync_label">همگام‌‌سازی</string>
+ <string name="quick_settings_volume_panel_label">پنل صدا</string>
+ <string name="quick_settings_usb_tether_label">تترینگ یو‌اس‌بی</string>
+ <string name="quick_settings_screen_timeout_detail_title">ﺯﻣﺎﻥ خاموش شدن صفحه</string>
+ <string name="quick_settings_lockscreen_label">قفل صفحه</string>
+ <string name="quick_settings_ambient_display_label">نمایش حساس به محیط</string>
+ <string name="quick_settings_lockscreen_label_enforced">اجرای قفل صفحه</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">زمان خاموش شدن صفحه: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">زمان خاموش شدن صفحه به <xliff:g id="timeout" example="30 seconds">%s</xliff:g> تغییر یافت.</string>
+ <string name="qs_tile_performance">حالت باتری</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">حالت باتری: ذخیره نیرو.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">حالت باتری: متعادل.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">حالت باتری: کارایی.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">حالت باتری: بازدهی.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">حالت باتری: سریع.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">حالت باتری به ذخیره نیرو تغییر یافت.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">حالت باتری به متعادل تغییر یافت.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">حالت باتری به کارایی تغییر یافت.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">حالت باتری به بازدهی تغییر یافت.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">حالت باتری به سریع تغییر یافت.</string>
+ <string name="quick_settings_performance_profile_detail_title">حالت باتری</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">قفل صفحه خاموش.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">قفل صفحه روشن.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">قفل صفحه خاموش شد.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">قفل صفحه روشن شد.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">نمایش حساس به محیط خاموش.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">نمایش حساس به محیط روشن.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">نمایش حساس به محیط خاموش شد.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">نمایش حساس به محیط روشن شد.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">اعلان فوری خاموش.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">اعلان فوری روشن.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">اعلان فوری خاموش شد.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">اعلان فوری روشن شد.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">بهینه‌ساز باتری خاموش.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">بهینه‌ساز باتری روشن.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">بهینه‌ساز باتری خاموش شد.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">بهینه‌ساز باتری روشن شد.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">کاشی پویا</string>
+ <string name="dynamic_qs_tile_next_alarm_label">هشدار بعدی</string>
+ <string name="dynamic_qs_tile_ime_selector_label">انتخابگر تغییر روش ورودی</string>
+ <string name="dynamic_qs_tile_su_label">دسترسی روت</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">گزارش مکان: حالت صرفه‌جویی در باتری.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">گزارش مکان: حالت فقط حسگرها.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">گزارش مکان: حالت دقت بالا.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">حالت مکان</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">صرفه‌جویی در باتری</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">فقط دستگاه</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">دقت بالا</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">گزارش مکان به حالت صرفه‌جویی در باتری تغییر یافت.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">گزارش مکان به حالت فقط حسگرها تغییر یافت.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">گزارش مکان به حالت دقت بالا تغییر یافت.</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">باتری داک <xliff:g id="number">%d</xliff:g> درصد.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">نمایش صف پخش</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-fi/cm_arrays.xml b/packages/SystemUI/res/values-fi/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-fi/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fi/cm_strings.xml b/packages/SystemUI/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..c6e454d
--- /dev/null
+++ b/packages/SystemUI/res/values-fi/cm_strings.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Pyyhkäise oikealle %1$s kertaa</string>
+ <string name="right_shortcut_hint">Pyyhkäise vasemmalle %1$s kertaa</string>
+ <string name="lockscreen_message">Napauta vasenta tai oikeaa kuvaketta määrittääksesi lukitusnäytön pikakuvakkeen.</string>
+ <string name="lockscreen_default_target">Oletus</string>
+ <string name="select_application">Valitse sovellus</string>
+ <string name="lockscreen_choose_action_title">Valitse tehtävä</string>
+ <string name="lockscreen_none_target">Ei mitään</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Valitse käytettävä toiminto</string>
+ <string name="navbar_home_button">Kotinäppäin</string>
+ <string name="navbar_recent_button">Viimeisimmät-näppäin</string>
+ <string name="navbar_search_button">Hakunäppäin</string>
+ <string name="navbar_back_button">Takaisin-näppäin</string>
+ <string name="navbar_empty_button">Tyhjä näppäin</string>
+ <string name="navbar_menu_conditional_button">Valikkonäppäin (piilota)</string>
+ <string name="navbar_menu_always_button">Valikkonäppäin (näytä aina)</string>
+ <string name="navbar_menu_big_button">Valikkonäppäin</string>
+ <string name="accessibility_dpad_left">Kohdistin vasemmalle</string>
+ <string name="accessibility_dpad_right">Kohdistin oikealle</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Tyhjennä tiedot</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Pakota lopetus</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Poista</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Valon kirkkaus</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiilit pois.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profiili: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiilit pois päältä.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profiili <xliff:g id="profile" example="Default">%s</xliff:g> otettiin käyttöön.</string>
+ <string name="quick_settings_compass_init">Alustetaan\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Valoasetukset</string>
+ <string name="led_notification_text">LED-valo otettu käyttöön asetuksissa</string>
+ <string name="qs_tile_edit_header_instruction">Paina tiiltä ja pidä pohjassa järjestääksesi</string>
+ <string name="quick_settings_edit_label">Muokkaa tiiliä</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Et voi poistaa Muokkaa-tiiltä</string>
+ <string name="qs_tiles_reset_confirmation">Palauta pika-asetustiilet oletusasetuksiinsa?</string>
+ <string name="quick_settings_tile_reset_to_default">Palauta oletusasettelu</string>
+ <string name="quick_settings_title_header">Ylärivi</string>
+ <string name="quick_settings_title_tiles">Tiilet</string>
+ <string name="quick_settings_title_show_weather">Näytä sää</string>
+ <string name="quick_settings_title_show_brightness_slider">Näytä kirkkauden liukusäädin</string>
+ <string name="quick_settings_title_enlarge_first_row">Pienennä ensimmäinen rivi</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Tämä pitää sen näkyvissä, kunnes poistat kiinnityksen. Paina ja pidä Takasin-näppäintä pohjassa irrottaaksesi.</string>
+ <string name="quick_settings_custom_tile_detail_title">Mukautettu tiili</string>
+ <string name="quick_settings_remove">Poista tiili</string>
+ <string name="quick_settings_network_adb_label">ADB verkon yli</string>
+ <string name="quick_settings_compass_label">Kompassi</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Järjestelmäprofiilit</string>
+ <string name="quick_settings_profiles_off">Profiilit pois käytöstä</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Virransäästö</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Virransäästö (latautuu)</string>
+ <string name="quick_settings_caffeine_label">Kofeiini</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synkronointi pois.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synkronointi päällä.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synkronointi pois päältä.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synkronointi päällä.</string>
+ <string name="quick_settings_sync_label">Synkronointi</string>
+ <string name="quick_settings_volume_panel_label">Äänenvoimakkuuspaneeli</string>
+ <string name="quick_settings_usb_tether_label">USB-jakaminen</string>
+ <string name="quick_settings_screen_timeout_detail_title">Näytön aikakatkaisu</string>
+ <string name="quick_settings_lockscreen_label">Lukitusnäyttö</string>
+ <string name="quick_settings_ambient_display_label">Ambient-näyttö</string>
+ <string name="quick_settings_lockscreen_label_enforced">Lukitusnäyttö pakotettu</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Profiili poistanut käytöstä</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Näytön aikakatkaisu: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Näytön aikakatkaisu asettiin aikaan <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Akkutila</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Akkutila: virransäästötila.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Akkutila: tasapainotettu-tila.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Akkutila: suorituskykytila.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Akkutila: virransäästö.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Akkutila: suorituskyky.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Akkutila asetettiin virransäästötilaan.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Akkutila asetettiin tasapainotettu-tilaan.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Akkutila asetettiin suorituskykytilaan.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Akkutila vaihdettu virransäästötilaan.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Akkutila vaihdettu suorituskykytilaan.</string>
+ <string name="quick_settings_performance_profile_detail_title">Akkutila</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Lukitusnäyttö pois.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Lukitusnäyttö päällä.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Lukitusnäyttö pois päältä.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Lukitusnäyttö päällä.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient-näyttö pois.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient-näyttö päällä.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient-näyttö pois päältä.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient-näyttö päällä.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up pois.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up päällä.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up pois päältä.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up päällä.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofeiini pois.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofeiini päällä.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Virransäästö pois.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Virransäästö päällä.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Virransäästö pois käytöstä.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Virransäästö käytössä.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynaamiset tiilet</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Seuraava hälytys</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Syöttötavan valitsin</string>
+ <string name="dynamic_qs_tile_su_label">Root-oikeudet</string>
+ <string name="quick_settings_title_advanced_location">Sijainnin lisäasetukset</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Sijainnin raportointi: virransäästötila.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Sijainti: Vain laite.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Sijainnin raportointi: korkea tarkkuus.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Sijaintitilat</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Virransäästö</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Vain laite</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Korkea tarkkuus</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Sijaintitila asetettu virransäästötilaan.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Sijaintitila asetettu vain laite-tilaan.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Sijaintitila asetettu korkean tarkkuuden tilaan.</string>
+ <string name="quick_settings_tiles_category_system">Järjestelmätiilet</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Lisää tiili</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Yhteyden muodostaminen mobiiliverkkoihin lentokonetilan aikana ei onnistu. Poista lentokonetila käytöstä ja yritä uudelleen.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Taskulamppu on päällä</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Paina sammuttaaksesi</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d yhdistetty laite</item>
+ <item quantity="other">%1$d yhdistettyä laitetta</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ei data-SIMiä</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Telakan akku <xliff:g id="number">%d</xliff:g> prosenttia.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Näytä toistojono</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Pyyhkäise alas laajentaaksesi</string>
+ <string name="swipe_left_hint">Pyyhkäise vasemmalle avataksesi sovelluksen <xliff:g id="app_name">%1$s </xliff:g></string>
+ <string name="swipe_right_hint">Pyyhkäise oikealle avataksesi ilmoitukset</string>
+</resources>
diff --git a/packages/SystemUI/res/values-fil-rPH/cm_arrays.xml b/packages/SystemUI/res/values-fil-rPH/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-fil-rPH/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fil-rPH/cm_strings.xml b/packages/SystemUI/res/values-fil-rPH/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-fil-rPH/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/cm_arrays.xml b/packages/SystemUI/res/values-fr-rCA/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-fr-rCA/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/cm_strings.xml b/packages/SystemUI/res/values-fr-rCA/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-fr-rCA/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index d65c277..d132e00 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Aucune carte SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Modification du réseau du fournisseur de services"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Pile : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Paramètres système"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Supprimer la notification"</string>
diff --git a/packages/SystemUI/res/values-fr/cm_arrays.xml b/packages/SystemUI/res/values-fr/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-fr/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fr/cm_strings.xml b/packages/SystemUI/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..178a379
--- /dev/null
+++ b/packages/SystemUI/res/values-fr/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Balayer à droite pour %1$s</string>
+ <string name="right_shortcut_hint">Balayer à gauche pour %1$s</string>
+ <string name="lockscreen_message">Appuyez sur une icône à gauche ou à droite pour réattribuer un raccourci sur l\'écran de verrouillage.</string>
+ <string name="lockscreen_default_target">Par défaut</string>
+ <string name="select_application">Sélectionner une application</string>
+ <string name="lockscreen_choose_action_title">Choisir une action</string>
+ <string name="lockscreen_none_target">Aucune</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Choisir l\'action à assigner</string>
+ <string name="navbar_home_button">Bouton d\'accueil</string>
+ <string name="navbar_recent_button">Bouton d\'applications récentes</string>
+ <string name="navbar_search_button">Bouton de recherche</string>
+ <string name="navbar_back_button">Bouton retour</string>
+ <string name="navbar_empty_button">Bouton vide</string>
+ <string name="navbar_menu_conditional_button">Bouton menu (masqué automatiquement)</string>
+ <string name="navbar_menu_always_button">Bouton menu (toujours affiché)</string>
+ <string name="navbar_menu_big_button">Bouton menu</string>
+ <string name="accessibility_dpad_left">Curseur gauche</string>
+ <string name="accessibility_dpad_right">Curseur droit</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Effacer données de l\'appli</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forcer l\'arrêt</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Désinstaller</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Luminosité</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profils désactivés.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil : <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profils désactivés.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil changé en <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initialisation\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Paramètres du voyant</string>
+ <string name="led_notification_text">LED activée par les paramètres</string>
+ <string name="qs_tile_edit_header_instruction">Appuyez et maintenez les raccourcis pour les réorganiser</string>
+ <string name="quick_settings_edit_label">Modifier les raccourcis</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Impossible de supprimer le raccourci Éditer</string>
+ <string name="qs_tiles_reset_confirmation">Réinitialiser les raccourcis à la configuration par défaut ?</string>
+ <string name="quick_settings_tile_reset_to_default">Réinitialiser à la disposition par défaut</string>
+ <string name="quick_settings_title_header">En-tête</string>
+ <string name="quick_settings_title_tiles">Raccourcis</string>
+ <string name="quick_settings_title_show_weather">Afficher la météo</string>
+ <string name="quick_settings_title_show_brightness_slider">Afficher le curseur de luminosité</string>
+ <string name="quick_settings_title_enlarge_first_row">Agrandir la première ligne</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Cela le laisse en vue jusqu\'à ce que vous le détachiez. Appuyez et maintenez le bouton retour pour détacher.</string>
+ <string name="quick_settings_custom_tile_detail_title">Raccourci personnalisé</string>
+ <string name="quick_settings_remove">Supprimer le raccourci</string>
+ <string name="quick_settings_network_adb_label">ADB par réseau</string>
+ <string name="quick_settings_compass_label">Boussole</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profils système</string>
+ <string name="quick_settings_profiles_off">Profils désactivés</string>
+ <string name="quick_settings_heads_up_label">Notifications flottantes</string>
+ <string name="quick_settings_battery_saver_label">Économiseur de batterie</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Économiseur de batterie (en charge)</string>
+ <string name="quick_settings_caffeine_label">Caféine</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synchronisation désactivée.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synchronisation activée.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronisation désactivée.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronisation activée.</string>
+ <string name="quick_settings_sync_label">Synchro</string>
+ <string name="quick_settings_volume_panel_label">Panneau de volume</string>
+ <string name="quick_settings_usb_tether_label">Modem USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Veille de l\'écran</string>
+ <string name="quick_settings_lockscreen_label">Écran de verrouillage</string>
+ <string name="quick_settings_ambient_display_label">Affichage en mode veille</string>
+ <string name="quick_settings_lockscreen_label_enforced">Écran de verrouillage forcé</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Désactivé par profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Veille de l\'écran : <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Veille de l\'écran changée à <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Mode batterie</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Mode batterie : économie d\'énergie.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Mode batterie : équilibré.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Mode batterie : haute performance.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Mode batterie : efficace.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Mode batterie : rapide.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">La batterie est maintenant en mode économie d\'énergie.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">La batterie est maintenant en mode équilibré.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">La batterie est maintenant en mode performances.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Mode batterie changé en mode efficace.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Mode batterie changé en mode rapide.</string>
+ <string name="quick_settings_performance_profile_detail_title">Mode batterie</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Écran de verrouillage désactivé.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Écran de verrouillage activé.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Verrouillage d\'écran désactivé.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Verrouillage d\'écran activé.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Affichage en mode veille désactivé.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Affichage en mode veille activé.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Affichage en mode veille désactivé.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Affichage en mode veille activé.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Notifications flottantes désactivées.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Notifications flottantes activées.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Notifications flottantes désactivées.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Notifications flottantes activées.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Caféine éteinte.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Caféine allumée.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Économiseur de batterie désactivé.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Économiseur de batterie activé.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">L\'économiseur de batterie a été désactivé.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">L\'économiseur de batterie a été activé.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Raccourcis dynamiques</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Prochaine alarme</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Mode de saisie</string>
+ <string name="dynamic_qs_tile_su_label">Accès root</string>
+ <string name="quick_settings_title_advanced_location">Localisation à trois états</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Localisation : mode économie de batterie.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Localisation : mode appareil uniquement.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Localisation : mode haute précision.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Mode de localisation</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Économie de batterie</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Appareil uniquement</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Haute précision</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Localisation changée en mode économie de batterie.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Localisation changée en mode appareil uniquement.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Localisation changée en mode haute précision.</string>
+ <string name="quick_settings_tiles_category_system">Raccourcis système</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Ajouter un raccourci</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Impossible de se connecter aux réseaux mobiles quand le mode avion est activé. Désactivez le mode avion et réessayez.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Lampe de poche allumée</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toucher pour éteindre</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Aucune donnée SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batterie de la station d\'accueil chargée à <xliff:g id="number">%d</xliff:g> pour cent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Voir la file d\'attente de lecture</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index ab9e64d..eccc910 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Aucune carte SIM"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Modification du réseau de l\'opérateur"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Batterie : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Paramètres système"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Supprimer la notification"</string>
diff --git a/packages/SystemUI/res/values-frp-rIT/cm_arrays.xml b/packages/SystemUI/res/values-frp-rIT/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-frp-rIT/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-frp-rIT/cm_strings.xml b/packages/SystemUI/res/values-frp-rIT/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-frp-rIT/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-frp-rIT/strings.xml b/packages/SystemUI/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-frp-rIT/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-fy-rNL/cm_arrays.xml b/packages/SystemUI/res/values-fy-rNL/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-fy-rNL/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-fy-rNL/cm_strings.xml b/packages/SystemUI/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..9c17875
--- /dev/null
+++ b/packages/SystemUI/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="quick_settings_nfc_label">NFC</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-fy-rNL/strings.xml b/packages/SystemUI/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-fy-rNL/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-ga-rIE/cm_arrays.xml b/packages/SystemUI/res/values-ga-rIE/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ga-rIE/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ga-rIE/cm_strings.xml b/packages/SystemUI/res/values-ga-rIE/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ga-rIE/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ga-rIE/strings.xml b/packages/SystemUI/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-ga-rIE/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-gd-rGB/cm_arrays.xml b/packages/SystemUI/res/values-gd-rGB/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-gd-rGB/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-gd-rGB/cm_strings.xml b/packages/SystemUI/res/values-gd-rGB/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-gd-rGB/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-gd-rGB/strings.xml b/packages/SystemUI/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-gd-rGB/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-gl-rES/cm_arrays.xml b/packages/SystemUI/res/values-gl-rES/cm_arrays.xml
new file mode 100644
index 0000000..f57af4d
--- /dev/null
+++ b/packages/SystemUI/res/values-gl-rES/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NL</item>
+ <!-- North east -->
+ <item>L</item>
+ <!-- East -->
+ <item>SL</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-gl-rES/cm_strings.xml b/packages/SystemUI/res/values-gl-rES/cm_strings.xml
new file mode 100644
index 0000000..31232af
--- /dev/null
+++ b/packages/SystemUI/res/values-gl-rES/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Arrastra á dereita para %1$s</string>
+ <string name="right_shortcut_hint">Arrastra á esquerda para %1$s</string>
+ <string name="lockscreen_message">Toque nunha icona na dereita ou na esquerda para volver a asignar un atallo da pantalla de bloqueo.</string>
+ <string name="lockscreen_default_target">Predeterminado</string>
+ <string name="select_application">Seleccionar aplicación</string>
+ <string name="lockscreen_choose_action_title">Escoller acción</string>
+ <string name="lockscreen_none_target">Ningunha</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Escoller unha acción que asignar</string>
+ <string name="navbar_home_button">Botón de inicio</string>
+ <string name="navbar_recent_button">Botón de recentes</string>
+ <string name="navbar_search_button">Botón de buscas</string>
+ <string name="navbar_back_button">Botón de retroceso</string>
+ <string name="navbar_empty_button">Botón baleiro</string>
+ <string name="navbar_menu_conditional_button">Botón de menú (autoagochar)</string>
+ <string name="navbar_menu_always_button">Botón de menú (amosar sempre)</string>
+ <string name="navbar_menu_big_button">Botón do menú</string>
+ <string name="accessibility_dpad_left">Cursor á esquerda</string>
+ <string name="accessibility_dpad_right">Cursor á dereita</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Borrar os datos da aplicación</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forzar a parada</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Brillo da luz</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfís desactivados.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Predeterminado">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfís desactivados.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil cambiado a <xliff:g id="profile" example="Predeterminado">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializando\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Configuración de luz</string>
+ <string name="led_notification_text">Luz LED activada por configuración</string>
+ <string name="qs_tile_edit_header_instruction">Prema e sosteña as baldosas para reorganizalas</string>
+ <string name="quick_settings_edit_label">Editar baldosas</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Non foi posíbel eliminar a baldosa Editar</string>
+ <string name="qs_tiles_reset_confirmation">Restabelecer a configuración rápida de baldosas á configuración predeterminada?</string>
+ <string name="quick_settings_tile_reset_to_default">Restabelecer coa disposición predeterminada</string>
+ <string name="quick_settings_title_header">Cabeceira</string>
+ <string name="quick_settings_title_tiles">Baldosas</string>
+ <string name="quick_settings_title_show_weather">Amosar o prognóstico</string>
+ <string name="quick_settings_title_show_brightness_slider">Amosar barra de brillo</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar a primeira fila</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Amosarase mentres esté fixado. Para deixar de fixalo, mantén tocado o botón Atrás.</string>
+ <string name="quick_settings_custom_tile_detail_title">Botón personalizado</string>
+ <string name="quick_settings_remove">Retirar botón</string>
+ <string name="quick_settings_network_adb_label">ADB na rede</string>
+ <string name="quick_settings_compass_label">Compás</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfís do sistema</string>
+ <string name="quick_settings_profiles_off">Perfís desactivados</string>
+ <string name="quick_settings_heads_up_label">Notificacións emerxentes</string>
+ <string name="quick_settings_battery_saver_label">Economizador da bateria</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Aforrador de batería (cargando)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronización apagada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronización acesa.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">A sincronización foi apagada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">A sincronización foi acendida.</string>
+ <string name="quick_settings_sync_label">Sincronización</string>
+ <string name="quick_settings_volume_panel_label">Panel de volume</string>
+ <string name="quick_settings_usb_tether_label">Compartir conexión USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tempo de espera da pantalla</string>
+ <string name="quick_settings_lockscreen_label">Bloqueo de pantalla</string>
+ <string name="quick_settings_ambient_display_label">Visualización de ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Bloqueo de pantalla estabelecido</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Desactivado polo perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tempo de espera da pantalla: <xliff:g id="timeout" example="30 segundos">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tempo de espera da pantalla cambiado a <xliff:g id="timeout" example="30 segundos">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Modo da batería</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Modo da batería: modo de aforro de enerxía.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Modo da batería: modo equilibrado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Modo da batería: modo rendemento.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Modo da bateria: modo eficiente.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Modo da bateria: modo rápido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">O modo da batería cambiou a modo de aforro de enerxía.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">O modo da batería cambiou a modo equilibrado.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">O modo da batería cambiou a modo rendemento.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">O modo da batería cambiou a modo eficiente.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">O modo da batería cambiou a modo rápido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Modo da batería</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Bloqueo de pantalla desactivado.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Bloqueo de pantalla activado.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Bloqueo de pantalla desactivado.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Bloqueo de pantalla activado.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Visualización de ambiente desactivada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Visualización de ambiente activada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">A visualización de ambiente foi desactivada.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">A visualización de ambiente foi activada.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Notificacións emerxentes desactivadas.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Notificacións emerxentes activadas.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">As notificacións emerxentes foron desactivadas.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">As notificacións emerxentes foron activadas.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Deshabilitar Cafeína.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Habilitar Cafeína.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Economizador da batería apagado.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Economizador da bateria aceso.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">O economizador da batería foi apagado.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">O economizador da batería foi acendido.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Botón dinámico</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Próxima alarma</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selector IME</string>
+ <string name="dynamic_qs_tile_su_label">Acceso de superusuario</string>
+ <string name="dynamic_qs_tile_themes_label">Temas</string>
+ <string name="quick_settings_title_advanced_location">Localización por triangulación</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Informe de localización: en modo aforro de batería.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Informe de localización: en modo de sensores.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Informe de localización: en modo de alta precisión.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Modo de localización</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Aforro de batería</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Só dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisión</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Informe de localización cambiado a modo aforro de batería.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informe de localización cambiado a modo sensores.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Informe de localización cambiado a modo alta precisión.</string>
+ <string name="quick_settings_tiles_category_system">Baldosas do sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Engadir unha baldosa</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Non é posíbel conectar a rede móbil mentres o modo Avión está activado. Desactívao e téntao de novo.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">A lanterna está acesa</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toca para apagala</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d cliente</item>
+ <item quantity="other">%1$d clientes</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">SIM sen datos</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batería do conector <xliff:g id="number">%d</xliff:g> %.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Amosar a cola de reproducción</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Esvarar cara abaixo para expandir</string>
+ <string name="swipe_left_hint">Esvarar cara a esquerda para <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Esvarar cara a dereita para ver as notificacións</string>
+</resources>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index 0200aa4..140f4a7 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Non hai tarxeta SIM"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio de rede do operador."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Carga da batería: <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Configuración do sistema"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificacións"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Eliminar notificación."</string>
diff --git a/packages/SystemUI/res/values-gu-rIN/cm_arrays.xml b/packages/SystemUI/res/values-gu-rIN/cm_arrays.xml
new file mode 100644
index 0000000..606537e
--- /dev/null
+++ b/packages/SystemUI/res/values-gu-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>ઉ</item>
+ <!-- North -->
+ <item>ઉ.પૂર્વ</item>
+ <!-- North east -->
+ <item>પૂર્વ</item>
+ <!-- East -->
+ <item>દ.પૂર્વ</item>
+ <!-- South east -->
+ <item>દ</item>
+ <!-- South -->
+ <item>દ. પ</item>
+ <!-- South west -->
+ <item>પ</item>
+ <!-- West -->
+ <item>ઉ. પ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-gu-rIN/cm_strings.xml b/packages/SystemUI/res/values-gu-rIN/cm_strings.xml
new file mode 100644
index 0000000..ba08659
--- /dev/null
+++ b/packages/SystemUI/res/values-gu-rIN/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s માટે જમણી બાજુ સ્વાઇપ કરો</string>
+ <string name="right_shortcut_hint">%1$s માટે ડાબી બાજુ સ્વાઇપ કરો</string>
+ <string name="lockscreen_message">લૉકસ્ક્રીન શોર્ટકટની પુન:ફાળવણી કરવા માટે આઇકૉનને ડાબે અથવા જમણે ટૅપ કરો.</string>
+ <string name="lockscreen_default_target">ડિફોલ્ટ</string>
+ <string name="select_application">એપ્લિકેશન પસંદ કરો</string>
+ <string name="lockscreen_choose_action_title">ક્રિયા પસંદ કરો</string>
+ <string name="lockscreen_none_target">કોઈ નહીં</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">ફાળવણી માટે ક્રિયા પસંદ કરો</string>
+ <string name="navbar_home_button">હોમ બટન</string>
+ <string name="navbar_recent_button">રીસન્ટ બટન</string>
+ <string name="navbar_search_button">સર્ચ બટન</string>
+ <string name="navbar_back_button">બૅક બટન</string>
+ <string name="navbar_empty_button">એમ્પ્ટી બટન</string>
+ <string name="navbar_menu_conditional_button">મેન્યૂ (ઑટોહાઇડ) બટન</string>
+ <string name="navbar_menu_always_button">મેન્યૂ (ઑટોહાઇડ) બટન</string>
+ <string name="navbar_menu_big_button">મેનુ બટન</string>
+ <string name="accessibility_dpad_left">કર્સર ડાબું</string>
+ <string name="accessibility_dpad_right">કર્સર જમણું</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">એપ્લિકેશન ડેટા સાફ કરો</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">ફરજિયાત બંધ કરો</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">અનઇન્સ્ટોલ કરો</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">લાઇટ બ્રાઇટનેસ</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">પ્રોફાઇલ્સ બંધ.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">પ્રોફાઇલ: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">પ્રોફાઇલ્સ બંધ કરાયું.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">પ્રોફાઇલ્સ બદલીને <xliff:g id="profile" example="Default">%s</xliff:g>કરાયું.</string>
+ <string name="quick_settings_compass_init">શરૂ થાય છે\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">લાઇટ સેટિંગ્સ</string>
+ <string name="led_notification_text">સેટિંગ્સ દ્વારા LED લાઇટ સક્ષમ થઈ</string>
+ <string name="qs_tile_edit_header_instruction">પુન:ગોઠવવા માટે ટાઇલ્સ દબાવો અને પકડી રાખો</string>
+ <string name="quick_settings_edit_label">ટાઇલ્સ એડિટ કરો</string>
+ <string name="quick_settings_cannot_delete_edit_tile">સંપાદન ટાઇલ ભૂંસી શકાતી નથી</string>
+ <string name="qs_tiles_reset_confirmation">ક્વિક સેટિંગ્સ ટાઇલ્સને ડિફૉલ્ટ કન્ફિગ્યુરેશન પર રિસેટ કરો?</string>
+ <string name="quick_settings_tile_reset_to_default">ડિફૉલ્ટ લેઆઉટ પર રિસેટ કરો</string>
+ <string name="quick_settings_title_header">હેડર</string>
+ <string name="quick_settings_title_tiles">ટાઇલ્સ</string>
+ <string name="quick_settings_title_show_weather">હવામાન દર્શાવો</string>
+ <string name="quick_settings_title_show_brightness_slider">બ્રાઇટનેસ સ્લાઇડર દર્શાવો</string>
+ <string name="quick_settings_title_enlarge_first_row">પ્રથમ પંક્તિ મોટી કરો</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">તમે અનપીન કરો નહી ત્યાં સુધી આ બાબત તેને નજર સામે રાખે છે. અનપિન કરવા માટે બૅક બટન ટચ કરીને પકડી રાખો.</string>
+ <string name="quick_settings_custom_tile_detail_title">કસ્ટમ ટાઇલ</string>
+ <string name="quick_settings_remove">ટાઇલ કાઢી નાંખો</string>
+ <string name="quick_settings_network_adb_label">નેટવર્ક પર ADB</string>
+ <string name="quick_settings_compass_label">કમ્પાસ</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">સિસ્ટમ પ્રોફાઇલ્સ</string>
+ <string name="quick_settings_profiles_off">પ્રોફાઇલ્સ અક્ષમ કરાઇ</string>
+ <string name="quick_settings_heads_up_label">હેડ્સ અપ</string>
+ <string name="quick_settings_battery_saver_label">બૅટરી સેવર</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">કેફીન</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">સિંક્રનાઇઝ બંધ.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">સિંક્રનાઇઝ ચાલુ.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">સિંક્રનાઇઝ બંધ કરાયું.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">સિંક્રનાઇઝ ચાલુ કરાયું.</string>
+ <string name="quick_settings_sync_label">સમન્વયન</string>
+ <string name="quick_settings_volume_panel_label">વૉલ્યુમ પૅનલ.</string>
+ <string name="quick_settings_usb_tether_label">USB ટિથરિંગ</string>
+ <string name="quick_settings_screen_timeout_detail_title">સ્ક્રીન સમય સમાપ્તિ</string>
+ <string name="quick_settings_lockscreen_label">સ્ક્રીન લોક કરો</string>
+ <string name="quick_settings_ambient_display_label">વ્યાપક ડિસ્પ્લે</string>
+ <string name="quick_settings_lockscreen_label_enforced">લૉક સ્ક્રીન અમલી</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">પ્રોફાઇલ દ્વારા અક્ષમ</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">સ્ક્રીન સમય સમાપ્તિ: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">સ્ક્રીન સમય સમાપ્તિ બદલીને <xliff:g id="timeout" example="30 seconds">%s</xliff:g>કરાઇ.</string>
+ <string name="qs_tile_performance">બૅટરી મોડ</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">બૅટરી મોડ: પાવર બચત મોડ.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">બૅટરી મોડ: સમતુલિત મોડ.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">બૅટરી મોડ: કામગીરી મોડ.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">બૅટરી મોડ: કાર્યક્ષમતા મોડ.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">બૅટરી મોડ: ઝડપી મોડ.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">બૅટરી મોડ પાવર બચત મોડ તરીકે બદલાયું.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">બૅટરી મોડ સમતુલિત મોડ તરીકે બદલાયું.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">બૅટરી મોડ કામગીરી મોડ તરીકે બદલાયું.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">બૅટરી મોડ કાર્યક્ષમતા મોડ તરીકે બદલાયું.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">બૅટરી મોડ ઝડપી મોડ તરીકે બદલાયું.</string>
+ <string name="quick_settings_performance_profile_detail_title">બૅટરી મોડ</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">લૉક સ્ક્રીન બંધ.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">લૉક સ્ક્રીન ચાલુ.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">લૉક સ્ક્રીન બંધ કરાયું.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">લૉક સ્ક્રીન ચાલુ કરાયું.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">વ્યાપક પ્રદર્શન બંધ.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">વ્યાપક પ્રદર્શન ચાલુ.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">વ્યાપક પ્રદર્શન બંધ કરાયું.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">વ્યાપક પ્રદર્શન ચાલુ કરાયું.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">હેડ્સ અપ બંધ.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">હેડ્સ અપ ચાલુ.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">હેડ્સ અપ બંધ કરાયું.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">હેડ્સ અપ ચાલુ કરાયું.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">કેફીન બંધ.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">કેફીન ચાલુ.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">બૅટરી સેવર બંધ.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">બૅટરી સેવર ચાલુ.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">બૅટરી સેવર બંધ કરાયું.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">બૅટરી સેવર ચાલુ કરાયું.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ડાયનેમિક ટાઇલ</string>
+ <string name="dynamic_qs_tile_next_alarm_label">આગામી ઍલાર્મ</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME સિલેક્ટર</string>
+ <string name="dynamic_qs_tile_su_label">રૂટ ઍક્સેસ</string>
+ <string name="quick_settings_title_advanced_location">Tri-state સ્થાન</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">સ્થાન રિપોર્ટિંગ: બૅટરી બચત મોડ.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">સ્થાન રિપોર્ટિંગ: ફક્ત સેન્સર્સ મોડ.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">સ્થાન રિપોર્ટિંગ: ઉચ્ચ સચોટતા મોડ.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">સ્થાન મોડ</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">બૅટરી બચત</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">ફક્ત ઉપકરણ</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">ઉચ્ચ સચોટતા</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">સ્થાન રિપોર્ટિંગ બૅટરી બચત મોડ પર બદલવામાં આવ્યું.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">સ્થાન રિપોર્ટિંગ ફક્ત સેન્સર્સ મોડ પર બદલવામાં આવ્યું.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">સ્થાન રિપોર્ટિંગ ઉચ્ચ સચોટતા મોડ પર બદલવામાં આવ્યું.</string>
+ <string name="quick_settings_tiles_category_system">સિસ્ટમ ટાઇલ્સ</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">ટાઇલ ઍડ કરો</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">એરપ્લેન મોડ સક્ષમ કરવામાં આવે ત્યારે મોબાઇલ નેટવર્ક્સ સાથે જોડાવામાં અક્ષમ. એરપ્લેન મોડ અક્ષમ કરો અને ફરી પ્રયાસ કરો.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ફ્લૅશલાઇટ ચાલુ છે</string>
+ <string name="quick_settings_tile_flashlight_not_summary">બંધ કરવા ટૅપ કરો</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">કોઈ ડેટા SIM નથી</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ડૉક બેટરી <xliff:g id="number">%d</xliff:g> ટકા.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">પ્લે હરોળ દર્શાવો</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-hdpi/cm_dimens.xml b/packages/SystemUI/res/values-hdpi/cm_dimens.xml
new file mode 100644
index 0000000..404f22f
--- /dev/null
+++ b/packages/SystemUI/res/values-hdpi/cm_dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="weather_text_size">10sp</dimen>
+</resources> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-hi/cm_arrays.xml b/packages/SystemUI/res/values-hi/cm_arrays.xml
new file mode 100644
index 0000000..1e8bded
--- /dev/null
+++ b/packages/SystemUI/res/values-hi/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>उ</item>
+ <!-- North -->
+ <item>उपू</item>
+ <!-- North east -->
+ <item>पू</item>
+ <!-- East -->
+ <item>दपू</item>
+ <!-- South east -->
+ <item>द</item>
+ <!-- South -->
+ <item>दप</item>
+ <!-- South west -->
+ <item>प</item>
+ <!-- West -->
+ <item>उप</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-hi/cm_strings.xml b/packages/SystemUI/res/values-hi/cm_strings.xml
new file mode 100644
index 0000000..3502636
--- /dev/null
+++ b/packages/SystemUI/res/values-hi/cm_strings.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s के लिए दायाँ स्वाइप करें</string>
+ <string name="right_shortcut_hint">%1$s के लिए बायाँ स्वाइप करें</string>
+ <string name="select_application">अनुप्रयोग चुनें</string>
+ <string name="lockscreen_choose_action_title">कार्य चुनें</string>
+ <string name="lockscreen_none_target">कोई नहीं</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">निर्दिष्ट करने के लिए कार्य चुनें</string>
+ <string name="navbar_home_button">होम बटन</string>
+ <string name="navbar_recent_button">हाल का बटन</string>
+ <string name="navbar_search_button">खोज बटन</string>
+ <string name="navbar_back_button">पीछे बटन</string>
+ <string name="navbar_empty_button">खाली बटन</string>
+ <string name="navbar_menu_conditional_button">मेनू (स्वतः छिपाएँ) बटन</string>
+ <string name="navbar_menu_always_button">मेनू (हमेशा दिखाएँ) बटन</string>
+ <string name="navbar_menu_big_button">मेनू बटन</string>
+ <string name="accessibility_dpad_left">कर्सर बायाँ</string>
+ <string name="accessibility_dpad_right">कर्सर दायाँ</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ऐप डेटा को साफ़ करें</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">ज़बर्दस्ती बंद करें</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">विस्थापित करें</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">प्रोफ़ाइलें बंद है।</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">प्रोफ़ाइल: <xliff:g id="profile" example="Default">%s</xliff:g>।</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">प्रोफाइलों को बंद किया गया है।</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">प्रोफ़ाइल को <xliff:g id="profile" example="Default">%s</xliff:g> में बदला गया।</string>
+ <string name="quick_settings_compass_init">प्रारंभ कर रहे हैं\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">यह इसे तब तक दृश्य में रखता है जब तक आप अनपिन नहीं करते। अनपिन करने के लिए बैक बटन को कुछ देर छूते रहें।</string>
+ <string name="quick_settings_custom_tile_detail_title">मनपसंद टाइल</string>
+ <string name="quick_settings_remove">टाइल हटाएँ</string>
+ <string name="quick_settings_network_adb_label">नेटवर्क पर एडीबी</string>
+ <string name="quick_settings_compass_label">कुतुबनुमा</string>
+ <string name="quick_settings_nfc_label">एनएफसी</string>
+ <string name="quick_settings_profiles">सिस्टम प्रोफ़ाइलें</string>
+ <string name="quick_settings_profiles_off">प्रोफ़ाइलें अक्षम हैं</string>
+ <string name="quick_settings_heads_up_label">हेड्स अप।</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">संकालन बंद है।</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">संकालन चालू है।</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">संकालन को बंद किया गया है।</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">संकालन को चालू किया गया है।</string>
+ <string name="quick_settings_sync_label">संकालन</string>
+ <string name="quick_settings_usb_tether_label">यूएसबी टेदरिंग</string>
+ <string name="quick_settings_screen_timeout_detail_title">स्क्रीन समय समाप्त</string>
+ <string name="quick_settings_lockscreen_label">स्क्रीन को लॉक करें</string>
+ <string name="quick_settings_ambient_display_label">परिवेशी प्रदर्शन</string>
+ <string name="quick_settings_lockscreen_label_enforced">स्क्रीन को लॉक करें प्रवर्तित</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">स्क्रीन समय-समाप्ति: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>।</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">स्क्रीन समय-समाप्ति को <xliff:g id="timeout" example="30 seconds">%s</xliff:g> में बदला गया।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">बैटरी मोड: पावर बचाव मोड।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">बैटरी मोड: संतुलित मोड।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">बैटरी मोड: निष्पादन मोड।</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">बैटरी मोड को पावर बचाव मोड में बदला गया।</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">बैटरी मोड को संतुलित मोड में बदला गया।</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">बैटरी मोड को निष्पादन मोड में बदला गया।</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">स्क्रीन को लॉक करें बंद है।</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">स्क्रीन को लॉक करें चालू है।</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">स्क्रीन को लॉक करें को बंद किया गया है।</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">स्क्रीन को लॉक करें को चालू किया गया है।</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">परिवेशी प्रदर्शन बंद है।</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">परिवेशी प्रदर्शन चालू है।</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">परिवेशी प्रदर्शन को बंद किया गया है।</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">परिवेशी प्रदर्शन को चालू किया गया।</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">हेड्स अप बंद है।</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">हेड्स अप चालू है।</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">हेड्स अप को बंद किया गया है।</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">हेड्स अप को चालू किया गया।</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">गतिशील टाइल</string>
+ <string name="dynamic_qs_tile_next_alarm_label">अलगा अलार्म</string>
+ <string name="dynamic_qs_tile_ime_selector_label">आईएमई चयनक</string>
+ <string name="dynamic_qs_tile_su_label">मूल पहुँच</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">स्थान रिपोर्टिंग: बैटरी बचानेवाला मोड।</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">स्थान रिपोर्टिंग: केवल सेंसर मोड।</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">स्थान रिपोर्टिंग: उच्च सटीकता मोड।</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">स्थान मोड</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">बैटरी बचानेवाला</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">केवल उपकरण</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">उच्च सटीकता</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">स्थान रिपोर्टिंग को बैटरी बचाव मोड में बदला गया।</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">स्थान रिपोर्टिंग में केवल संवेदक मोड में बदला गया।</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">स्थान रिपोर्टिंग को उच्च सटीकता मोड में बदला गया।</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">बैटरी <xliff:g id="number">%d</xliff:g> प्रतिशत को डॉक करें।</string>
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-hr/cm_arrays.xml b/packages/SystemUI/res/values-hr/cm_arrays.xml
new file mode 100644
index 0000000..ebe3e06
--- /dev/null
+++ b/packages/SystemUI/res/values-hr/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>S</item>
+ <!-- North -->
+ <item>SI</item>
+ <!-- North east -->
+ <item>I</item>
+ <!-- East -->
+ <item>JI</item>
+ <!-- South east -->
+ <item>J</item>
+ <!-- South -->
+ <item>JZ</item>
+ <!-- South west -->
+ <item>Z</item>
+ <!-- West -->
+ <item>SZ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-hr/cm_strings.xml b/packages/SystemUI/res/values-hr/cm_strings.xml
new file mode 100644
index 0000000..db13f83
--- /dev/null
+++ b/packages/SystemUI/res/values-hr/cm_strings.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Kliznite desno za %1$s</string>
+ <string name="right_shortcut_hint">Kliznite lijevo za %1$s</string>
+ <string name="lockscreen_message">Dodirnite ikonu na lijevoj ili desnoj strani da biste postavili prečac zaključanog zaslona.</string>
+ <string name="lockscreen_default_target">Zadano</string>
+ <string name="select_application">Odaberite aplikaciju</string>
+ <string name="lockscreen_choose_action_title">Odaberite radnju</string>
+ <string name="lockscreen_none_target">Nijedan</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Odaberi radnju</string>
+ <string name="navbar_home_button">Gumb za početni zaslon</string>
+ <string name="navbar_recent_button">Tipka nedavno</string>
+ <string name="navbar_search_button">Tipka za pretraživanje</string>
+ <string name="navbar_back_button">Tipka nazad</string>
+ <string name="navbar_empty_button">Prazna tipka</string>
+ <string name="navbar_menu_conditional_button">Tipka izbornika (automatsko sakrivanje)</string>
+ <string name="navbar_menu_always_button">Tipka izbornika (uvijek prikaži)</string>
+ <string name="navbar_menu_big_button">Tipka izbornika</string>
+ <string name="accessibility_dpad_left">Kursor lijevo</string>
+ <string name="accessibility_dpad_right">Kursor desno</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Izbriši podatke aplikacije</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Prisilno zaustavi</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Deinstaliraj</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Osvjetljenje svjetla</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profili isklučeni.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profili su isključeni.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil promijenjen u <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicijalizacija\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Postavke svjetla</string>
+ <string name="led_notification_text">LED svjetlo omogućeno postavkama</string>
+ <string name="qs_tile_edit_header_instruction">Pritisnite i držite pločicu za uređivanje</string>
+ <string name="quick_settings_edit_label">Uredi pločice</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Nije moguće obrisati Uredi pločice</string>
+ <string name="qs_tiles_reset_confirmation">Vratiti pločice brzih postavki na zadano?</string>
+ <string name="quick_settings_tile_reset_to_default">Vraćanje na zadani izgled</string>
+ <string name="quick_settings_title_header">Zaglavlje</string>
+ <string name="quick_settings_title_tiles">Pločice</string>
+ <string name="quick_settings_title_show_weather">Pokaži prognozu</string>
+ <string name="quick_settings_title_show_brightness_slider">Pokaži klizač osvjetljenja</string>
+ <string name="quick_settings_title_enlarge_first_row">Povećaj prvi red</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Ovo drži u pogledu dok ne otkvačite. Dodirnite i držite gumb natrag da bi otkvačili.</string>
+ <string name="quick_settings_custom_tile_detail_title">Prilagodljive pločice</string>
+ <string name="quick_settings_remove">Uklanjanje pločice</string>
+ <string name="quick_settings_network_adb_label">ADB preko mreže</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profili sustava</string>
+ <string name="quick_settings_profiles_off">Profili onemogućeni</string>
+ <string name="quick_settings_heads_up_label">Plutajuće obavijesti</string>
+ <string name="quick_settings_battery_saver_label">Ušteda baterije</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Štednja baterije (punjenje)</string>
+ <string name="quick_settings_caffeine_label">Kofein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinkronizacija isključena.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinkronizacija uključena.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinkronizacija je isključena.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinkronizacija je uključena.</string>
+ <string name="quick_settings_sync_label">Sinkroniziranje</string>
+ <string name="quick_settings_volume_panel_label">Zvučna ploča</string>
+ <string name="quick_settings_usb_tether_label">USB dijeljenje veze</string>
+ <string name="quick_settings_screen_timeout_detail_title">Vrijeme do gašenja zaslona</string>
+ <string name="quick_settings_lockscreen_label">Zaključani zaslon</string>
+ <string name="quick_settings_ambient_display_label">Ambijentni zaslon</string>
+ <string name="quick_settings_lockscreen_label_enforced">Provođenje zaključavanja zaslona</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Onemogućeno od strane profila</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Isključivanje zaslona: <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Isključivanje zaslona promijenjeno u <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <string name="qs_tile_performance">Način rada baterije</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Baterija: način uštede energije.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Baterija: uravnoteženo.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Baterija: performanse.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Baterija: učinkoviti način.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Baterija: brzo.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Rad baterije promijenjen u način uštede.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Rad baterije promijenjen u uravnotežen način.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Rad baterije promijenjen u performanse.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Način baterije promijenjen u učinkoviti.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Način baterije promijenjen u brzi.</string>
+ <string name="quick_settings_performance_profile_detail_title">Način rada baterije</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Zaključani zaslon isključen.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Zaključani zaslon uključen.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Zaključani zaslon je isključen.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Zaključani zaslon je uključen.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambijentni zaslon isključen.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambijentni zaslon uključen.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambijentni zaslon je isključen.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambijentni zaslon je uključen.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Plutajuće su obavijesti isključene.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Plutajuće su obavijesti uključene.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Plutajuće su obavijesti isključene.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Plutajuće su obavijesti uključene.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofein isključen.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofein uključen.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Ušteda baterije isključena.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Ušteda baterije uključena.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Ušteda baterije je isključena.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Ušteda baterije je uključena.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamične pločice</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Sljedeći alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME za odabir</string>
+ <string name="dynamic_qs_tile_su_label">Root pristup</string>
+ <string name="dynamic_qs_tile_themes_label">Teme</string>
+ <string name="quick_settings_title_advanced_location">Način lokacije</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Prijavljivanje lokacije: štednja baterije.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Prijavljivanje lokacije: samo senzori.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Prijavljivanje lokacije: visoka preciznost.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Način rada lokacije</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Štednja baterije</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Samo uređaj</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Visoka preciznost</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Prijavljivanje lokacije promijenjeno u način uštede baterije.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Prijavljivanje lokacije promijenjeno u samo senzori.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Prijavljivanje lokacije promijenjeno u način visoke preciznosti.</string>
+ <string name="quick_settings_tiles_category_system">Sistemske pločice</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Dodaj pločicu</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Nije moguće povezivanje s mobilnim mrežama dok je omogućen način rada u zrakoplovu. Onemogućite način rada u zrakoplovu i pokušajte ponovno.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Svjetiljka je uključena</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Dodirnite za isključivanje</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klijent</item>
+ <item quantity="few">%1$d klijenta</item>
+ <item quantity="other">%1$d klijenata</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Nema SIM podatkovne kartice</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dock baterija <xliff:g id="number">%d</xliff:g> postotak.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Prikaži listu za reprodukciju</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Prijeđite prstom prema dolje da biste proširili</string>
+ <string name="swipe_left_hint">Prijeđite prstom lijevo za <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Prijeđite prstom desno za obavijesti</string>
+</resources>
diff --git a/packages/SystemUI/res/values-hu/cm_arrays.xml b/packages/SystemUI/res/values-hu/cm_arrays.xml
new file mode 100644
index 0000000..9ff5fe9
--- /dev/null
+++ b/packages/SystemUI/res/values-hu/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>É</item>
+ <!-- North -->
+ <item>ÉK</item>
+ <!-- North east -->
+ <item>K</item>
+ <!-- East -->
+ <item>DK</item>
+ <!-- South east -->
+ <item>D</item>
+ <!-- South -->
+ <item>DNy</item>
+ <!-- South west -->
+ <item>Ny</item>
+ <!-- West -->
+ <item>ÉNy</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-hu/cm_strings.xml b/packages/SystemUI/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..cbc98da
--- /dev/null
+++ b/packages/SystemUI/res/values-hu/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Csúsztasson jobbra ezért: %1$s</string>
+ <string name="right_shortcut_hint">Csúsztasson balra ezért: %1$s</string>
+ <string name="lockscreen_message">Érintsen meg egy ikont jobb vagy bal oldalt a zárképernyő hivatkozások ismételt hozzárendeléséhez.</string>
+ <string name="lockscreen_default_target">Alapértelmezett</string>
+ <string name="select_application">Válasszon alkalmazást</string>
+ <string name="lockscreen_choose_action_title">Válasszon eseményt</string>
+ <string name="lockscreen_none_target">Nincs</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Válasszon eseményt</string>
+ <string name="navbar_home_button">Kezdőgomb</string>
+ <string name="navbar_recent_button">Alkalmazás előzmények gomb</string>
+ <string name="navbar_search_button">Keresés gomb</string>
+ <string name="navbar_back_button">Vissza gomb</string>
+ <string name="navbar_empty_button">Üres gomb</string>
+ <string name="navbar_menu_conditional_button">Menü (auto elrejtés)</string>
+ <string name="navbar_menu_always_button">Menü (mindig látszik)</string>
+ <string name="navbar_menu_big_button">Menü gomb</string>
+ <string name="accessibility_dpad_left">Kurzor balra</string>
+ <string name="accessibility_dpad_right">Kurzor jobbra</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Alkalmazások adatok törlése</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Kényszerített leállítás</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Eltávolítás</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">LED fényereje</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profilok ki.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profilok kikapcsolva.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil megváltoztatva: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializálás\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">LED beállítások</string>
+ <string name="led_notification_text">LED fény engedélyezve</string>
+ <string name="qs_tile_edit_header_instruction">Nyomja meg és tartsa nyomva a csempéket az átrendezéséhez</string>
+ <string name="quick_settings_edit_label">Csempék szerkesztése</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Szerkesztési csempe nem távolítható el</string>
+ <string name="qs_tiles_reset_confirmation">Gyors beállítások csempéinek visszaállítása alapértelmezett konfigurációra?</string>
+ <string name="quick_settings_tile_reset_to_default">Visszaállítás az alapértelmezett elrendezésre</string>
+ <string name="quick_settings_title_header">Fejléc</string>
+ <string name="quick_settings_title_tiles">Csempék</string>
+ <string name="quick_settings_title_show_weather">Időjárás megjelenítése</string>
+ <string name="quick_settings_title_show_brightness_slider">Fényerő csúszka megjelenítése</string>
+ <string name="quick_settings_title_enlarge_first_row">Első sor nagyítása</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Ez a nézetben tartja, amíg a rögzítést fel nem oldja. Érintse meg és tartsa nyomva a Vissza gombot a rögzítés feloldásához.</string>
+ <string name="quick_settings_custom_tile_detail_title">Egyéni csempe</string>
+ <string name="quick_settings_remove">Csempe eltávolítása</string>
+ <string name="quick_settings_network_adb_label">ADB hálózaton keresztül</string>
+ <string name="quick_settings_compass_label">Iránytű</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Rendszer profilok</string>
+ <string name="quick_settings_profiles_off">Profilok letiltva</string>
+ <string name="quick_settings_heads_up_label">Lebegő értesítés</string>
+ <string name="quick_settings_battery_saver_label">Akkumulátor kímélő</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Akkumulátor kímélő (töltés)</string>
+ <string name="quick_settings_caffeine_label">Caffeine</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Szinkronizálás ki.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Szinkronizálás be.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Szinkronizálás kikapcsolva.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Szinkronizálás bekapcsolva.</string>
+ <string name="quick_settings_sync_label">Szinkronizálás</string>
+ <string name="quick_settings_volume_panel_label">Hangerőszabályzás</string>
+ <string name="quick_settings_usb_tether_label">USB megosztás</string>
+ <string name="quick_settings_screen_timeout_detail_title">Képernyő időkorlátja</string>
+ <string name="quick_settings_lockscreen_label">Képernyő zárolás</string>
+ <string name="quick_settings_ambient_display_label">Környezeti kijelző</string>
+ <string name="quick_settings_lockscreen_label_enforced">A képernyő zárolásának kényszerítése</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Profil által letiltva</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Képernyő időkorlát: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Képernyő időkorlátja megváltoztatva: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Akkumulátor mód</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Akkumulátor mód: energiatakarékos.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Akkumulátor mód: kiegyensúlyozott.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Akkumulátor mód: teljesítménycentrikus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Akkumulátor mód: hatékony mód.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Akkumulátor mód: teljesítmény mód.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Akkumulátor mód energiatakarékosra változtatva.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Akkumulátor mód kiegyensúlyozottra változtatva.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Akkumulátor mód teljesítménycentrikusra változtatva.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Akkumulátor mód átváltva hatékony módra.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Akkumulátor mód átváltva teljesítmény módra.</string>
+ <string name="quick_settings_performance_profile_detail_title">Akkumulátor mód</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Képernyőzár ki.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Képernyőzár be.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Képernyőzár kikapcsolva.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Képernyőzár bekapcsolva.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Környezeti kijelző ki.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Környezeti kijelző be.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Környezeti kijelző kikapcsolva.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Környezeti kijelző bekapcsolva.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Lebegő értesítés ki.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Lebegő értesítés be.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Lebegő értesítés kikapcsolva.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Lebegő értesítés bekapcsolva.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Caffeine ki.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Caffeine be.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Akkumulátor kímélő ki.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Akkumulátor kímélő be.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Akkumulátor kímélő kikapcsolva.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Akkumulátor kímélő bekapcsolva.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamikus csempe</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Következő riasztás</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME választó</string>
+ <string name="dynamic_qs_tile_su_label">Rendszergazda hozzáférés</string>
+ <string name="dynamic_qs_tile_themes_label">Témák</string>
+ <string name="quick_settings_title_advanced_location">Bővített helymeghatározás</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Helymeghatározás jelentése: energiatakarékos.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Helymeghatározás jelentése: csak GPS.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Helymeghatározás jelentése: nagyon pontos.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Helymeghatározási módok</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Energiatakarékos</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Csak készülék</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Nagy pontosság</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Helymeghatározás jelentése energiatakarékosra változtatva.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Helymeghatározás jelentése csak GPS-re változtatva.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Helymeghatározás jelentése nagyon pontosra változtatva.</string>
+ <string name="quick_settings_tiles_category_system">Rendszer csempék</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Csempe hozzáadása</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Nem lehet csatlakozni a mobil hálózatokra, míg a repülőgép üzemmód engedélyezve van. Tiltsa le a repülőgép üzemmódot és próbálja újra.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Zseblámpa bekapcsolva</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Kikapcsoláshoz érintse meg</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d kliens</item>
+ <item quantity="other">%1$d kliens</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Nincs adat SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dokkoló akkumulátor: <xliff:g id="number">%d</xliff:g> százalék.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Lejátszási lista megjelenítése</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Csúsztasson lefelé a kiterjesztéshez</string>
+ <string name="swipe_left_hint">Csúsztasson balra: <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Csúsztasson jobbra az értesítésekhez</string>
+</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/cm_arrays.xml b/packages/SystemUI/res/values-hy-rAM/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-hy-rAM/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/cm_strings.xml b/packages/SystemUI/res/values-hy-rAM/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-hy-rAM/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index d6052eaf..b7ab2b5 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -422,12 +422,12 @@
<string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Թեժ կետ"</string>
<string name="accessibility_managed_profile" msgid="6613641363112584120">"Աշխատանքային պրոֆիլ"</string>
<string name="tuner_warning_title" msgid="7094689930793031682">"Զվարճանք մեկ՝ որոշակի մարդու համար"</string>
- <string name="tuner_warning" msgid="8730648121973575701">"Համակարգի ՕՄ-ի կարգավորիչը հնարավորություն է տալիս հարմարեցնել Android-ի օգտվողի միջերեսը: Այս փորձնական գործառույթները կարող են հետագա թողարկումների մեջ փոփոխվել, խափանվել կամ ընդհանրապես չհայտնվել: Եթե շարունակում եք, զգուշացեք:"</string>
+ <string name="tuner_warning" msgid="8730648121973575701">"Համակարգի ՕՄ-ի ընդունիչը հնարավորություն է տալիս հարմարեցնել Android-ի օգտվողի միջերեսը: Այս փորձնական գործառույթները կարող են հետագա թողարկումների մեջ փոփոխվել, խափանվել կամ ընդհանրապես չհայտնվել: Եթե շարունակում եք, զգուշացեք:"</string>
<string name="tuner_persistent_warning" msgid="8597333795565621795">"Այս փորձնական գործառույթները կարող են հետագա թողարկումների մեջ փոփոխվել, խափանվել կամ ընդհանրապես չհայտնվել: Եթե շարունակում եք, զգուշացեք:"</string>
<string name="got_it" msgid="2239653834387972602">"Հասկանալի է"</string>
- <string name="tuner_toast" msgid="603429811084428439">"Համակարգի ՕՄ-ի կարգավորիչը ավելացվել է կարգավորումներին"</string>
+ <string name="tuner_toast" msgid="603429811084428439">"Համակարգի ՕՄ-ի ընդունիչը ավելացվել է կարգավորումներին"</string>
<string name="remove_from_settings" msgid="8389591916603406378">"Հեռացնել կարգավորումներից"</string>
- <string name="remove_from_settings_prompt" msgid="6069085993355887748">"Հեռացնե՞լ Համակարգի ՕՄ-ի կարգավորիչը կարգավորումներից և չօգտվել այլևս նրա գործառույթներից:"</string>
+ <string name="remove_from_settings_prompt" msgid="6069085993355887748">"Հեռացնե՞լ Համակարգի ՕՄ-ի ընդունիչը կարգավորումներից և չօգտվել այլևս նրա գործառույթներից:"</string>
<string name="enable_bluetooth_title" msgid="5027037706500635269">"Միացնե՞լ Bluetooth-ը:"</string>
<string name="enable_bluetooth_message" msgid="9106595990708985385">"Ստեղնաշարը ձեր պլանշետին միացնելու համար նախ անհրաժեշտ է միացնել Bluetooth-ը:"</string>
<string name="enable_bluetooth_confirmation_ok" msgid="6258074250948309715">"Միացնել"</string>
diff --git a/packages/SystemUI/res/values-in/cm_arrays.xml b/packages/SystemUI/res/values-in/cm_arrays.xml
new file mode 100644
index 0000000..279bb0d
--- /dev/null
+++ b/packages/SystemUI/res/values-in/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>U</item>
+ <!-- North -->
+ <item>TL</item>
+ <!-- North east -->
+ <item>T</item>
+ <!-- East -->
+ <item>TG</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>BD</item>
+ <!-- South west -->
+ <item>B</item>
+ <!-- West -->
+ <item>BL</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-in/cm_strings.xml b/packages/SystemUI/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..38880b4
--- /dev/null
+++ b/packages/SystemUI/res/values-in/cm_strings.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Geser ke kanan untuk %1$s</string>
+ <string name="right_shortcut_hint">Geser ke kiri untuk %1$s</string>
+ <string name="lockscreen_message">Ketuk ikon di sebelah kiri atau kanan untuk menugaskan kembali pintasan layar kunci.</string>
+ <string name="lockscreen_default_target">Standar</string>
+ <string name="select_application">Pilih aplikasi</string>
+ <string name="lockscreen_choose_action_title">Pilih tindakan</string>
+ <string name="lockscreen_none_target">Tidak Ada</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Pilih tindakan untuk ditambahkan</string>
+ <string name="navbar_home_button">Tombol beranda</string>
+ <string name="navbar_recent_button">Tombol riwayat</string>
+ <string name="navbar_search_button">Tombol penelusuran</string>
+ <string name="navbar_back_button">Tombol kembali</string>
+ <string name="navbar_empty_button">Tombol kosong</string>
+ <string name="navbar_menu_conditional_button">Tombol menu (sembunyi otomatis)</string>
+ <string name="navbar_menu_always_button">Tombol menu (selalu tampil)</string>
+ <string name="navbar_menu_big_button">Tombol menu</string>
+ <string name="accessibility_dpad_left">Kursor kiri</string>
+ <string name="accessibility_dpad_right">Kursor kanan</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Hapus data aplikasi</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Paksa berhenti</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Hapus instalasi</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Kecerahan cahaya</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profil mati.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profil dimatikan.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil diubah menjadi <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Menginisialisasi\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Pengaturan cahaya</string>
+ <string name="led_notification_text">Lampu LED diaktifkan oleh pengaturan</string>
+ <string name="qs_tile_edit_header_instruction">Tekan dan tahan tile untuk mengatur ulang</string>
+ <string name="quick_settings_edit_label">Edit tile</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Tidak dapat menghapus tile</string>
+ <string name="qs_tiles_reset_confirmation">Setel ulang pengaturan tile ke konfigurasi standar?</string>
+ <string name="quick_settings_tile_reset_to_default">Atur ulang ke standar</string>
+ <string name="quick_settings_title_header">Kepala</string>
+ <string name="quick_settings_title_tiles">Tiles</string>
+ <string name="quick_settings_title_show_weather">Tampilkan cuaca</string>
+ <string name="quick_settings_title_show_brightness_slider">Tampilkan panel kecerahan</string>
+ <string name="quick_settings_title_enlarge_first_row">Perbesar baris pertama</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Hal ini membuatnya tetap dalam pandangan sampai Anda melepas sematan. Sentuh dan tahan tombol kembali untuk melepas sematan.</string>
+ <string name="quick_settings_custom_tile_detail_title">Tile kustom</string>
+ <string name="quick_settings_remove">Hapus tile</string>
+ <string name="quick_settings_network_adb_label">ADB melalui jaringan</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profil sistem</string>
+ <string name="quick_settings_profiles_off">Profil dimatikan</string>
+ <string name="quick_settings_heads_up_label">Notifikasi mengambang</string>
+ <string name="quick_settings_battery_saver_label">Penghemat baterai</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Penghemat baterai (mengisi)</string>
+ <string name="quick_settings_caffeine_label">Kafein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinkronisasi mati.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinkronisasi hidup.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinkronisasi dimatikan.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinkronisasi dihidupkan.</string>
+ <string name="quick_settings_sync_label">Sinkronisasi</string>
+ <string name="quick_settings_volume_panel_label">Panel volume</string>
+ <string name="quick_settings_usb_tether_label">Tethering USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Waktu layar mati</string>
+ <string name="quick_settings_lockscreen_label">Kunci layar</string>
+ <string name="quick_settings_ambient_display_label">Tampilan ambien</string>
+ <string name="quick_settings_lockscreen_label_enforced">Kunci layar diterapkan</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Dimatikan oleh profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Batas waktu layar: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Batas waktu layar diubah menjadi <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Mode Baterai</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Mode baterai: hemat daya.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Mode Baterai: seimbang.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Mode Baterai: Performa.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Mode baterai: efisien.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Mode baterai: mode cepat.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Mode baterai diubah menjadi mode hemat daya.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Mode baterai diubah menjadi mode seimbang.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Mode baterai diubah menjadi mode performa.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Mode baterai diubah menjadi mode efisien.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Mode baterai diubah menjadi mode cepat.</string>
+ <string name="quick_settings_performance_profile_detail_title">Mode Baterai</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Kunci layar mati.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Kunci layar hidup.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Kunci layar dimatikan.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Kunci layar dihidupkan.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Tampilan ambien mati.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Tampilan ambien hidup.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Tampilan ambien dimatikan.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Tampilan ambien dihidupkan.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Notifikasi mengambang mati.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Notifikasi mengambang hidup.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Notifikasi mengambang dimatikan.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Notifikasi mengambang dihidupkan.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kafein mati.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kafein hidup.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Penghemat baterai mati.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Penghemat baterai hidup.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Penghemat baterai dimatikan.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Penghemat baterai dihidupkan.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Tile Dinamis</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Alarm selanjutnya</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Pemilih IME</string>
+ <string name="dynamic_qs_tile_su_label">Akses root</string>
+ <string name="quick_settings_title_advanced_location">Lokasi Tri-state</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Laporan Lokasi: mode hemat baterai.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Laporan Lokasi: mode hanya sensor.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Laporan Lokasi: mode akurasi tinggi.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Mode lokasi</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Hemat baterai</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Hanya perangkat</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Akurasi tinggi</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Laporan lokasi diubah menjadi mode hemat baterai.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Laporan lokasi diubah menjadi mode hanya sensor.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Laporan lokasi diubah menjadi mode akurasi tinggi.</string>
+ <string name="quick_settings_tiles_category_system">Tiles sistem</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Tambahkan tile</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Tidak dapat tersambung ke jaringan seluler ketika mode Pesawat diaktifkan. Nonaktifkan mode Pesawat dan coba lagi.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Senter aktif</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Ketuk untuk mematikan</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d klien</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Tidak ada data SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dok baterai <xliff:g id="number">%d</xliff:g> persen.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Tampilkan antrean</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g><xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Geser ke bawah untuk memperluas</string>
+ <string name="swipe_left_hint">Geser ke kiri untuk <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Geser ke kanan untuk notifikasi</string>
+</resources>
diff --git a/packages/SystemUI/res/values-is-rIS/cm_arrays.xml b/packages/SystemUI/res/values-is-rIS/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-is-rIS/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-is-rIS/cm_strings.xml b/packages/SystemUI/res/values-is-rIS/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-is-rIS/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-it/cm_arrays.xml b/packages/SystemUI/res/values-it/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-it/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-it/cm_strings.xml b/packages/SystemUI/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..9b3a5d4
--- /dev/null
+++ b/packages/SystemUI/res/values-it/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Scorri a destra per %1$s</string>
+ <string name="right_shortcut_hint">Scorri a sinistra per %1$s</string>
+ <string name="lockscreen_message">Tocca un\'icona per riassegnare un collegamento alla schermata di blocco.</string>
+ <string name="lockscreen_default_target">Predefinito</string>
+ <string name="select_application">Seleziona applicazione</string>
+ <string name="lockscreen_choose_action_title">Scegli un\'azione</string>
+ <string name="lockscreen_none_target">Nessuno</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Azione da associare</string>
+ <string name="navbar_home_button">Pulsante Home</string>
+ <string name="navbar_recent_button">Pulsante Recenti</string>
+ <string name="navbar_search_button">Pulsante Cerca</string>
+ <string name="navbar_back_button">Pulsante Indietro</string>
+ <string name="navbar_empty_button">Pulsante vuoto</string>
+ <string name="navbar_menu_conditional_button">Pulsante Menu (automatico)</string>
+ <string name="navbar_menu_always_button">Pulsante Menu (fisso)</string>
+ <string name="navbar_menu_big_button">Pulsante Menu</string>
+ <string name="accessibility_dpad_left">Cursore a sinistra</string>
+ <string name="accessibility_dpad_right">Cursore a destra</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Cancella dati</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Arresto forzato</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Disinstalla</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Luminosità</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profili OFF.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profilo: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profili disattivati.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profilo cambiato in <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inizializzazione\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Impostazioni luci</string>
+ <string name="led_notification_text">Luce notifica attivata dalle impostazioni</string>
+ <string name="qs_tile_edit_header_instruction">Premi e trascina i tile per riordinarli</string>
+ <string name="quick_settings_edit_label">Modifica tile</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Non puoi rimuovere Modifica tile</string>
+ <string name="qs_tiles_reset_confirmation">Ripristinare la configurazione dei tile predefinita?</string>
+ <string name="quick_settings_tile_reset_to_default">Ripristina il layout predefinito</string>
+ <string name="quick_settings_title_header">Intestazione</string>
+ <string name="quick_settings_title_tiles">Tile</string>
+ <string name="quick_settings_title_show_weather">Mostra meteo</string>
+ <string name="quick_settings_title_show_brightness_slider">Visualizza selettore luminosità</string>
+ <string name="quick_settings_title_enlarge_first_row">Allarga la prima riga</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Tienilo in vista fino a quando non sblocchi. Tieni premuto il tasto Indietro per sbloccare.</string>
+ <string name="quick_settings_custom_tile_detail_title">Tile personalizzato</string>
+ <string name="quick_settings_remove">Rimuovi tile</string>
+ <string name="quick_settings_network_adb_label">ADB attraverso la rete</string>
+ <string name="quick_settings_compass_label">Bussola</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profili di sistema</string>
+ <string name="quick_settings_profiles_off">Profili disattivati</string>
+ <string name="quick_settings_heads_up_label">Heads Up</string>
+ <string name="quick_settings_battery_saver_label">Risparmio batteria</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Risparmio batteria (ricarica)</string>
+ <string name="quick_settings_caffeine_label">Caffeina</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronia OFF</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronia ON.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronizzazione spenta.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronizzazione attivata.</string>
+ <string name="quick_settings_sync_label">Sincronizzazione</string>
+ <string name="quick_settings_volume_panel_label">Pannello volume</string>
+ <string name="quick_settings_usb_tether_label">Tethering USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Sospensione schermo</string>
+ <string name="quick_settings_lockscreen_label">Schermata di blocco</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Schermata di blocco forzata</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Disattivato da profilo</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Sospensione schermo: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Sospensione schermo cambiato in <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Profilo batteria</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Profilo batteria: risparmio energetico.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Profilo batteria: bilanciato.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Profilo batteria: prestazioni.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Profilo batteria: efficienza.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Profilo batteria: rapido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Profilo batteria cambiato in risparmio energetico.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Profilo batteria cambiato in bilanciato.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Profilo batteria cambiato in prestazioni.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Profilo batteria cambiato in efficienza.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Profilo batteria cambiato in rapido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Profilo batteria</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Blocco schermo OFF.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Blocco schermo ON.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Blocco schermo disattivato.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Blocco schermo attivato.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display disattivato.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display attivato.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display disattivato.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display attivato.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads Up disattivato.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads Up attivo.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads Up disattivato.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads Up attivato.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Caffeina off.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Caffeina on.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Risparmio batteria OFF.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Risparmio batteria ON.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Risparmio batteria disattivato.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Risparmio batteria attivato.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Tile dinamici</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Prossima sveglia</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selettore IME</string>
+ <string name="dynamic_qs_tile_su_label">Accesso root</string>
+ <string name="dynamic_qs_tile_themes_label">Temi</string>
+ <string name="quick_settings_title_advanced_location">Localizzazione avanzata</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Geolocalizzazione: modalità risparmio batteria.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Geolocalizzazione: modalità solo sensori.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Geolocalizzazione: modalità alta precisione.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Geolocalizzazione</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Risparmio batteria</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Solo dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisione</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Segnalatore posizione cambiato in modalità risparmio batteria.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Segnalatore posizione cambiato in modalità solo sensori.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Segnalatore posizione cambiato in modalità alta precisione.</string>
+ <string name="quick_settings_tiles_category_system">Tile di sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Aggiungi tile</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Impossibile connettersi alle reti mobili quando la modalità aereo è attiva. Disattiva la modalità aereo e riprova.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Torcia accesa</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tocca per spegnere</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d client</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">SIM senza dati mobili</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batteria Dock <xliff:g id="number">%d</xliff:g> percento.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Visualizza coda di riproduzione</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Scorri verso il basso per espandere</string>
+ <string name="swipe_left_hint">Scorri verso sinistra per <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Scorri verso destra per notifiche</string>
+</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index d661cbf..5ba6eca 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modalità aereo."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Nessuna SIM presente."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio rete operatore."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteria: <xliff:g id="NUMBER">%d</xliff:g> percento."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Impostazioni di sistema."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifiche."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Cancella notifica."</string>
diff --git a/packages/SystemUI/res/values-iw/cm_arrays.xml b/packages/SystemUI/res/values-iw/cm_arrays.xml
new file mode 100644
index 0000000..a673711
--- /dev/null
+++ b/packages/SystemUI/res/values-iw/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>צפ\'</item>
+ <!-- North -->
+ <item>צפ\'-מז\'</item>
+ <!-- North east -->
+ <item>מז\'</item>
+ <!-- East -->
+ <item>דר\'-מז\'</item>
+ <!-- South east -->
+ <item>דר\'</item>
+ <!-- South -->
+ <item>דר\'-מע\'</item>
+ <!-- South west -->
+ <item>מע\'</item>
+ <!-- West -->
+ <item>צפ\'-מע\'</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-iw/cm_strings.xml b/packages/SystemUI/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..1f1d051
--- /dev/null
+++ b/packages/SystemUI/res/values-iw/cm_strings.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">החלק ימינה ל- %1$s</string>
+ <string name="right_shortcut_hint">החלקה שמאלה ל- %1$s</string>
+ <string name="lockscreen_message">הקש על סמל בצד שמאל או ימין כדי להקצות מחדש קיצור דרך של מסך הנעילה.</string>
+ <string name="lockscreen_default_target">ברירת מחדל</string>
+ <string name="select_application">בחר יישום</string>
+ <string name="lockscreen_choose_action_title">בחר פעולה</string>
+ <string name="lockscreen_none_target">ללא</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">בחירת הפעולה להקצאה</string>
+ <string name="navbar_home_button">לחצן הבית</string>
+ <string name="navbar_recent_button">לחצן יישומים אחרונים</string>
+ <string name="navbar_search_button">לחצן חיפוש</string>
+ <string name="navbar_back_button">לחצן \"הקודם\"</string>
+ <string name="navbar_empty_button">לחצן ריק</string>
+ <string name="navbar_menu_conditional_button">לחצן התפריט (הסתר אוטומטית)</string>
+ <string name="navbar_menu_always_button">לחצן התפריט (הצג תמיד)</string>
+ <string name="navbar_menu_big_button">לחצן התפריט</string>
+ <string name="accessibility_dpad_left">סמן שמאלה</string>
+ <string name="accessibility_dpad_right">סמן ימינה</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">מחק נתוני יישום</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">אלץ עצירה</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">הסרת התקנה</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">בהירות נורית</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">פרופילים כבויים.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">פרופיל: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">פרופילים כובו.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">פרופיל שונה ל-<xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">מאתחל\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">הגדרות נורית</string>
+ <string name="led_notification_text">נורית LED מופעלת על ידי ההגדרות</string>
+ <string name="qs_tile_edit_header_instruction">לחץ והחזק באריחים לסידור מחדש</string>
+ <string name="quick_settings_edit_label">ערוך אריחים</string>
+ <string name="quick_settings_cannot_delete_edit_tile">לא ניתן למחוק את אריח העריכה</string>
+ <string name="qs_tiles_reset_confirmation">לאפס את אריחי ההגדרות המהירות לברירת המחדל?</string>
+ <string name="quick_settings_tile_reset_to_default">איפוס לפריסת ברירת המחדל</string>
+ <string name="quick_settings_title_header">כותרת</string>
+ <string name="quick_settings_title_tiles">אריחים</string>
+ <string name="quick_settings_title_show_weather">הצג מזג אוויר</string>
+ <string name="quick_settings_title_show_brightness_slider">הצג מד בהירות</string>
+ <string name="quick_settings_title_enlarge_first_row">הגדל את השורה הראשונה</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">הפעולה שומרת זאת בתצוגה עד שתבטל את ההצמדה. גע והחזק את לחצן \"הקודם\" כדי לבטל את ההצמדה.</string>
+ <string name="quick_settings_custom_tile_detail_title">אריח מותאם אישית</string>
+ <string name="quick_settings_remove">הסר אריח</string>
+ <string name="quick_settings_network_adb_label">ADB דרך רשת</string>
+ <string name="quick_settings_compass_label">מצפן</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">פרופילי מערכת</string>
+ <string name="quick_settings_profiles_off">פרופילים מושבתים</string>
+ <string name="quick_settings_heads_up_label">התראות קופצות</string>
+ <string name="quick_settings_battery_saver_label">שומר סוללה</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">שומר הסוללה (בטעינה)</string>
+ <string name="quick_settings_caffeine_label">קפאין</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">סנכרון כבוי.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">סנכרון מופעל.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">סנכרון כובה.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">סנכרון הופעל.</string>
+ <string name="quick_settings_sync_label">סנכרון</string>
+ <string name="quick_settings_volume_panel_label">לוח עוצמת קול</string>
+ <string name="quick_settings_usb_tether_label">קשירת USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">זמן קצוב למסך</string>
+ <string name="quick_settings_lockscreen_label">מסך נעילה</string>
+ <string name="quick_settings_ambient_display_label">תצוגת התראות עמומה</string>
+ <string name="quick_settings_lockscreen_label_enforced">מסך הנעילה נאכף</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">הושבת על-ידי הפרופיל</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">משך זמן מסך: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">משך זמן מסך השתנה ל-<xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">מצב סוללה</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">מצב סוללה: מצב חיסכון סוללה.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">מצב סוללה: מצב מאוזן.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">מצב סוללה: מצב ביצועים.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">מצב סוללה: מצב יעילות.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">מצב סוללה: מצב מהיר.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">מצב הסוללה שונה למצב חיסכון סוללה.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">מצב הסוללה שונה למצב מאוזן.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">מצב הסוללה שונה למצב ביצועים.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">מצב סוללה שונה למצב יעילות.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">מצב סוללה שונה למצב מהיר.</string>
+ <string name="quick_settings_performance_profile_detail_title">מצב סוללה</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">מסך נעילה כבוי.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">מסך נעילה מופעל.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">מסך נעילה כובה.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">מסך נעילה הופעל.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">תצוגת התראות עמומה כבויה.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">תצוגת התראות עמומה פעילה.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">תצוגת התראות עמומה כובתה.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">תצוגת התראות עמומה הופעלה.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">התראות קופצות כבויות.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">התראות קופצות פעילות.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">התראות קופצות כובו.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">התראות קופצות הופעלו.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">קפאין כבוי.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">קפאין פועל.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">שומר סוללה כבוי.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">שומר סוללה מופעל.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">שומר סוללה כובה.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">שומר סוללה הופעל.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">אריחים דינמיים</string>
+ <string name="dynamic_qs_tile_next_alarm_label">השעון המעורר הבא</string>
+ <string name="dynamic_qs_tile_ime_selector_label">בורר שיטות קלט</string>
+ <string name="dynamic_qs_tile_su_label">גישת שורש</string>
+ <string name="dynamic_qs_tile_themes_label">ערכות עיצוב</string>
+ <string name="quick_settings_title_advanced_location">שלושה מצבי מיקום</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">דיווח מיקום: מצב חיסכון בסוללה.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">דיווח מיקום: מצב חיישנים בלבד.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">דיווח מיקום: מצב רמת דיוק גבוהה.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">מצב מיקום</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">חיסכון בסוללה</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">מכשיר בלבד</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">דיוק מרבי</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">דיווח מיקום השתנה למצב חיסכון סוללה.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">דיווח מיקום השתנה למצב חיישנים בלבד.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">דיווח מיקום השתנה למצב רמת דיוק גבוהה.</string>
+ <string name="quick_settings_tiles_category_system">אריחי מערכת</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">הוסף אריח</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">לא ניתן להתחבר לרשתות סלולריות כאשר מצב טיסה פעיל. השבת את מצב הטיסה ונסה שנית.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">פנס מופעל</string>
+ <string name="quick_settings_tile_flashlight_not_summary">הקש לכיבוי</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">לקוח %1$d</item>
+ <item quantity="two">%1$d לקוחות</item>
+ <item quantity="many">%1$d לקוחות</item>
+ <item quantity="other">%1$d לקוחות</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">אין נתוני SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">סוללה חיצונית - <xliff:g id="number">%d</xliff:g> אחוז.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">הצג תור השמעה</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">החלק מטה להרחבה</string>
+ <string name="swipe_left_hint">החלק שמאלה להפעלת <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">החלק ימינה להתראות</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ja/cm_arrays.xml b/packages/SystemUI/res/values-ja/cm_arrays.xml
new file mode 100644
index 0000000..46ed55e
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>北</item>
+ <!-- North -->
+ <item>北東</item>
+ <!-- North east -->
+ <item>東</item>
+ <!-- East -->
+ <item>南東</item>
+ <!-- South east -->
+ <item>南</item>
+ <!-- South -->
+ <item>南西</item>
+ <!-- South west -->
+ <item>西</item>
+ <!-- West -->
+ <item>北西</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ja/cm_strings.xml b/packages/SystemUI/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..8dd5869
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/cm_strings.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">右にスワイプして%1$s</string>
+ <string name="right_shortcut_hint">左にスワイプして%1$s</string>
+ <string name="lockscreen_message">左右のアイコンをタップしてロック画面のショートカットを変更します。</string>
+ <string name="lockscreen_default_target">デフォルト</string>
+ <string name="select_application">アプリケーションを選択</string>
+ <string name="lockscreen_choose_action_title">動作を選択</string>
+ <string name="lockscreen_none_target">なし</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">設定する動作を選択</string>
+ <string name="navbar_home_button">ホームボタン</string>
+ <string name="navbar_recent_button">最近使ったアプリボタン</string>
+ <string name="navbar_search_button">検索ボタン</string>
+ <string name="navbar_back_button">戻るボタン</string>
+ <string name="navbar_empty_button">ボタンなし</string>
+ <string name="navbar_menu_conditional_button">メニューボタン(自動非表示)</string>
+ <string name="navbar_menu_always_button">メニューボタン(常時表示)</string>
+ <string name="navbar_menu_big_button">メニューボタン</string>
+ <string name="accessibility_dpad_left">カーソルを左へ</string>
+ <string name="accessibility_dpad_right">カーソルを右へ</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">アプリのデータを消去</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">強制停止</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">アンインストール</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ライトの明るさ</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">プロファイルはOFFです。</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">プロファイル: <xliff:g id="profile" example="Default">%s</xliff:g>です。</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">プロファイルがOFFになりました。</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">プロファイルが<xliff:g id="profile" example="Default">%s</xliff:g>に変更されました。</string>
+ <string name="quick_settings_compass_init">初期化中\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">ライトの設定</string>
+ <string name="led_notification_text">LEDライトが設定によって有効になっています</string>
+ <string name="qs_tile_edit_header_instruction">タイルを長押しして並べ替えます</string>
+ <string name="quick_settings_edit_label">タイルを編集</string>
+ <string name="quick_settings_cannot_delete_edit_tile">編集タイルは削除できません</string>
+ <string name="qs_tiles_reset_confirmation">クイック設定タイルをデフォルトの設定に戻しますか?</string>
+ <string name="quick_settings_tile_reset_to_default">デフォルトのレイアウトに戻す</string>
+ <string name="quick_settings_title_header">ヘッダー</string>
+ <string name="quick_settings_title_tiles">タイル</string>
+ <string name="quick_settings_title_show_weather">天気を表示</string>
+ <string name="quick_settings_title_show_brightness_slider">明るさスライダーを表示</string>
+ <string name="quick_settings_title_enlarge_first_row">1行目を拡大</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">固定を解除するまで表示し続けます。固定を解除するには戻るボタンを押し続けます。</string>
+ <string name="quick_settings_custom_tile_detail_title">カスタムタイル</string>
+ <string name="quick_settings_remove">タイルを削除</string>
+ <string name="quick_settings_network_adb_label">ネットワーク経由のADB</string>
+ <string name="quick_settings_compass_label">コンパス</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">システムプロファイル</string>
+ <string name="quick_settings_profiles_off">プロファイル無効</string>
+ <string name="quick_settings_heads_up_label">ヘッドアップ</string>
+ <string name="quick_settings_battery_saver_label">バッテリーセーバー</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">バッテリーセーバー(充電中)</string>
+ <string name="quick_settings_caffeine_label">カフェイン</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">同期はOFFです。</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">同期はONです。</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">同期がOFFになりました。</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">同期がONになりました。</string>
+ <string name="quick_settings_sync_label">同期</string>
+ <string name="quick_settings_volume_panel_label">音量パネル</string>
+ <string name="quick_settings_usb_tether_label">USBテザリング</string>
+ <string name="quick_settings_screen_timeout_detail_title">画面のタイムアウト</string>
+ <string name="quick_settings_lockscreen_label">ロック画面</string>
+ <string name="quick_settings_ambient_display_label">常に画面表示ディスプレイ</string>
+ <string name="quick_settings_lockscreen_label_enforced">ロック画面強制</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">プロファイルによって無効になっています</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">画面のタイムアウト: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>です。</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">画面のタイムアウトが<xliff:g id="timeout" example="30 seconds">%s</xliff:g>に変更されました。</string>
+ <string name="qs_tile_performance">バッテリーモード</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">バッテリーモード: 省電力モードです。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">バッテリーモード: バランスモードです。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">バッテリーモード: パフォーマンスモードです。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">バッテリーモード: 効率モードです。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">バッテリーモード: クイックモードです。</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">バッテリーモードが省電力モードに変更されました。</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">バッテリーモードがバランスモードに変更されました。</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">バッテリーモードがパフォーマンスモードに変更されました。</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">バッテリーモードが効率モードに変更されました。</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">バッテリーモードがクイックモードに変更されました。</string>
+ <string name="quick_settings_performance_profile_detail_title">バッテリーモード</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">ロック画面はOFFです。</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">ロック画面はONです。</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">ロック画面がOFFになりました。</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">ロック画面がONになりました。</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">常に画面表示ディスプレイはOFFです。</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">常に画面表示ディスプレイはONです。</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">常に画面表示ディスプレイがOFFになりました。</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">常に画面表示ディスプレイがONになりました。</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">ヘッドアップはOFFです。</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">ヘッドアップはONです。</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">ヘッドアップがOFFになりました。</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">ヘッドアップがONになりました。</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">カフェインはOFFです。</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">カフェインはONです。</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">バッテリーセーバーはOFFです。</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">バッテリーセーバーはONです。</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">バッテリーセーバーがOFFになりました。</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">バッテリーセーバーがONになりました。</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">自動タイル</string>
+ <string name="dynamic_qs_tile_next_alarm_label">次のアラーム</string>
+ <string name="dynamic_qs_tile_ime_selector_label">入力方法の選択</string>
+ <string name="dynamic_qs_tile_su_label">ルートアクセス</string>
+ <string name="quick_settings_title_advanced_location">3方式の位置情報</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">位置情報レポート: バッテリー節約モードです。</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">位置情報レポート: 端末のみモードです。</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">位置情報レポート: 高精度モードです。</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">位置情報モード</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">バッテリー節約</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">端末のみ</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">高精度</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">位置情報レポートがバッテリー節約モードに変更されました。</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">位置情報レポートが端末のみモードに変更されました。</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">位置情報レポートが高精度モードに変更されました。</string>
+ <string name="quick_settings_tiles_category_system">システムのタイル</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">タイルを追加</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">機内モードが有効になっている間はモバイルネットワークに接続することはできません。機内モードを無効にしてから再試行してください。</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">フラッシュライトが点灯しています</string>
+ <string name="quick_settings_tile_flashlight_not_summary">タップして消灯する</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d台</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">データSIMなし</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ホルダーの電池は<xliff:g id="number">%d</xliff:g>パーセントです。</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">再生キューを表示</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="condition">%2$s</xliff:g> <xliff:g id="temp">%1$s</xliff:g></string>
+ <string name="expand_hint">下にスワイプして拡張</string>
+ <string name="swipe_left_hint">左にスワイプして<xliff:g id="app_name">%1$s</xliff:g>を起動</string>
+ <string name="swipe_right_hint">左にスワイプして通知を表示</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 7acc0ec..12185d9 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"機内モード。"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"SIMカードが挿入されていません。"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"携帯通信会社のネットワークを変更します。"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"電池残量: <xliff:g id="NUMBER">%d</xliff:g>パーセント"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"システム設定。"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"通知。"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"通知を消去。"</string>
diff --git a/packages/SystemUI/res/values-ka-rGE/cm_arrays.xml b/packages/SystemUI/res/values-ka-rGE/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ka-rGE/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ka-rGE/cm_strings.xml b/packages/SystemUI/res/values-ka-rGE/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ka-rGE/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/cm_arrays.xml b/packages/SystemUI/res/values-kk-rKZ/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-kk-rKZ/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/cm_strings.xml b/packages/SystemUI/res/values-kk-rKZ/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-kk-rKZ/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-km-rKH/cm_arrays.xml b/packages/SystemUI/res/values-km-rKH/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-km-rKH/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-km-rKH/cm_strings.xml b/packages/SystemUI/res/values-km-rKH/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-km-rKH/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/cm_arrays.xml b/packages/SystemUI/res/values-kn-rIN/cm_arrays.xml
new file mode 100644
index 0000000..65a842c
--- /dev/null
+++ b/packages/SystemUI/res/values-kn-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>ಉ</item>
+ <!-- North -->
+ <item>ಈಶಾ</item>
+ <!-- North east -->
+ <item>ಪೂ</item>
+ <!-- East -->
+ <item>ಆಗ್ನೇ</item>
+ <!-- South east -->
+ <item>ದ</item>
+ <!-- South -->
+ <item>ನೈಋ</item>
+ <!-- South west -->
+ <item>ಪ</item>
+ <!-- West -->
+ <item>ವಾಯು</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/cm_strings.xml b/packages/SystemUI/res/values-kn-rIN/cm_strings.xml
new file mode 100644
index 0000000..ed69527
--- /dev/null
+++ b/packages/SystemUI/res/values-kn-rIN/cm_strings.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$sಗಾಗಿ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ</string>
+ <string name="right_shortcut_hint">%1$sಗಾಗಿ ಎಡಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ</string>
+ <string name="lockscreen_message">ಲಾಕ್‌ ಸ್ಕ್ರೀನ್ ಶಾರ್ಟ್‌ಕಟ್‌ ಮರು ಅಸೈನ್‌ ಮಾಡಲು ಎಡ ಅಥವಾ ಬಲಕ್ಕೆ ಐಕಾನ್ ತಟ್ಟಿ.</string>
+ <string name="lockscreen_default_target">ಡೀಫಾಲ್ಟ್</string>
+ <string name="select_application">ಅಪ್ಲಿಕೇಶನ್ ಆಯ್ಕೆಮಾಡಿ</string>
+ <string name="lockscreen_choose_action_title">ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ</string>
+ <string name="lockscreen_none_target">ಶೂನ್ಯ</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">ನಿಯೋಜಿಸಲು ಕ್ರಿಯೆಯನ್ನು ಆರಿಸಿ</string>
+ <string name="navbar_home_button">ಹೋಮ್ ಬಟನ್</string>
+ <string name="navbar_recent_button">ಇತ್ತೀಚಿನ ಬಟನ್</string>
+ <string name="navbar_search_button">ಹುಡುಕು ಬಟನ್</string>
+ <string name="navbar_back_button">ಹಿಂದಕ್ಕೆ ಬಟನ್</string>
+ <string name="navbar_empty_button">ಖಾಲಿ ಬಟನ್</string>
+ <string name="navbar_menu_conditional_button">ಮೆನು (ಸ್ವಯಂಮರೆಯಾಗು) ಬಟನ್</string>
+ <string name="navbar_menu_always_button">ಮೆನು (ಎಂದಿಗುಪ್ರದರ್ಶಿಸು) ಬಟನ್</string>
+ <string name="navbar_menu_big_button">ಮೆನು ಬಟನ್</string>
+ <string name="accessibility_dpad_left">ಕರ್ಸರ್ ಎಡ</string>
+ <string name="accessibility_dpad_right">ಕರ್ಸರ್ ಬಲ</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ಆಪ್ ಡೇಟಾ ಅಳಿಸಿಹಾಕು</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">ಬಲವಂತ ನಿಲ್ಲಿಸು</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">ಅಸ್ಥಾಪಿಸು</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ಬೆಳಕಿನ ಪ್ರಖರತೆ</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">ಪ್ರೊಫೈಲ್ಸ್ ಆಫ್.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">ಪ್ರೊಫೈಲ್: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">ಪ್ರೊಫೈಲ್ಸ್ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">ಪ್ರೊಫೈಲ್ <xliff:g id="profile" example="Default">%s</xliff:g>ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <string name="quick_settings_compass_init">ಆರಂಭಿಸುತ್ತಿದೆ\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">ಲೈಟ್ ಸೆಟ್ಟಿಂಗ್ ಗಳು</string>
+ <string name="led_notification_text">LED ಲೈಟ್ ಶಕ್ತಗೊಂಡ ಸೆಟ್ಟಿಂಗ್ ಗಳು</string>
+ <string name="qs_tile_edit_header_instruction">ಮರುಹೊಂದಿಸಲು ಟೈಲ್‌ಗಳನ್ನು ಒತ್ತಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ</string>
+ <string name="quick_settings_edit_label">ಟೈಲ್‌ಗಳನ್ನು ಸಂಪಾದಿಸಿ</string>
+ <string name="quick_settings_cannot_delete_edit_tile">ಟೈಲ್‌ ಸಂಪಾದನೆಯನ್ನು ಅಳಿಸಲಾಗದು</string>
+ <string name="qs_tiles_reset_confirmation">ಡೀಫಾಲ್ಟ್‌ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ ಕ್ಷಿಪ್ರ ಸೆಟ್ಟಿಮಗ್‌ಗಳ ಟೈಲ್‌ಗಳನ್ನು ಮರು ಹೊಂದಿಸಿ?</string>
+ <string name="quick_settings_tile_reset_to_default">ಡೀಫಾಲ್ಟ್‌ ಲೇಔಟ್‌ಗೆ ಮರುಹೊಂದಿಸಿ</string>
+ <string name="quick_settings_title_header">ಶಿರೋಲೇಖ</string>
+ <string name="quick_settings_title_tiles">ಟೈಲ್‌ಗಳು</string>
+ <string name="quick_settings_title_show_weather">ಹವಾಮಾನ ಕಾಣಿಸಿ</string>
+ <string name="quick_settings_title_show_brightness_slider">ಪ್ರಕಾಶಮಾನ ಸ್ಲೈಡರ್‌ ತೋರಿಸಿ</string>
+ <string name="quick_settings_title_enlarge_first_row">ಮೊದಲ ಅಡ್ಡಸಾಲನ್ನು ದೊಡ್ಡದಾಗಿಸಿ</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">ಇದು ನೀವು ಅನ್‍ಪಿನ್ ಮಾಡುವವರೆಗೂ ವೀಕ್ಷಣೆಯಲ್ಲಿ ಇಡುತ್ತದೆ. ಅನ್‍ಪಿನ್ ಮಾಡಲು ಬ್ಯಾಕ್ ಬಟನ್ ಸ್ಪರ್ಶಿಸಿ ಹಿಡಿಯಿರಿ.</string>
+ <string name="quick_settings_custom_tile_detail_title">ಕಸ್ಟಮ್ ಟೈಲ್</string>
+ <string name="quick_settings_remove">ಟೈಲ್ ತೆಗೆ</string>
+ <string name="quick_settings_network_adb_label">ನೆಟ್‍ವರ್ಕ್ ಮೇಲೆ ಎಡಿಬಿ</string>
+ <string name="quick_settings_compass_label">ದಿಕ್ಸೂಚಿ</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">ಸಿಸ್ಟಂ ಪ್ರೊಫೈಲ್ಸ್</string>
+ <string name="quick_settings_profiles_off">ಪ್ರೊಫೈಲ್ಸ್ ನಿಷ್ಕ್ರೀಯಗೊಂಡಿದೆ</string>
+ <string name="quick_settings_heads_up_label">ಹೆಡ್ಸ್ ಅಪ್</string>
+ <string name="quick_settings_battery_saver_label">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">ಕ್ಯಾಫೀನ್</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">ಸಿಂಕ್ ಆಫ್.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">ಸಿಂಕ್ ಆನ್.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">ಸಿಂಕ್ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">ಸಿಂಕ್ ಆನ್ ಆಗಿದೆ.</string>
+ <string name="quick_settings_sync_label">ಸಿಂಕ್</string>
+ <string name="quick_settings_volume_panel_label">ವಾಲ್ಯೂಂ ಪ್ಯಾನೆಲ್</string>
+ <string name="quick_settings_usb_tether_label">ಯುಎಸ್‍ಬಿ ಟೆಥರಿಂಗ್</string>
+ <string name="quick_settings_screen_timeout_detail_title">ಪರದೆ ಅವಧಿಸಮಾಪ್ತಿ</string>
+ <string name="quick_settings_lockscreen_label">ಲಾಕ್ ಪರದೆ</string>
+ <string name="quick_settings_ambient_display_label">ಆವರಿಸಿದ ಪರದೆ</string>
+ <string name="quick_settings_lockscreen_label_enforced">ಒತ್ತಾಯವಾದ ಲಾಕ್ ಪರದೆ</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">ಪ್ರೊಫೈಲ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">ಪರದೆ ಅವಧಿಸಮಾಪ್ತಿ: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">ಪರದೆ ಅವಧಿಸಮಾಪ್ತಿ <xliff:g id="timeout" example="30 seconds">%s</xliff:g>ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <string name="qs_tile_performance">ಬ್ಯಾಟರಿ ಮೋಡ್</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">ಬ್ಯಾಟರಿ ಮೋಡ್: ವಿದ್ಯುತ್ ಉಳಿತಾಯ ಮೋಡ್.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">ಬ್ಯಾಟರಿ ಮೋಡ್: ಸಮತೋಲಿತ ಮೋಡ್.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">ಬ್ಯಾಟರಿ ಮೋಡ್: ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಮೋಡ್.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">ಬ್ಯಾಟರಿ ಮೋಡ್: ದಕ್ಷತೆ ಮೋಡ್.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">ಬ್ಯಾಟರಿ ಮೋಡ್: ತ್ವರಿತ ಮೋಡ್.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">ಬ್ಯಾಟರಿ ಮೋಡ್ ವಿದ್ಯುತ್ ಉಳಿತಾಯ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">ಬ್ಯಾಟರಿ ಮೋಡ್ ಸಮತೋಲಿತ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">ಬ್ಯಾಟರಿ ಮೋಡ್ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">ಬ್ಯಾಟರಿ ಮೋಡ್ ದಕ್ಷತೆ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">ಬ್ಯಾಟರಿ ಮೋಡ್ ತ್ವರಿತ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <string name="quick_settings_performance_profile_detail_title">ಬ್ಯಾಟರಿ ಮೋಡ್</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">ಲಾಕ್ ಪರದೆ ಆಫ್.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">ಲಾಕ್ ಪರದೆ ಆನ್.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">ಲಾಕ್ ಪರದೆ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">ಲಾಕ್ ಪರದೆ ಆನ್ ಆಗಿದೆ.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">ಆವರಿಸಿದ ಪರದೆ ಆಫ್.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">ಆವರಿಸಿದ ಪರದೆ ಆನ್.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">ಆವರಿಸಿದ ಪರದೆ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">ಆವರಿಸಿದ ಪರದೆ ಆನ್ ಆಗಿದೆ.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">ಹೆಡ್ಸ್ ಅಪ್ ಆಫ್.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">ಹೆಡ್ಸ್ ಅಪ್ ಆನ್.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">ಹೆಡ್ಸ್ ಅಪ್ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">ಹೆಡ್ಸ್ ಅಪ್ ಆನ್ ಆಗಿದೆ.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">ಕ್ಯಾಫೀನ್ ಆಫ್.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">ಕ್ಯಾಫೀನ್ ಒನ್.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಆಫ್.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಆನ್.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಆಫ್ ಆಗಿದೆ.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಆನ್ ಆಗಿದೆ.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ಕ್ರಿಯಾತ್ಮಕ ಟೈಲ್</string>
+ <string name="dynamic_qs_tile_next_alarm_label">ಮುಂದಿನ ಅಲಾರಂ</string>
+ <string name="dynamic_qs_tile_ime_selector_label">ಇಎಂಇ ಆಯ್ಕೆ</string>
+ <string name="dynamic_qs_tile_su_label">ರೂಟ್ ಪ್ರವೇಶ</string>
+ <string name="quick_settings_title_advanced_location">ಟ್ರೈ-ಸ್ಟೇಟ್‌ ಸ್ಥಳ</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">ಸ್ಥಳ ವರದಿಸಲ್ಲಿಸುವಿಕೆ: ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಮೋಡ್.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">ಸ್ಥಳ ವರದಿ ಸಲ್ಲಿಸುವಿಕೆ: ಸಂವೇದಕಗಳು ಮಾತ್ರ ಮೋಡ್.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">ಸ್ಥಳ ವರದಿಸಲ್ಲಿಸುವಿಕೆ: ಗರಿಷ್ಟ ನಿಖರತೆ ಮೋಡ್.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">ಸ್ಥಳ ಮೋಡ್</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">ಬ್ಯಾಟರಿ ಉಳಿತಾಯ</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">ಸಾಧನ ಮಾತ್ರ</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">ಗರಿಷ್ಠ ನಿಖರತೆ</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">ಸ್ಥಳ ವರದಿಸಲ್ಲಿಸುವಿಕೆ ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">ಸ್ಥಳ ವರದಿಸಲ್ಲಿಸುವಿಕೆ ಸಂವೇದಕಗಳು ಮಾತ್ರ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">ಸ್ಥಳ ವರದಿಸಲ್ಲಿಸುವಿಕೆ ಗರಿಷ್ಠ ನಿಖರತೆ ಮೋಡ್‍ಗೆ ಬದಲಾಗಿದೆ.</string>
+ <string name="quick_settings_tiles_category_system">ಸಿಸ್ಟಂ ಟೈಲ್‌ಗಳು</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">ಟೈಲ್‌ ಸೇರಿಸಿ</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">ಏರ್‌ಪ್ಲೇನ್‌ ಮೋಡ್‌ ಸಕ್ರಿಯವಾಗಿರುವ ವೇಳೆ ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಏರ್‌ಪ್ಲೇನ್‌ ಮೋಡ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ಫ್ಲ್ಯಾಶ್ಲೈಟ್ ಆನ್ ಆಗಿದೆ</string>
+ <string name="quick_settings_tile_flashlight_not_summary">ಆಫ್ ಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d ಕ್ಲೈಂಟ್</item>
+ <item quantity="other">%1$d ಕ್ಲೈಂಟ್</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ಡಾಕ್ ಬ್ಯಾಟರಿ <xliff:g id="number">%d</xliff:g> ಶೇಕಡಾ.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">ಪ್ಲೇ ಸರದಿಯನ್ನು ತೋರಿಸು</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ko/cm_arrays.xml b/packages/SystemUI/res/values-ko/cm_arrays.xml
new file mode 100644
index 0000000..8a3ff49
--- /dev/null
+++ b/packages/SystemUI/res/values-ko/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>북</item>
+ <!-- North -->
+ <item>북동</item>
+ <!-- North east -->
+ <item>동</item>
+ <!-- East -->
+ <item>남동</item>
+ <!-- South east -->
+ <item>남</item>
+ <!-- South -->
+ <item>남서</item>
+ <!-- South west -->
+ <item>서</item>
+ <!-- West -->
+ <item>북서</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ko/cm_strings.xml b/packages/SystemUI/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..bcc7dbd
--- /dev/null
+++ b/packages/SystemUI/res/values-ko/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">오른쪽으로 밀어서 %1$s</string>
+ <string name="right_shortcut_hint">왼쪽으로 밀어서 %1$s</string>
+ <string name="lockscreen_message">잠금화면 바로가기를 다시 지정하려면 왼쪽이나 오른쪽의 아이콘을 탭하세요.</string>
+ <string name="lockscreen_default_target">기본</string>
+ <string name="select_application">앱 선택</string>
+ <string name="lockscreen_choose_action_title">동작 선택</string>
+ <string name="lockscreen_none_target">없음</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">할당할 작업을 선택</string>
+ <string name="navbar_home_button">홈 버튼</string>
+ <string name="navbar_recent_button">최근 버튼</string>
+ <string name="navbar_search_button">검색 버튼</string>
+ <string name="navbar_back_button">뒤로 버튼</string>
+ <string name="navbar_empty_button">버튼 없음</string>
+ <string name="navbar_menu_conditional_button">메뉴 버튼 (자동 숨기기)</string>
+ <string name="navbar_menu_always_button">메뉴 버튼 (항상 보이기)</string>
+ <string name="navbar_menu_big_button">메뉴 버튼</string>
+ <string name="accessibility_dpad_left">커서 왼쪽</string>
+ <string name="accessibility_dpad_right">커서 오른쪽</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">앱 데이터 삭제</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">강제 종료</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">제거</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">조명 밝기</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">프로필 꺼짐.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">현재 프로필: <xliff:g id="profile" example="Default">%s</xliff:g></string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">프로필이 이제 꺼짐.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">프로필이 <xliff:g id="profile" example="Default">%s</xliff:g>으(로) 바뀜.</string>
+ <string name="quick_settings_compass_init">초기화 중\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">조명 설정</string>
+ <string name="led_notification_text">설정 앱이 LED 전등을 활성화함</string>
+ <string name="qs_tile_edit_header_instruction">다시 배치하려면 타일을 길게 누르세요</string>
+ <string name="quick_settings_edit_label">타일 편집</string>
+ <string name="quick_settings_cannot_delete_edit_tile">타일 편집 삭제 불가</string>
+ <string name="qs_tiles_reset_confirmation">빠른 설정 타일을 기본 설정으로 재설정합니까?</string>
+ <string name="quick_settings_tile_reset_to_default">기본 레이아웃으로 재설정</string>
+ <string name="quick_settings_title_header">헤더</string>
+ <string name="quick_settings_title_tiles">타일</string>
+ <string name="quick_settings_title_show_weather">날씨 표시</string>
+ <string name="quick_settings_title_show_brightness_slider">화면 밝기 조정 표시</string>
+ <string name="quick_settings_title_enlarge_first_row">첫번째 타일을 크게</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">고정을 해제할 때까지 계속 표시합니다. 뒤로 버튼을 계속 눌러 고정을 해제하세요.</string>
+ <string name="quick_settings_custom_tile_detail_title">개인설정 타일</string>
+ <string name="quick_settings_remove">타일 제거</string>
+ <string name="quick_settings_network_adb_label">네트워크 ADB</string>
+ <string name="quick_settings_compass_label">나침반</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">시스템 프로필</string>
+ <string name="quick_settings_profiles_off">프로필 사용 안 함</string>
+ <string name="quick_settings_heads_up_label">헤드업 알림</string>
+ <string name="quick_settings_battery_saver_label">배터리 절약</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">배터리 세이버 (충전중)</string>
+ <string name="quick_settings_caffeine_label">카페인</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">동기화 꺼짐</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">동기화 켜짐</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">동기화가 해제되었습니다.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">동기화가 설정되었습니다.</string>
+ <string name="quick_settings_sync_label">동기화</string>
+ <string name="quick_settings_volume_panel_label">볼륨 패널</string>
+ <string name="quick_settings_usb_tether_label">USB 테더링</string>
+ <string name="quick_settings_screen_timeout_detail_title">화면 자동 꺼짐</string>
+ <string name="quick_settings_lockscreen_label">잠금 화면</string>
+ <string name="quick_settings_ambient_display_label">절전 모드 자동 해제</string>
+ <string name="quick_settings_lockscreen_label_enforced">잠금 화면 사용됨</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">프로필 설정에 의해 비활성화됨</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">화면 시간 제한: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">화면 시간 제한이 <xliff:g id="timeout" example="30 seconds">%s</xliff:g>으(로) 바뀜.</string>
+ <string name="qs_tile_performance">배터리 모드</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">배터리 모드: 전원 절약 모드.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">배터리 모드: 균형 모드.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">배터리 모드: 성능 모드.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">배터리 모드: 효율 모드.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">배터리 모드: 성능 모드.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">배터리 모드가 이제 절전 모드로 바뀜.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">베터리 모드가 이제 균형 모드로 바뀜.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">배터리 모드가 성능 모드로 바뀜.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">배터리 모드가 효율 모드로 변경되었습니다.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">배터리 모드가 성능 모드로 변환되었습니다.</string>
+ <string name="quick_settings_performance_profile_detail_title">배터리 모드</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">잠금 화면 꺼짐.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">잠금 화면 켜짐.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">잠금 화면이 이제 꺼짐.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">잠금 화면이 이제 켜짐.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">절전 모드 자동 해제가 꺼짐.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">절전 모드 자동 해제가 켜짐.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">절전 모드 자동 해제가 꺼졌습니다.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">절전 모드 자동 해제가 켜졌습니다.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">헤드업 알림이 꺼짐.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">헤드업 알림이 켜짐.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">헤드업 알림이 꺼졌습니다.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">헤드업 알림이 켜졌습니다.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">카페인 꺼짐.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">카페인 켜짐.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">배터리 절약 끔.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">배터리 절약 킴.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">배터리 절약이 꺼졌습니다.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">배터리 절약이 켜졌습니다.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">동적 타일</string>
+ <string name="dynamic_qs_tile_next_alarm_label">다음 알람</string>
+ <string name="dynamic_qs_tile_ime_selector_label">입력 방법 선택</string>
+ <string name="dynamic_qs_tile_su_label">루트 권한</string>
+ <string name="quick_settings_title_advanced_location">3가지 위치 설정</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">위치 보고: 배터리 절약 모드.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">위치 보고: 기기 전용 모드.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">위치 보고: 높은 정확성 모드.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">위치 모드</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">배터리 절약</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">기기 전용</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">높은 정확도</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">위치 보고가 배터리 절약 모드로 바뀜.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">위치 보고가 기기 전용 모드로 바뀜.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">위치 보고가 높은 정확도 모드로 바뀜.</string>
+ <string name="quick_settings_tiles_category_system">시스템 타일</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">타일 추가</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">비행기 모드가 활성화되어 있어 셀룰러 네트워크에 연결할 수 없습니다. 비행기 모드를 해제하고 다시 시도하세요.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">손전등 켜짐</string>
+ <string name="quick_settings_tile_flashlight_not_summary">탭하여 끄기</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d개 장치</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">데이터 SIM 없음</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">독의 배터리는 <xliff:g id="number">%d</xliff:g>퍼센트입니다.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">재생 대기열 표시</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ku/cm_arrays.xml b/packages/SystemUI/res/values-ku/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-ku/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ku/cm_strings.xml b/packages/SystemUI/res/values-ku/cm_strings.xml
new file mode 100644
index 0000000..7d2fc15
--- /dev/null
+++ b/packages/SystemUI/res/values-ku/cm_strings.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">رایکێشە بۆلای ڕاست بۆ %1$s</string>
+ <string name="right_shortcut_hint">ڕایکێشە بۆلای چەپ بۆ %1$s</string>
+ <string name="select_application">دیاریکردنی بەرنامە</string>
+ <string name="lockscreen_choose_action_title">چالاکیه‌ک هه‌ڵبژێره‌</string>
+ <string name="lockscreen_none_target">هیچیان</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">کارێك هەڵبژێرە بۆ ئەنجام دان </string>
+ <string name="navbar_home_button">دوگمەی سەرەتا</string>
+ <string name="navbar_recent_button">دوگمەی پێشینە</string>
+ <string name="navbar_search_button">دوگمەی گەڕان</string>
+ <string name="navbar_back_button">دوگمەی گەڕانەوە</string>
+ <string name="navbar_empty_button">دوگمەی بەتاڵ</string>
+ <string name="navbar_menu_conditional_button">دوگمەی مینو (شاردنەوەی خۆکار) </string>
+ <string name="navbar_menu_always_button">دوگمەی مینو (نیشاندانی خۆکار) </string>
+ <string name="navbar_menu_big_button">دوگمەی مینو</string>
+ <string name="accessibility_dpad_left">جێنیشانده‌ر بۆ لای چه‌پ</string>
+ <string name="accessibility_dpad_right">جێنیشانده‌ر بۆ لای ڕاست</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">سڕینەوەی داواکاریەکانی بەرنامە</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">وەستاندی بێهۆکار</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">سڕینەوە</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">سه‌ره‌تایکردن\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">ئەمە لەسەر پیشاندان ئەمێنێتەوە تاوەکو لەیەکدادەبڕێن. دەستلێدە و دووگمەی دواوە هەڵبگرە بۆ لێدابڕان.</string>
+ <string name="quick_settings_custom_tile_detail_title">خشتەی دروستکراو</string>
+ <string name="quick_settings_remove">سڕینه‌وه‌ی خشتە</string>
+ <string name="quick_settings_network_adb_label">ADB لەڕێی تۆڕەوە</string>
+ <string name="quick_settings_compass_label">قیبلە نما</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">زانیاری تایبەتیەکانی سیستەم</string>
+ <string name="quick_settings_profiles_off">زانیاری تایبەتی ناچالاکە</string>
+ <string name="quick_settings_heads_up_label">فه‌رمووه‌کان</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_usb_tether_label">گرتنەدەستی USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">کاتی شاشە</string>
+ <string name="quick_settings_lockscreen_label">قفڵی شاشە</string>
+ <string name="quick_settings_ambient_display_label">پیشاندەری دەوروبەر</string>
+ <string name="quick_settings_lockscreen_label_enforced">قفڵکردنی شاشە بەزۆر</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">دۆزینەوەی شوێن: شێوازی پاراستنی ووزە.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">دۆزینەوەی شوێن: تەنیا هەستەوەرەکان.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">دۆزینەوەی شوێن: شێوازی بەکارهێنانی تەواو.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">شێوازی شوێن</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">پاراستنی ووزە</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">تەنها ئامێر</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">بەکارهێنانی زۆر</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ku/strings.xml b/packages/SystemUI/res/values-ku/strings.xml
new file mode 100644
index 0000000..87d89bb
--- /dev/null
+++ b/packages/SystemUI/res/values-ku/strings.xml
@@ -0,0 +1,647 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <string name="app_label">سیستەم UI</string>
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <string name="status_bar_clear_all_button">پاچالاککردن</string>
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <string name="status_bar_recent_remove_item_title">لە لیستەکە بیسڕەوە</string>
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <string name="status_bar_recent_inspect_item_title">زانیاری دەربارەی بەرنامە</string>
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <string name="status_bar_accessibility_dismiss_recents">پشتگوێ خستنی بەرنامەی تازە</string>
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <string name="status_bar_no_notifications_title">تێبینی نیە</string>
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <string name="status_bar_ongoing_events_title">چونە</string>
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <string name="status_bar_latest_events_title">تێبینی</string>
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <string name="invalid_charger">USB پاڵپشتی ناکات .\nتەنها بارگەکەر بەکاربهێنە.</string>
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <string name="battery_low_why">ڕێکخستنه‌کان</string>
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_confirmation_title">باتری پارێز چالاک ئەکەیت?</string>
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <string name="battery_saver_confirmation_ok">کردنە کار</string>
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_start_action">باتری پارێز چالاک ئەکەیت</string>
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_settings_button">ڕێکخستن</string>
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_wifi_button">Wi-Fi</string>
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_auto_rotation">خۆکارانە-سوڕانەوەی شاشە</string>
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_mute_label">کپکردن</string>
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_auto_brightness_label">خۆکارانە</string>
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_notifications">ئاگادارییه‌کان</string>
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <string name="bluetooth_tethered">بلوتوس تێزەر</string>
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <string name="status_bar_input_method_settings_configure_input_methods">دامەزراندن ڕێگەکان</string>
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <string name="status_bar_use_physical_keyboard">تەختەکلیلی فیزیکی</string>
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_permission_prompt">ڕێگەدان بە بەرنامەکە <xliff:g id="application">%1$s</xliff:g> بۆ بەکارهێنانیUSB?</string>
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_permission_prompt">ڕێگەدان بەبەرنامەکە <xliff:g id="application">%1$s</xliff:g> بەکارهێنانیUSB ?</string>
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_confirm_prompt">چالاککردن <xliff:g id="activity">%1$s</xliff:g>کاتێک ئامێرەکە پەیوەندە بە USB?</string>
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_confirm_prompt">کراوە <xliff:g id="activity">%1$s</xliff:g> کاتێک ئەو USB yیە پەیوەندکراوە?</string>
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_uri_prompt">هیچ بەرنامەیەک دانەمەزراوە ئیش بکات لەسەر USB زیاتر فێربە دەربارەی <xliff:g id="url">%1$s</xliff:g></string>
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <string name="title_usb_accessory">USB</string>
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <string name="label_view">پیشاندان</string>
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_device">لە بنەڕەتەوە بەکاری بهێنە بۆ USB </string>
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_accessory">بنەڕەتی بەکاربهێنە بۆ USB</string>
+ <!-- Title of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_title">ڕێگە دان بە هەڵدۆزی USB?</string>
+ <!-- Message of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_message">چاپکەری پەنجە کلیل لە RSA :\n<xliff:g id="fingerprint">%1$s</xliff:g></string>
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <string name="usb_debugging_always">هەمیشە ڕێگە بدە لەسەر ئەم کۆمپیوتەرە</string>
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <string name="compat_mode_on">زوومکردن بۆ پڕ شاشە</string>
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <string name="compat_mode_off">درێژبونەوە بۆ پڕشاشە</string>
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <string name="screenshot_saving_ticker">پاشەکەوتکردنی وێنه‌ی شاشە\u2026</string>
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saving_title">پاشەکەوتکردنی شاشەوێنە\u2026</string>
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saving_text">وێنەی شاشەکە پاشەکەوتکرا.</string>
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saved_title">وێنەی شاشە گیرا.</string>
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saved_text">دەست لێدە بۆ پیشاندانی وێنەی شاشە.</string>
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <string name="screenshot_failed_title">ناتوانێت وێنەی شاشەبگرێت.</string>
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <string name="usb_preference_title">هەڵبژاردەی usb بۆ گواستنەوەی فایلەکان</string>
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_mtp_button_title">جێگیركردن وەکو لێدەرە ڕاگه‌یێنه‌کان(MTP)</string>
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_ptp_button_title">جێگیرکردن وەکو کامێرا(PTP)</string>
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="installer_cd_button_title">دامەزراندنی فایلەکان ئەندرۆید لەسەر ماک</string>
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_back">گەڕانەوە</string>
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_home">ماڵەوە</string>
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_menu">پێڕست</string>
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_recent">پیشاندانی گشتی</string>
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_search_light">گەڕان</string>
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_camera_button">کامێرا</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_button">تەلەفۆن</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_unlock_button">کردنەوە</string>
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <string name="unlock_label">كردنەوە</string>
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="phone_label">کردنەوەی تەلەفۆن</string>
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="camera_label">کردنەوەی کامێرا</string>
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_button">دوگمەی زومی توانای.</string>
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_example">زومکردن لە بچوکەوە بۆ شاشەی گەورە.</string>
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_connected">بلوتوس پەیوەندکراوە.</string>
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_disconnected">بلوتوس نەبەستراوە.</string>
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_battery">باتری نیە.</string>
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_one_bar">شریتی یەک باتری.</string>
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_two_bars">دوو شریتی باتری.</string>
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_three_bars">سێ شریتی باتری.</string>
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_full">باتری پڕە.</string>
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_phone">تەلەفۆن نیە.</string>
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_one_bar">شریتی یەک تەلەفۆن.</string>
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_two_bars">شریتی دوو تەلەفۆن.</string>
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_three_bars">شریتی سێ تەلەفۆن.</string>
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_signal_full">تەلەفۆن پڕ نیشانه‌.</string>
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_data">داتای نیە.</string>
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_one_bar">شریتی یەک داتا.</string>
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_two_bars">شریتی دوو داتا.</string>
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_three_bars">شریتی سێ دراوه.</string>
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_signal_full">پڕ نیشانە داتا.</string>
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_name">پەیوەندکراوە بە <xliff:g id="wifi" example="Home Network">%s</xliff:g>.</string>
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_name">پەیوەندکراوە بە <xliff:g id="bluetooth" example="Car Audio">%s</xliff:g>.</string>
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_wimax">نەخێر WiMAX.</string>
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_one_bar">WiMAX یەک شریت.</string>
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_two_bars">WiMAX یەک شریت.</string>
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_three_bars">WiMAX سێ شریت.</string>
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_signal_full">WiMAX پڕ نیشانە.</string>
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_signal">نیشانە نیە.</string>
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_not_connected">نەبەستراوەتەوە.</string>
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_zero_bars">شریتی سفر.</string>
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_one_bar">یەک شریت.</string>
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_two_bars">دوو شریت.</string>
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_three_bars">سێ شریت.</string>
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_signal_full">پڕ نیشانە.</string>
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_on">چالاککردن.</string>
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_off">ناچالاککردن.</string>
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connected">پەیوەندکرا.</string>
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connecting">په‌یوه‌ندیكردن.</string>
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_gprs">GPRS</string>
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_1x">1 X</string>
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspa">HSPA</string>
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3g">3G</string>
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3.5g">3.5G</string>
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g">4G</string>
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_lte">LTE</string>
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_cdma">CDMA</string>
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_roaming">سوڕانەوە</string>
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_edge">لێوار</string>
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_wifi">Wi-Fi</string>
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_sim">سیمکارتی تیا نیە.</string>
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_tether">بلوتوس وایەر.</string>
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">باری فڕۆکە.</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_level">باتری <xliff:g id="number">%d</xliff:g> لەسەدا.</string>
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_settings_button">ڕێکخستنی سیستەم.</string>
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notifications_button">تێبینیه‌کان.</string>
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_remove_notification">پاکردنەوەی تێبینیەکان.</string>
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_enabled">GPS چالاکرا.</string>
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_acquiring">GPS وەرگرتنی.</string>
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_tty_enabled">TeleTypewriter چالاکرا.</string>
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_vibrate">لەرینەوەی زەنگ.</string>
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_silent">بێدەنگ زەنگ.</string>
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <string name="accessibility_recents_item_dismissed"><xliff:g id="app" example="Calendar">%s</xliff:g> لەدەست چوو.</string>
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <string name="accessibility_notification_dismissed">تێبینیەکە لەدەستچوو.</string>
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_notification_shade">سێبەری تێبینی.</string>
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_quick_settings">خێرا ڕێکخستن.</string>
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_lock_screen">قوفڵکردنی ڕوونما.</string>
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_settings">ڕێکخستنه‌کان</string>
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_recent_apps">پیشاندانی گشتی.</string>
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_user">بەکارهێنەر <xliff:g id="user" example="John Doe">%s</xliff:g>.</string>
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_off">کوژانەوەی وایفای.</string>
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_on">کردنەوەی وایفای.</string>
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_mobile">مۆبایل <xliff:g id="signal" example="Three bars">%1$s</xliff:g>. <xliff:g id="type" example="4G">%2$s</xliff:g>. <xliff:g id="network" example="T-Mobile">%3$s</xliff:g>.</string>
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery">باتری <xliff:g id="state" example="50% charging">%s</xliff:g>.</string>
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_off">کوژانەوەی باری فڕۆکە.</string>
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_on">کردنەوەی باری فڕۆکە.</string>
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_off">باری فڕۆکە ناچالاکرا.</string>
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_on">باری فڕۆکە چالاکرا.</string>
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_off">بلوتوس کوژایەوە.</string>
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_on">چالاکردنی بلوتوس.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connecting">پەیوەندکردنی بلوتوس.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connected">بلوتوس پەیوەندکراوە.</string>
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_off">بلوتوس ناچالاکە.</string>
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_on">بلوتوس ناچالاکە.</string>
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_off">کوژانەوەی ڕاپۆرتی ناوەکی.</string>
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_on">کردنەوەی ڕاپۆرتی ناوەکی.</string>
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_off">ڕاپۆرتی ناوەکی کوژایەوە.</string>
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_on">ڕاپۆرتی ناوەکی چالاکرا.</string>
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_alarm">دانانی بیرخەرەوە بۆ <xliff:g id="time" example="Wed 3:30 PM">%s</xliff:g>.</string>
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_close">داخستنی پەڕە.</string>
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_more_time">کاتی زیاتر.</string>
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_less_time">کاتی کەمتر.</string>
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_off">کوژانەوەی لایت.</string>
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_on">چالاکردنی لایت.</string>
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_disconnected">ئەنتەرنێت به‌ستنه‌وه نیە</string>
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_wifi_nossid">Wi-Fi بەستراوە</string>
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_searching_text">گەڕان بۆ GPS</string>
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">ناوچەکە دانراوە لە GPS</string>
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <string name="accessibility_location_active">ناوچە داواکراوە بۆ چالاککردن</string>
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_clear_all">پاکردنەوەی تێبنیەکان.</string>
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">شاشەکە خۆکارانە ئەخولێتەوە.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">شاشەکە بە لایە قوفڵ ئەبێت.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">شاشەکە بە ڕاستە قوفڵ ئەبێت.</string>
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <string name="dessert_case">شیرینی بابەت</string>
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <string name="start_dreams">ڕۆژی خەون</string>
+ <!-- Textual description of Ethernet connections -->
+ <string name="ethernet_label">ئێسه‌رنێت</string>
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_label">بلوتوس</string>
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_multiple_devices_label">بلوتوس (<xliff:g id="number">%d</xliff:g> ئامێرەکان)</string>
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_off_label">بلوتوس کوژاوه‌یه‌</string>
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_label">ڕوناکی</string>
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_ime_label">دانانی ڕێگە</string>
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_label">ناوچه‌</string>
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_off_label">کوژاندنەوەی شوێندۆزەرەوە</string>
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_media_device_label">ئامێری ڕاگه‌یێنه‌کان </string>
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_label">RSSI</string>
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_emergency_only">ته‌نها په‌یوه‌ندی كتوپڕ</string>
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_settings_label">ڕێکخستنه‌کان</string>
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_time_label">کات</string>
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_label">من</string>
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_label">Wi-Fi</string>
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_not_connected">نەبەستراوە</string>
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_no_network">تۆڕ نیە</string>
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_off_label">Wi-Fi ناچالاکه‌</string>
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_title">ڕۆشنایی</string>
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_auto_brightness_label">خۆکارانە</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_connecting">په‌یوه‌ندیكردن...</string>
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_notifications_label">تێبینیه‌کان</string>
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_flashlight_label">لایتی فلاش</string>
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <string name="battery_meter_very_low_overlay_symbol">!</string>
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <string name="ssl_ca_cert_warning">تۆڕه‌که‌ مۆنیته‌ر کراوه‌</string>
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <string name="status_bar_ethernet">ئێسه‌رنێت</string>
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">شێوازی فڕۆکە</string>
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+ <string name="enable_bluetooth_confirmation_ok">کردنە کار</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/cm_arrays.xml b/packages/SystemUI/res/values-ky-rKG/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ky-rKG/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/cm_strings.xml b/packages/SystemUI/res/values-ky-rKG/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ky-rKG/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-land/cm_dimens.xml b/packages/SystemUI/res/values-land/cm_dimens.xml
new file mode 100644
index 0000000..e996f02
--- /dev/null
+++ b/packages/SystemUI/res/values-land/cm_dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2015, The CyanogenMod 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="phone_height">210dp</dimen>
+ <dimen name="phone_width">420dp</dimen>
+</resources>
diff --git a/packages/SystemUI/res/values-lb/cm_arrays.xml b/packages/SystemUI/res/values-lb/cm_arrays.xml
new file mode 100644
index 0000000..3008606
--- /dev/null
+++ b/packages/SystemUI/res/values-lb/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NO</item>
+ <!-- North east -->
+ <item>O</item>
+ <!-- East -->
+ <item>SO</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-lb/cm_strings.xml b/packages/SystemUI/res/values-lb/cm_strings.xml
new file mode 100644
index 0000000..9756cd2
--- /dev/null
+++ b/packages/SystemUI/res/values-lb/cm_strings.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">No riets wësche fir %1$s</string>
+ <string name="right_shortcut_hint">No lénks wësche fir %1$s</string>
+ <string name="lockscreen_message">Dréck e Symbol op der lénkser oder rietser Säit fir d\'Spärschierm-Ofkierzungen nei ze definéieren.</string>
+ <string name="lockscreen_default_target">Standard</string>
+ <string name="select_application">App auswielen</string>
+ <string name="lockscreen_choose_action_title">Aktioun auswielen</string>
+ <string name="lockscreen_none_target">Keen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Funktioun zouweisen</string>
+ <string name="navbar_home_button">Startsäit-Knäppchen</string>
+ <string name="navbar_recent_button">Verlafknäppchen</string>
+ <string name="navbar_search_button">Sichknäppchen</string>
+ <string name="navbar_back_button">Zréckknäppchen</string>
+ <string name="navbar_empty_button">Net beluecht</string>
+ <string name="navbar_menu_conditional_button">Knäppche fir de Menü automatesch ze verstoppen</string>
+ <string name="navbar_menu_always_button">Knäppche fir de Menü ëmmer unzeweisen</string>
+ <string name="navbar_menu_big_button">Menüknäppchen</string>
+ <string name="accessibility_dpad_left">Cursor lénks</string>
+ <string name="accessibility_dpad_right">Cursor riets</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Applikatiounsdate läschen</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Zoumaachen zwéngen</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalléieren</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Hellegkeet</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiller aus.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiller ausgeschalt.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil op <xliff:g id="profile" example="Default">%s</xliff:g> geännert.</string>
+ <string name="quick_settings_compass_init">Initialiséieren\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Hellegkeetsastellungen</string>
+ <string name="led_notification_text">Notifikatiounsluucht duerch Astellungen aktivéieren</string>
+ <string name="qs_tile_edit_header_instruction">Dréck an haalt d\'Kachelen, fir se nei zouzeuerdnen</string>
+ <string name="quick_settings_edit_label">Kachelen änneren</string>
+ <string name="quick_settings_cannot_delete_edit_tile">\"Kachelen änneren\" kann net geläscht ginn</string>
+ <string name="qs_tiles_reset_confirmation">Kachele vun de Séieren Astellungen op de Standardlayout zrécksetzen?</string>
+ <string name="quick_settings_tile_reset_to_default">Zréck op den Standardlayout setzen</string>
+ <string name="quick_settings_title_header">Entête</string>
+ <string name="quick_settings_title_tiles">Kachelen</string>
+ <string name="quick_settings_title_show_weather">Wieder uweisen</string>
+ <string name="quick_settings_title_show_brightness_slider">Hellegkeetsregeler uweisen</string>
+ <string name="quick_settings_title_enlarge_first_row">Éischt Rei vergréisseren</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Doduerch bleift d\'App visibel bis se lassgeléist gëtt. Dréck den Zréck-Knäppchen an hal e gedréckt fir d\'App lasszeléisen.</string>
+ <string name="quick_settings_custom_tile_detail_title">Eege Kachel</string>
+ <string name="quick_settings_remove">Kachel läschen</string>
+ <string name="quick_settings_network_adb_label">ADB iwwer Netzwierk</string>
+ <string name="quick_settings_compass_label">Kompass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systemprofiller</string>
+ <string name="quick_settings_profiles_off">Profiller desaktivéiert</string>
+ <string name="quick_settings_heads_up_label">Pop-Up-Notifikatiounen</string>
+ <string name="quick_settings_battery_saver_label">Akkuschouner</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Akku-Schouner (gëtt gelueden)</string>
+ <string name="quick_settings_caffeine_label">Koffein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synchronisatioun aus.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synchronisatioun un.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronisatioun ausgeschalt.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronisatioun ugeschalt.</string>
+ <string name="quick_settings_sync_label">Synchronisatioun</string>
+ <string name="quick_settings_volume_panel_label">Lautstäerktpanneau</string>
+ <string name="quick_settings_usb_tether_label">USB-Tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Schierm-Timeout</string>
+ <string name="quick_settings_lockscreen_label">Schiermspär</string>
+ <string name="quick_settings_ambient_display_label">Ambiente Schierm</string>
+ <string name="quick_settings_lockscreen_label_enforced">Spärschierm forcéiert</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Verhënnert duerch den aktuelle Profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Rouzoustand no <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Zäit bis zum Rouzoustand op <xliff:g id="timeout" example="30 seconds">%s</xliff:g> geännert.</string>
+ <string name="qs_tile_performance">Akkumodus</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Akkumodus: Energie spueren.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Akkumodus: Equilibréiert.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Akkumodus: Héich Leeschtung.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Akkumodus: effiziente Modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Akkumodus: séiere Modus.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Akkumodus op \"Energie spueren\" geännert.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Akkumodus op \"Equilibréiert\" geännert.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Akkumodus op \"Héich Leeschtung\" geännert.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Akkumodus geännert op den effiziente Modus.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Akkumodus geännert op de séiere Modus.</string>
+ <string name="quick_settings_performance_profile_detail_title">Akkumodus</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Schiermspär aus.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Schiermspär un.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Schiermspär ausgeschalt.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Schiermspär ugeschalt.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambiente Schierm aus.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambiente Schierm un.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambiente Schierm ausgeschalt.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambiente Schierm ugeschalt.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Pop-Up-Notifikatiounen aus.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Pop-Up-Notifikatiounen un.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Pop-Up-Notifikatiounen ausgeschalt.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Pop-Up-Notifikatiounen ugeschalt.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Koffein aus.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Koffein un.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Akkuschouner aus.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Akkuschouner un.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Akkuschouner ausgeschalt.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Akkuschouner ugeschalt.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamesch Kachelen</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Nächste Wecker</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Method fir anzeginn</string>
+ <string name="dynamic_qs_tile_su_label">Root-Zougrëff</string>
+ <string name="quick_settings_title_advanced_location">Standuert mat dräi Zoustänn</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Standuertbericht: Akku spueren.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Standuertbericht: Just Sensoren.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Standuertbericht: Héich Genauegkeet.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Standuertmodus</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Akku spueren</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Just Apparat</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Héich Genauegkeet</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Standuertbericht op \"Akku spueren\" geännert.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Standuertbericht op \"Just Sensoren\" geännert.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Standuertbericht op \"Héich Genauegkeet\" geännert.</string>
+ <string name="quick_settings_tiles_category_system">System-Kachelen</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Kachelen dobäisetzen</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Am Flugmodus ass keng Umeldung beim Mobilfunknetz méiglech. Deaktivéiert den Flugmodus a probéiert et nach eng Kéier.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">D\'Täscheluucht ass un</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Drécke fir s\'auszeschalten</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d Client</item>
+ <item quantity="other">%1$d Clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Keng Date-SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dockakku <xliff:g id="number">%d</xliff:g> Prozent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Waardeschlaang uweisen</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lb/strings.xml b/packages/SystemUI/res/values-lb/strings.xml
new file mode 100644
index 0000000..0217846
--- /dev/null
+++ b/packages/SystemUI/res/values-lb/strings.xml
@@ -0,0 +1,771 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <string name="app_label">System-UI</string>
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <string name="status_bar_clear_all_button">Eidel maachen</string>
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <string name="status_bar_recent_remove_item_title">Aus der Lëscht eraushuelen</string>
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <string name="status_bar_recent_inspect_item_title">App-Info</string>
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <string name="status_bar_no_recent_apps">Deng rezent Schiermer erschéngen hei</string>
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <string name="status_bar_accessibility_dismiss_recents">Rezent Appe verwerfen</string>
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <plurals name="status_bar_accessibility_recent_apps">
+ <item quantity="one">1 Schierm an der Iwwersiicht</item>
+ <item quantity="other">%d Schiermer an der Iwwersiicht</item>
+ </plurals>
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <string name="status_bar_no_notifications_title">Keng Notifikatiounen</string>
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <string name="status_bar_ongoing_events_title">Am Gaang</string>
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <string name="status_bar_latest_events_title">Notifikatiounen</string>
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <string name="battery_low_title">Akku niddreg</string>
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <string name="battery_low_percent_format"><xliff:g id="percentage">%s</xliff:g> iwwreg</string>
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <string name="battery_low_percent_format_saver_started"><xliff:g id="percentage">%s</xliff:g> iwwreg. Akkuschouner ass un.</string>
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <string name="invalid_charger">Oplueden iwwer USB net ënnerstëtzt.\nBenotz just de matgeliwwerten Oplueder.</string>
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <string name="invalid_charger_title">Oplueden iwwer USB net ënnerstëtzt.</string>
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <string name="invalid_charger_text">Benotz just de matgeliwwerten Oplueder.</string>
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <string name="battery_low_why">Astellungen</string>
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_confirmation_title">Akkuschouner uschalten?</string>
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <string name="battery_saver_confirmation_ok">Uschalten</string>
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <string name="battery_saver_start_action">Akkuschouner uschalten</string>
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_settings_button">Astellungen</string>
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_wifi_button">WLAN</string>
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_auto_rotation">Schierm automatesch rotéieren</string>
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_mute_label">STOMM</string>
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_auto_brightness_label">AUTO</string>
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_notifications">Notifikatiounen</string>
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <string name="bluetooth_tethered">Bluetooth ugebonnen</string>
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <string name="status_bar_input_method_settings_configure_input_methods">Methode fir anzeginn astellen</string>
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <string name="status_bar_use_physical_keyboard">Physesch Tastatur</string>
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_permission_prompt">Der App <xliff:g id="application">%1$s</xliff:g> erlaben op den USB-Apparat zouzegräifen?</string>
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_permission_prompt">Der App <xliff:g id="application">%1$s</xliff:g> erlaben op den USB-Accessoire zouzegräifen?</string>
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_confirm_prompt"><xliff:g id="activity">%1$s</xliff:g> opmaache wann dësen USB-Apparat connectéiert ass?</string>
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_confirm_prompt"><xliff:g id="activity">%1$s</xliff:g> opmaache wann dësen USB-Accessoire connectéiert ass?</string>
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_uri_prompt">Keng installéiert App fir dësen USB-Accessoire. Méi iwwer dësen Accessoire gewuer ginn op <xliff:g id="url">%1$s</xliff:g></string>
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <string name="title_usb_accessory">USB-Accessoire</string>
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <string name="label_view">Ukucken</string>
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_device">Standartméisseg fir dësen USB-Apparat benotzen</string>
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_accessory">Standartméisseg fir dësen USB-Accessoire benotzen</string>
+ <!-- Title of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_title">USB-Debugging erlaben?</string>
+ <!-- Message of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_message">Den RSA-Fangerofdrock vum Computer ass:\n<xliff:g id="fingerprint">%1$s</xliff:g></string>
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <string name="usb_debugging_always">Ëmmer vun dësem Computer erlaben</string>
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <string name="compat_mode_on">Zoom op d\'Schiermgréisst</string>
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <string name="compat_mode_off">Un d\'Schiermgréisst upassen</string>
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <string name="screenshot_saving_ticker">Schiermfoto gëtt gespäichert\u2026</string>
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saving_title">Schiermfoto gëtt gespäichert\u2026</string>
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saving_text">Schiermfoto gëtt gespäichert.</string>
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saved_title">Schiermfoto opgeholl.</string>
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saved_text">Drécke fir d\'Schiermfoto unzekucken.</string>
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <string name="screenshot_failed_title">Schiermfoto konnt net opgeholl ginn.</string>
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <string name="screenshot_failed_text">Wéinst ze wéineg Späicherplaz oder wéinst feelender Berechtegung ka keng Schiermfoto gespäichert ginn.</string>
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <string name="usb_preference_title">USB-Dateiiwwerdroungsoptiounen</string>
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_mtp_button_title">Als Medieplayer (MTP) abannen</string>
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_ptp_button_title">Als Kamera (PTP) abannen</string>
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="installer_cd_button_title">D\'Fichiersiwwerdroungs-App fir Android um Mac installéieren</string>
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_back">Zréck</string>
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_home">Heem</string>
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_menu">Menü</string>
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_recent">Iwwersiicht</string>
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_search_light">Sichen</string>
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_camera_button">Fotoapparat</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_button">Telefon</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_unlock_button">Entspären</string>
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <string name="unlock_label">entspären</string>
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="phone_label">Telefon opmaachen</string>
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="camera_label">Kamera opmaachen</string>
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_button">Knäppche fir de Kompatibilitéitszoom.</string>
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_example">Zoom op ee méi grousse Schierm.</string>
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_connected">Bluetooth connectéiert.</string>
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_disconnected">Bluetooth deconnectéiert.</string>
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_battery">Keen Akku.</string>
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_one_bar">Akku, ee Stréch.</string>
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_two_bars">Akku, zwéi Strécher.</string>
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_three_bars">Akku, dräi Strécher.</string>
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_full">Akku gelueden.</string>
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_phone">Keen Telefon.</string>
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_one_bar">Telefonssignal, ee Stréch.</string>
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_two_bars">Telefonssignal, zwéi Strécher.</string>
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_three_bars">Telefonssignal, dräi Strécher.</string>
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_signal_full">Voll Telefonsignalstäerkt.</string>
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_data">Keng Daten.</string>
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_one_bar">Datesignal, ee Stréch.</string>
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_two_bars">Datesignal, zwéi Strécher.</string>
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_three_bars">Datesignal, dräi Strécher.</string>
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_signal_full">Voll Datesignalstäerkt.</string>
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wifi_name">Connectéiert mat <xliff:g id="wifi" example="Home Network">%s</xliff:g>.</string>
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_name">Verbonne mat <xliff:g id="bluetooth" example="Car Audio">%s</xliff:g>.</string>
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_wimax">Kee WiMAX.</string>
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_one_bar">WiMAX, ee Stréch.</string>
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_two_bars">WiMAX zwéi Strécher.</string>
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_three_bars">WiMAX dräi Strécher.</string>
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_signal_full">Voll WiMAX-Signalstäerkt.</string>
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_signal">Kee Signal.</string>
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_not_connected">Net connectéiert.</string>
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_zero_bars">Null Strécher.</string>
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_one_bar">Ee Stréch.</string>
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_two_bars">Zwéi Strécher.</string>
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_three_bars">Dräi Strécher.</string>
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_signal_full">Voll Signalstäerkt.</string>
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_on">Un.</string>
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_off">Aus.</string>
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connected">Verbonnen.</string>
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connecting">Gëtt connectéiert.</string>
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_gprs">GPRS</string>
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_1x">1 X</string>
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspa">HSPA</string>
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3g">3G</string>
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3.5g">3.5G</string>
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g">4G</string>
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_lte">LTE</string>
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_cdma">CDMA</string>
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_roaming">Roaming</string>
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_edge">Edge</string>
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_wifi">WLAN</string>
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_sim">Keng SIM.</string>
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_tether">Bluetooth-Tethering.</string>
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">Fligermodus.</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_level">Akku <xliff:g id="number">%d</xliff:g> Prozent.</string>
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_settings_button">Systemastellungen.</string>
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notifications_button">Notifikatiounen.</string>
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_remove_notification">Notifikatioun ewechhuelen.</string>
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_enabled">GPS aktivéiert.</string>
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_acquiring">GPS-Signal gëtt ofgeruff.</string>
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_tty_enabled">Schreiftelefonie aktivéiert.</string>
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_vibrate">Schellmodus \"Vibratioun\".</string>
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_silent">Schellmodus \"Roueg\".</string>
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <string name="accessibility_recents_item_will_be_dismissed"><xliff:g id="app" example="Calendar">%s</xliff:g> verwerfen.</string>
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <string name="accessibility_recents_item_dismissed"><xliff:g id="app" example="Calendar">%s</xliff:g> verworf.</string>
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <string name="accessibility_recents_item_launched"><xliff:g id="app" example="Calendar">%s</xliff:g> gëtt gestart.</string>
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <string name="accessibility_notification_dismissed">Notifikatioun verworf.</string>
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_notification_shade">Notifikatiounsläischt.</string>
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_quick_settings">Séier Astellungen.</string>
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_lock_screen">Schierm spären.</string>
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_settings">Astellungen</string>
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_recent_apps">Iwwersiicht.</string>
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_user">Benotzer <xliff:g id="user" example="John Doe">%s</xliff:g>.</string>
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi"><xliff:g id="signal" example="Three bars">%1$s</xliff:g>.</string>
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_off">WLAN ausgeschalt.</string>
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_wifi_changed_on">WLAN ugeschalt.</string>
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_mobile">Mobil <xliff:g id="signal" example="Three bars">%1$s</xliff:g>. <xliff:g id="type" example="4G">%2$s</xliff:g>. <xliff:g id="network" example="T-Mobile">%3$s</xliff:g>.</string>
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery">Akku <xliff:g id="state" example="50% charging">%s</xliff:g>.</string>
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_off">Fligermodus aus.</string>
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_on">Fligermodus un.</string>
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_off">Fligermodus ausgeschalt.</string>
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_airplane_changed_on">Fligermodus ugeschalt.</string>
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_off">Bluetooth aus.</string>
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_on">Bluetooth un.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connecting">Bluetooth gëtt verbonnen.</string>
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_connected">Bluetooth verbonnen.</string>
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_off">Bluetooth ausgeschalt.</string>
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_bluetooth_changed_on">Bluetooth ugeschalt.</string>
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_off">Standuertbericht aus.</string>
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_on">Standuertbericht un.</string>
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_off">Standuertbericht ausgeschalt.</string>
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_on">Standuertbericht ugeschalt.</string>
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_alarm">Alarm gesat fir <xliff:g id="time" example="Wed 3:30 PM">%s</xliff:g>.</string>
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_close">Panneau zoumaachen.</string>
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_more_time">Méi Zäit.</string>
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_less_time">Manner Zäit.</string>
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_off">Täscheluucht aus.</string>
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_on">Täscheluucht un.</string>
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_changed_off">Täscheluucht ausgemaach.</string>
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_flashlight_changed_on">Täscheluucht ugemaach.</string>
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_color_inversion_changed_off">Faarfinvertéierung ausgeschalt.</string>
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_color_inversion_changed_on">Faarfinvertéierung ugeschalt.</string>
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_hotspot_changed_off">Mobillen Zougankspunkt ausgeschalt.</string>
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_hotspot_changed_on">Mobillen Zougankspunkt ugeschalt.</string>
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_casting_turned_off">Cast vum Schierm gestoppt.</string>
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_brightness">Schiermhellegkeet</string>
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_disconnected">
+ Keng Internetconnectioun
+    </string>
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_wifi_nossid">WLAN connectéiert</string>
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_searching_text">GPS gëtt gesicht</string>
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">Standuert duerch GPS festgeluecht</string>
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <string name="accessibility_location_active">Standuertufroen aktiv</string>
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_clear_all">Notifikatiounen eidel maachen.</string>
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <string name="status_bar_notification_inspect_item_title">Notifikatiounsastellungen</string>
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <string name="status_bar_notification_app_settings_title"><xliff:g id="app_name" example="Calendar">%s</xliff:g>-Astellungen</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">De Schierm gëtt automatesch rotéiert.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">De Schierm ass am Breetformat gespaart.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">De Schierm ass am Héichformat gespaart.</string>
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off_changed">De Schierm rotéiert elo automatesch.</string>
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape_changed">De Schierm ass am Breetformat gespaart.</string>
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait_changed">De Schierm ass am Héichformat gespaart.</string>
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <string name="dessert_case">Dessertskëscht</string>
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <string name="start_dreams">Dagesdram</string>
+ <!-- Textual description of Ethernet connections -->
+ <string name="ethernet_label">Ethernet</string>
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_label">Bluetooth</string>
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_multiple_devices_label">Bluetooth (<xliff:g id="number">%d</xliff:g> Apparater)</string>
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_off_label">Bluetooth Aus</string>
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_detail_empty_text">Keng gekoppelt Apparater disponibel</string>
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_label">Hellegkeet</string>
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_unlocked_label">Automatesch rotéieren</string>
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_label">Rotéierung gespaart</string>
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_portrait_label">Héichformat</string>
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rotation_locked_landscape_label">Breetformat</string>
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_ime_label">Method fir anzeginn</string>
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_label">Standuert</string>
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_off_label">Lokaliséierung aus</string>
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_media_device_label">Medienapparat</string>
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_label">RSSI</string>
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_emergency_only">Just Noutriff</string>
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_settings_label">Astellungen</string>
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_time_label">Zäit</string>
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_label">Ech</string>
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_title">Benotzer</string>
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_new_user">Neie Benotzer</string>
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_label">WLAN</string>
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_not_connected">Net Connectéiert</string>
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_no_network">Keen Netzwierk</string>
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_off_label">WLAN Aus</string>
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_casting">Casten</string>
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_device_default_name">Apparat ouni Numm</string>
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_device_default_description">Prett fir ze casten</string>
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cast_detail_empty_text">Keng Apparater disponibel</string>
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_title">Hellegkeet</string>
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_auto_brightness_label">AUTO</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_inversion_label">Faarwen invertéieren</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_color_space_label">Faarfkorrekturmodus</string>
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_more_settings">Méi Astellungen</string>
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_done">Fäerdeg</string>
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_connected">Verbonnen</string>
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_connecting">Gëtt connectéiert...</string>
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_tethering_label">Tethering</string>
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_hotspot_label">Zougankspunkt</string>
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_notifications_label">Notifikatiounen</string>
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_flashlight_label">Täscheluucht</string>
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_title">Zelldaten</string>
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_usage">Dateverbrauch</string>
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_remaining_data">Iwwreg Daten</string>
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_over_limit">Iwwer d\'Limitt</string>
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_used"><xliff:g id="data_used" example="2.0 GB">%s</xliff:g> benotzt</string>
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_limit"><xliff:g id="data_limit" example="2.0 GB">%s</xliff:g>-Limitt</string>
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_cellular_detail_data_warning"><xliff:g id="data_limit" example="2.0 GB">%s</xliff:g> Warnung</string>
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <string name="recents_empty_message">Deng rezent Schiermer erschéngen hei</string>
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <string name="recents_app_info_button_label">App-Info</string>
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <string name="recents_lock_to_app_button_label">Schiermfixéierung</string>
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <string name="recents_search_bar_label">sichen</string>
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <string name="recents_launch_error_message">Konnt net <xliff:g id="app" example="Calendar">%s</xliff:g> starten.</string>
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charged">Opgelueden</string>
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charging">Gëtt opgelueden</string>
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_charging_with_time"><xliff:g id="charging_time" example="2 hrs 25 min">%s</xliff:g> bis den Akku voll ass</string>
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <string name="expanded_header_battery_not_charging">Gëtt net opgelueden</string>
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <string name="battery_meter_very_low_overlay_symbol">!</string>
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <string name="ssl_ca_cert_warning">D\'Netzwierk kéint\n
+iwwerwaacht sinn</string>
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_target_search">Sichen</string>
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_direction_up">Eropréckele fir ze <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string>
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <string name="description_direction_left">No lénks réckele fir ze <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string>
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <string name="keyguard_more_overflow_text">+<xliff:g id="number_of_notifications" example="5">%d</xliff:g></string>
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <string name="speed_bump_explanation">Manner dréngend Notifikatiounen drënner</string>
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <string name="notification_tap_again">Dréck nees fir opzemaachen</string>
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <string name="keyguard_unlock">Eropwësche fir z\'entspären</string>
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time">Akku luet (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> bis e voll ass)</string>
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time_fast">Gëtt séier opgelueden (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> bis e voll ass)</string>
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <string name="keyguard_indication_charging_time_slowly">Gëtt lues opgelueden (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> bis e voll ass)</string>
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <string name="accessibility_multi_user_switch_switcher">Benotzer wiesselen</string>
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <string name="accessibility_multi_user_switch_switcher_with_current">Benotzer wiesselen, aktuelle Benotzer <xliff:g id="current_user_name" example="John Doe">%s</xliff:g></string>
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <string name="accessibility_multi_user_switch_quick_contact">Profil uweisen</string>
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <string name="user_add_user">Benotzer dobäisetzen</string>
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <string name="user_new_user_name">Neie Benotzer</string>
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <string name="guest_nickname">Gaascht</string>
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_new_guest">Gaascht dobäisetzen</string>
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest">Gaascht ewechhuelen</string>
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_exit_guest_dialog_title">Gaascht ewechhuelen?</string>
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_exit_guest_dialog_message">All d\'Appen an Daten an dëser Sëtzung gi geläscht.</string>
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <string name="guest_exit_guest_dialog_remove">Ewechhuelen</string>
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_wipe_session_title">Wëllkomm zréck, Gaascht!</string>
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <string name="guest_wipe_session_message">Wëlls du deng Sëtzung weiderféieren?</string>
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <string name="guest_wipe_session_wipe">Vu vir ufänken</string>
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <string name="guest_wipe_session_dontwipe">Jo, weidermaachen</string>
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <string name="user_add_user_title" msgid="2108112641783146007">Neie Benotzer dobäisetzen?</string>
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <string name="user_add_user_message_short" msgid="1511354412249044381">Wann s du en neie Benotzer dobäisetz, muss déi Persoun hiren Espace amenagéieren.\n\nAll Benotzer kann Appe fir all aner Benotzer aktualiséieren.</string>
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <string name="battery_saver_notification_title">Den Akkuschouner ass un</string>
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <string name="battery_saver_notification_text">Reduzéiert d\'Vitess an d\'Hannergronddaten</string>
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <string name="battery_saver_notification_action_text">Akkuschouner ausschalten</string>
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <string name="notification_hidden_text">Inhalter verstoppt</string>
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <string name="media_projection_dialog_text"><xliff:g id="app_seeking_permission" example="Hangouts">%s</xliff:g> hëlt alles op dat op dengem Schierm ugewise gëtt.</string>
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <string name="media_projection_remember_text">Net méi uweisen</string>
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <string name="clear_all_notifications_text">Alles eidel maachen</string>
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <string name="media_projection_action_text">Elo starten</string>
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <string name="empty_shade_text">Keng Notifikatiounen</string>
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <string name="device_owned_footer">Den Apparat kéint iwwerwaacht sinn</string>
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <string name="profile_owned_footer">De Profil kéint iwwerwaacht sinn</string>
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <string name="vpn_footer">D\'Netzwierk kéint iwwerwaacht sinn</string>
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <string name="monitoring_title_device_owned">Apparat-Iwwerwaachung</string>
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <string name="monitoring_title_profile_owned">Profil-Iwwerwaachung</string>
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <string name="monitoring_title">Netzwierk-Iwwerwaachung</string>
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <string name="disable_vpn">VPN desaktivéieren</string>
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <string name="disconnect_vpn">VPN deconnectéieren</string>
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <string name="keyguard_indication_trust_disabled">Den Apparat bleift gespaart, bis e manuell entspaart gëtt</string>
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <string name="hidden_notifications_title">Notifikatioune méi séier kréien</string>
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <string name="hidden_notifications_text">Virum Entspären uweisen</string>
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <string name="hidden_notifications_cancel">Nee Merci</string>
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <string name="hidden_notifications_setup">Ariichten</string>
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <string name="zen_mode_and_condition"><xliff:g id="zen_mode" example="Priority interruptions only">%1$s</xliff:g>. <xliff:g id="exit_condition" example="For one hour">%2$s</xliff:g></string>
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <string name="screen_pinning_title">Schierm ass fixéiert</string>
+ <!-- Screen pinning dialog description. -->
+ <string name="screen_pinning_description">Dëst gëtt dir ugewisen, bis du d\'Fixéierung ophiefs. Dréck an hal \"Zréck\" an \"Iwwersiicht\" gläichzäiteg un, fir d\'Fixéierung opzehiewen.</string>
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <string name="screen_pinning_description_accessible">Dëst gëtt dir ugewisen, bis du d\'Fixéierung ophiefs. Dréck an hal \"Zréck\" an \"Iwwersiicht\" un, fir d\'Fixéierung opzehiewen.</string>
+ <!-- Screen pinning positive response. -->
+ <string name="screen_pinning_positive">Verstanen</string>
+ <!-- Screen pinning negative response. -->
+ <string name="screen_pinning_negative">Nee Merci</string>
+ <!-- Hide quick settings tile confirmation title -->
+ <string name="quick_settings_reset_confirmation_title"><xliff:g id="tile_label" example="Hotspot">%1$s</xliff:g> verstoppen?</string>
+ <!-- Hide quick settings tile confirmation message -->
+ <string name="quick_settings_reset_confirmation_message">Dëst gëtt dir d\'nächst Kéier ugewisen, wann s du et an den Astellungen nees aktivéiers.</string>
+ <!-- Hide quick settings tile confirmation button -->
+ <string name="quick_settings_reset_confirmation_button">Verstoppen</string>
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <string name="status_bar_ethernet">Ethernet</string>
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">Fligermodus</string>
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <string name="accessibility_status_bar_hotspot">Zougankspunkt</string>
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <string name="got_it">Verstanen</string>
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+ <string name="enable_bluetooth_confirmation_ok">Uschalten</string>
+</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/cm_arrays.xml b/packages/SystemUI/res/values-lo-rLA/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-lo-rLA/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/cm_strings.xml b/packages/SystemUI/res/values-lo-rLA/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-lo-rLA/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index c75bbe1..fba46b2 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -265,7 +265,7 @@
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ບໍ່ມີເຄືອຂ່າຍ"</string>
<string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi​-Fi ປິດ"</string>
<string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"ບໍ່​ມີ​ເຄືອ​ຂ່າຍ Wi-Fi ຢູ່"</string>
- <string name="quick_settings_cast_title" msgid="7709016546426454729">"ຄາສທ໌"</string>
+ <string name="quick_settings_cast_title" msgid="7709016546426454729">"ການສົ່ງສັນຍານ"</string>
<string name="quick_settings_casting" msgid="6601710681033353316">"​ກຳ​ລັງ​ສົ່ງ​ສັນ​ຍານ"</string>
<string name="quick_settings_cast_device_default_name" msgid="5367253104742382945">"​ອຸ​ປະ​ກອນບໍ່​ມີ​ຊື່"</string>
<string name="quick_settings_cast_device_default_description" msgid="2484573682378634413">"​ພ້ອ​ມ​ສົ່ງ​ສັນ​ຍານ​ແລ້ວ"</string>
diff --git a/packages/SystemUI/res/values-lt/cm_arrays.xml b/packages/SystemUI/res/values-lt/cm_arrays.xml
new file mode 100644
index 0000000..4dfe58f
--- /dev/null
+++ b/packages/SystemUI/res/values-lt/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Š</item>
+ <!-- North -->
+ <item>ŠR</item>
+ <!-- North east -->
+ <item>R</item>
+ <!-- East -->
+ <item>PR</item>
+ <!-- South east -->
+ <item>P</item>
+ <!-- South -->
+ <item>PV</item>
+ <!-- South west -->
+ <item>V</item>
+ <!-- West -->
+ <item>ŠV</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-lt/cm_strings.xml b/packages/SystemUI/res/values-lt/cm_strings.xml
new file mode 100644
index 0000000..8ace97c
--- /dev/null
+++ b/packages/SystemUI/res/values-lt/cm_strings.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Braukite į dešinę, kad %1$s</string>
+ <string name="right_shortcut_hint">Braukite į kairę, kad %1$s</string>
+ <string name="select_application">Pasirinkti programą</string>
+ <string name="lockscreen_choose_action_title">Pasirinkti veiksmą</string>
+ <string name="lockscreen_none_target">Joks</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Pasirinkite veiksmą, kad jį priskirtumėte</string>
+ <string name="navbar_home_button">Pagrindinis mygtukas</string>
+ <string name="navbar_recent_button">„Naujausių“ mygtukas</string>
+ <string name="navbar_search_button">Paieškos mygtukas</string>
+ <string name="navbar_back_button">Atgal mygtukas</string>
+ <string name="navbar_empty_button">Tuščias mygtukas</string>
+ <string name="navbar_menu_conditional_button">Meniu mygtukas (automatiškai slepiamas)</string>
+ <string name="navbar_menu_always_button">Meniu mygtukas (visada rodomas)</string>
+ <string name="navbar_menu_big_button">Meniu mygtukas</string>
+ <string name="accessibility_dpad_left">Žymeklis kairėje</string>
+ <string name="accessibility_dpad_right">Žymeklis dešinėje</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Ištrinti programos duomenis</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Priverstinai sustabdyti</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Pašalinti</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiliai išjungti.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profilis: <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiliai išjungti.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profilis pakeistas į <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicijuojama\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Tai laikys jį matomą iki kol atsegsite. Palieskite ir laikykite mygtuką atgal, kad atsegtumėte.</string>
+ <string name="quick_settings_custom_tile_detail_title">Tinkinta plytelė</string>
+ <string name="quick_settings_remove">Pašalinti plytelę</string>
+ <string name="quick_settings_network_adb_label">„Android“ derinimas per tinklą</string>
+ <string name="quick_settings_compass_label">Kompasas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistemos profiliai</string>
+ <string name="quick_settings_profiles_off">Profiliai neleidžiami</string>
+ <string name="quick_settings_heads_up_label">Iššokantys pranešimai</string>
+ <string name="quick_settings_battery_saver_label">Akumuliatoriaus tausojimas</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinchronizavimas išjungtas.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinchronizavimas įjungtas.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinchronizavimas išjungtas.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinchronizavimas įjungtas.</string>
+ <string name="quick_settings_sync_label">Sinchronizavimas</string>
+ <string name="quick_settings_volume_panel_label">Garsumo skydelis</string>
+ <string name="quick_settings_usb_tether_label">USB susiejimas</string>
+ <string name="quick_settings_screen_timeout_detail_title">Ekrano skirtasis laikas</string>
+ <string name="quick_settings_lockscreen_label">Ekrano užraktas</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Ekrano užraktas vykdomas</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ekrano skirtasis laikas: <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Ekrano skirtasis laikas pakeistas į <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <string name="qs_tile_performance">Akumuliatoriaus režimas</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Akumuliatoriaus režimas: energijos tausojimo režimas.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Akumuliatoriaus režimas: subalansuotas režimas.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Akumuliatoriaus režimas: našumo režimas.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Akumuliatoriaus režimas: efektyvus režimas.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Akumuliatoriaus rėžimas: spartus režimas.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Akumuliatoriaus režimas pakeistas į energijos tausojimo režimą.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Akumuliatoriaus režimas pakeistas į subalansuotą režimą.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Akumuliatoriaus režimas pakeistas į našumo režimą.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Akumuliatoriaus režimas pakeistas į efektyvų režimą.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Akumuliatoriaus režimas pakeistas į spartų režimą.</string>
+ <string name="quick_settings_performance_profile_detail_title">Akumuliatoriaus režimas</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Ekrano užraktas išjungtas.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Ekrano užraktas įjungtas.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Ekrano užraktas išjungtas.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Ekrano užraktas įjungtas.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display išjungta.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display įjungta.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display išjungta.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display įjungta.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Iššokantys pranešimai išjungti.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Iššokantys pranešimai įjungti.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Iššokantys pranešimai išjungti.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Iššokantys pranešimai įjungti.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Akumuliatoriaus tausojimas išjungtas.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Akumuliatoriaus tausojimas įjungtas.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Akumuliatoriaus tausojimas išjungtas.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Akumuliatoriaus tausojimas įjungtas.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinaminė plytelė</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Kitas signalas</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Įvesties metodas</string>
+ <string name="dynamic_qs_tile_su_label">Prieiga prie „Root“</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Vietovės ataskaitos: akumuliatoriaus tausojimo režimas.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Vietovės ataskaitos: tik daviklių režimas.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Vietovės ataskaitos: didelio tikslumo režimas.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Vietovės režimas</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Akumuliatoriaus tausojimas</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Tik įrenginys</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Didelis tikslumas</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Vietovės ataskaitos pakeistos į akumuliatoriaus tausojimo režimą.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Vietovės ataskaitos pakeistos į tik jutiklių režimą.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Vietovės ataskaitos pakeistos į didelio tikslumo režimą.</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Doko akumuliatorius <xliff:g id="number">%d</xliff:g> proc.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Rodyti grojimo eilę</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-lv/cm_arrays.xml b/packages/SystemUI/res/values-lv/cm_arrays.xml
new file mode 100644
index 0000000..55d53d7
--- /dev/null
+++ b/packages/SystemUI/res/values-lv/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Z</item>
+ <!-- North -->
+ <item>ZA</item>
+ <!-- North east -->
+ <item>A</item>
+ <!-- East -->
+ <item>DA</item>
+ <!-- South east -->
+ <item>D</item>
+ <!-- South -->
+ <item>DR</item>
+ <!-- South west -->
+ <item>R</item>
+ <!-- West -->
+ <item>ZR</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-lv/cm_strings.xml b/packages/SystemUI/res/values-lv/cm_strings.xml
new file mode 100644
index 0000000..be09e24
--- /dev/null
+++ b/packages/SystemUI/res/values-lv/cm_strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Izvēlieties darbību, ko piešķirt</string>
+ <string name="navbar_home_button">Mājas poga</string>
+ <string name="navbar_recent_button">Nesenā poga</string>
+ <string name="navbar_search_button">Meklēšanas poga</string>
+ <string name="navbar_back_button">Atpakaļ poga</string>
+ <string name="navbar_menu_conditional_button">Izvēlnes (automātiski paslēpt) poga</string>
+ <string name="navbar_menu_always_button">Izvēlnes (vienmēr rādīt) poga</string>
+ <string name="navbar_menu_big_button">Izvēlnes poga</string>
+ <string name="accessibility_dpad_left">Kursoru pa kreisi</string>
+ <string name="accessibility_dpad_right">Kursoru pa labi</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Nodzēst lietotnes datus</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Piespiedu apturēšana</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Noņemt</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">Inicializē\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-mdpi/cm_dimens.xml b/packages/SystemUI/res/values-mdpi/cm_dimens.xml
new file mode 100644
index 0000000..20d836a
--- /dev/null
+++ b/packages/SystemUI/res/values-mdpi/cm_dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="weather_text_size">9sp</dimen>
+</resources> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-mk-rMK/cm_arrays.xml b/packages/SystemUI/res/values-mk-rMK/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-mk-rMK/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/cm_strings.xml b/packages/SystemUI/res/values-mk-rMK/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-mk-rMK/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index 9c464ad..47912b9 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -42,7 +42,7 @@
<string name="battery_saver_confirmation_title" msgid="5299585433050361634">"Дали да се вклучи штедачот на батерија?"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Вклучи"</string>
<string name="battery_saver_start_action" msgid="5576697451677486320">"Вклучете го штедачот на батерија"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Подесувања"</string>
+ <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Поставки"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Автоматско ротирање на екранот"</string>
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ИСКЛ."</string>
@@ -150,10 +150,8 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим на работа во авион."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Нема СИМ-картичка"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Променување на мрежата на операторот."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
- <string name="accessibility_settings_button" msgid="799583911231893380">"Подесувања на систем."</string>
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Батерија <xliff:g id="NUMBER">%d</xliff:g> проценти."</string>
+ <string name="accessibility_settings_button" msgid="799583911231893380">"Поставки на систем."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Известувања"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Избриши известување."</string>
<string name="accessibility_gps_enabled" msgid="3511469499240123019">"ГПС е овозможен."</string>
@@ -257,7 +255,7 @@
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Медиумски уред"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Само итни повици"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Подесувања"</string>
+ <string name="quick_settings_settings_label" msgid="5326556592578065401">"Поставки"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Време"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Јас"</string>
<string name="quick_settings_user_title" msgid="4467690427642392403">"Корисник"</string>
diff --git a/packages/SystemUI/res/values-ml-rIN/cm_arrays.xml b/packages/SystemUI/res/values-ml-rIN/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-ml-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/cm_strings.xml b/packages/SystemUI/res/values-ml-rIN/cm_strings.xml
new file mode 100644
index 0000000..c97efdb
--- /dev/null
+++ b/packages/SystemUI/res/values-ml-rIN/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s ന് വേണ്ടി വലത്തേക്ക് സ്വൈപ്പ് ചെയ്യുക</string>
+ <string name="right_shortcut_hint">%1$s ന് വേണ്ടി ഇടത്തേക്ക് സ്വൈപ്പ് ചെയ്യുക</string>
+ <string name="lockscreen_message">ഒരു ലോക്ക് സ്ക്രീന്‍ ഷോര്‍ട്ട്കട്ട് വീണ്ടും നിയോഗിക്കുന്നതിന് ഇടത് അല്ലെങ്കില്‍ വലത്തുള്ള ഒരു ഐക്കണ്‍ ക്ലിക്ക് ചെയ്യുക.</string>
+ <string name="lockscreen_default_target">സ്ഥിരമായത്</string>
+ <string name="select_application">അപ്ലിക്കേഷൻ തിരഞ്ഞെടുക്കുക</string>
+ <string name="lockscreen_choose_action_title">നടപടി തിരഞ്ഞെടുക്കുക</string>
+ <string name="lockscreen_none_target">ആരിൽ നിന്നും വേണ്ട</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">നിയോഗിക്കുന്നതിനായി പ്രവർത്തനം തിരഞ്ഞെടുക്കുക</string>
+ <string name="navbar_home_button">ഹോം ബട്ടൺ</string>
+ <string name="navbar_recent_button">സമീപകാലത്തുള്ളവ ബട്ടൺ</string>
+ <string name="navbar_search_button">തിരയൽ ബട്ടൺ</string>
+ <string name="navbar_back_button">പിന്നിലേക്ക് ബട്ടൺ</string>
+ <string name="navbar_empty_button">ശൂന്യ ബട്ടൺ</string>
+ <string name="navbar_menu_conditional_button">മെനു (ആട്ടോഹൈഡ്) ബട്ടൺ</string>
+ <string name="navbar_menu_always_button">മെനു (എല്ലായ്പ്പോഴും കാണിക്കുക) ബട്ടൺ</string>
+ <string name="navbar_menu_big_button">മെനു ബട്ടൺ</string>
+ <string name="accessibility_dpad_left">കർസർ ഇടത്</string>
+ <string name="accessibility_dpad_right">കർസർ വലത്</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ആപ്ലിക്കേഷൻ ഡാറ്റ മായ്ക്കുക</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">നിർബന്ധിതമായി നിർത്തുക</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">അണ്‍ഇസ്റ്റാളുചെയ്യുക</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ലൈറ്റ് തെളിച്ചം</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">പ്രൊഫൈലുകൾ ഓഫ്.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">പ്രൊഫൈൽ: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">പ്രൊഫൈലുകൾ ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">പ്രൊഫൈൽ <xliff:g id="profile" example="Default">%s</xliff:g> ലേക്ക് മാറ്റി.</string>
+ <string name="quick_settings_compass_init">ആരംഭിക്കുന്നു\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">പ്രകാശ ക്രമീകരണങ്ങള്‍</string>
+ <string name="led_notification_text">ക്രമീകരണങ്ങളിലൂടെ LED വെളിച്ചം പ്രാപ്തമാക്കി</string>
+ <string name="qs_tile_edit_header_instruction">പുനഃക്രമീകരിക്കുന്നതിന് ടൈലുകൾ ആമര്‍ത്തിപ്പിടിക്കുക</string>
+ <string name="quick_settings_edit_label">ടൈലുകൾ ചിട്ടപ്പെടുത്തുക</string>
+ <string name="quick_settings_cannot_delete_edit_tile">ചിട്ടപ്പെടുത്തുക ടൈൽ ഇല്ലാതാക്കാൻ കഴിയില്ല</string>
+ <string name="qs_tiles_reset_confirmation">ദ്രുത ക്രമീകരണ ടൈലുകള്‍ ഡിഫോള്‍ട്ട് കോൺഫിഗറേഷനിലേക്ക് പുനഃസജ്ജമാക്കണോ?</string>
+ <string name="quick_settings_tile_reset_to_default">ഡിഫോള്‍ട്ട് ലേഔട്ടിലേക്ക് പുനഃസജ്ജമാക്കണോ?</string>
+ <string name="quick_settings_title_header">ശീർഷകം</string>
+ <string name="quick_settings_title_tiles">ടൈലുകൾ</string>
+ <string name="quick_settings_title_show_weather">കാലാവസ്ഥ ദൃശ്യമാക്കുക</string>
+ <string name="quick_settings_title_show_brightness_slider">തെളിച്ചം സ്ലൈഡർ ദൃശ്യമാക്കുക</string>
+ <string name="quick_settings_title_enlarge_first_row">ആദ്യ വരി വലുതാക്കുക</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">നിങ്ങൾ അൺപിന്‍ ചെയ്യുന്നതുവരെ ഇത് ഇതിനെ കാഴ്ചയില്‍ നിലനിർത്തുന്നു. അൺപിന്‍ ചെയ്യുന്നതിന് പിന്നിലേക്ക് ബട്ടൺ
+അമര്‍ത്തിപ്പിടിക്കുക.</string>
+ <string name="quick_settings_custom_tile_detail_title">ഇഷ്ടാനുസൃത ടൈൽ</string>
+ <string name="quick_settings_remove">ടൈൽ നീക്കം ചെയ്യുക</string>
+ <string name="quick_settings_network_adb_label">നെറ്റ്‌വർക്കിൽ ADB</string>
+ <string name="quick_settings_compass_label">കോമ്പസ്</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">സിസ്റ്റം പ്രൊഫൈലുകൾ</string>
+ <string name="quick_settings_profiles_off">പ്രൊഫൈലുകൾ അപ്രാപ്തമാണ്</string>
+ <string name="quick_settings_heads_up_label">മുന്നറിയിപ്പ്</string>
+ <string name="quick_settings_battery_saver_label">ബാറ്ററി സേവർ</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">കഫീൻ</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">പൊരുത്തപ്പെടൽ ഓഫ്.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">പൊരുത്തപ്പെടൽ ഓണ്‍.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">പൊരുത്തപ്പെടൽ ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">പൊരുത്തപ്പെടൽ ഓണ്‍ ചെയ്തു.</string>
+ <string name="quick_settings_sync_label">സമന്വയിപ്പിക്കുക</string>
+ <string name="quick_settings_volume_panel_label">വോളിയം പാനൽ</string>
+ <string name="quick_settings_usb_tether_label">USB ടെതറിംഗ്</string>
+ <string name="quick_settings_screen_timeout_detail_title">സ്ക്രീൻ സമയപരിധി</string>
+ <string name="quick_settings_lockscreen_label">ലോക്ക് സ്‌ക്രീൻ</string>
+ <string name="quick_settings_ambient_display_label">ആമ്പിയന്റ് ഡിസ്‌പ്ലേ</string>
+ <string name="quick_settings_lockscreen_label_enforced">ലോക്ക് സ്ക്രീൻ നടപ്പിലാക്കി</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">പ്രൊഫൈൽ പ്രവർത്തനരഹിതമാക്കി</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">സ്ക്രീൻ ടൈംഔട്ട്: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">സ്ക്രീൻ ടൈംഔട്ട് <xliff:g id="timeout" example="30 seconds">%s</xliff:g> ലേക്ക് മാറ്റി.</string>
+ <string name="qs_tile_performance">ബാറ്ററി മോഡ്</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">ബാറ്ററി മോഡ്: പവർ ലാഭിക്കല്‍ മോഡ്.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">ബാറ്ററി മോഡ്: സന്തുലിത മോഡ്.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">ബാറ്ററി മോഡ്: പ്രകടന മോഡ്.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">ബാറ്ററി മോഡ്: കാര്യക്ഷമതാ മോഡ്.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">ബാറ്ററി മോഡ്: അതിവേഗ മോഡ്.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">ബാറ്ററി മോഡ് പവർ ലാഭിക്കല്‍ മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">ബാറ്ററി മോഡ് സന്തുലിത മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">ബാറ്ററി മോഡ് പ്രകടന മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">ബാറ്ററി മോഡ് കാര്യക്ഷമതാ മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">ബാറ്ററി മോഡ് അതിവേഗ മോഡിലേക്ക് മാറ്റി.</string>
+ <string name="quick_settings_performance_profile_detail_title">ബാറ്ററി മോഡ്</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">ലോക്ക് സ്ക്രീന്‍ ഓഫ്.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">ലോക്ക് സ്ക്രീന്‍ ഓണ്‍.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">ലോക്ക് സ്ക്രീൻ ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">ലോക്ക് സ്ക്രീൻ ഓണ്‍ ചെയ്തു.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">ആമ്പിയൻറ് പ്രദര്‍ശനം ഓഫ്.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">ആമ്പിയൻറ് പ്രദര്‍ശനം ഓണ്‍.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">ആമ്പിയന്റ് പ്രദര്‍ശനം ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">ആമ്പിയന്റ് പ്രദര്‍ശനം ഓണ്‍ ചെയ്തു.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">ഹെഡ്സ് അപ്പ് ഓഫ്.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">ഹെഡ്സ് അപ്പ് ഓണ്‍.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">ഹെഡ്സ് അപ്പ് ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">ഹെഡ്സ് അപ്പ് ഓണ്‍ ചെയ്തു.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">കഫീൻ ഓഫ്‌.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">കഫീൻ ഓണ്‍.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">ഓഫ് സേവർ ഓഫ്.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">ഓഫ് സേവർ ഓണ്‍.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">ബാറ്ററി സേവർ ഓഫ് ചെയ്തു.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">ബാറ്ററി സേവർ ഓണ്‍ ചെയ്തു.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ഡൈനാമിക്ക് ടൈൽ</string>
+ <string name="dynamic_qs_tile_next_alarm_label">അടുത്ത അലാറം</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME സെലക്ടർ</string>
+ <string name="dynamic_qs_tile_su_label">റൂട്ട് പ്രവേശനം</string>
+ <string name="quick_settings_title_advanced_location">ട്രൈ-സ്റ്റേറ്റ് സ്ഥാനം</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">സ്ഥാനം റിപ്പോർട്ടിംഗ്: ബാറ്ററി ലാഭിക്കല്‍ മോഡ്.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">സ്ഥാനം റിപ്പോർട്ടിംഗ്: സെൻസറുകൾ മാത്രമുള്ള മോഡ്.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">സ്ഥാനം റിപ്പോർട്ടിംഗ്: ഉയർന്ന കൃത്യതാ മോഡ്.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">ലൊക്കേഷൻ മോഡ്</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">ബാറ്ററി ലാഭിക്കൽ</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">ഉപകരണം മാത്രം</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">ഉയർന്ന കൃത്യത</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">സ്ഥാനം റിപ്പോർട്ടിംഗ്: ബാറ്ററി ലാഭിക്കുന്ന മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">സ്ഥാനം റിപ്പോർട്ടിംഗ് സെൻസറുകൾ മാത്രമുള്ള മോഡിലേക്ക് മാറ്റി.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">സ്ഥാനം റിപ്പോർട്ടിംഗ് ഉയർന്ന കൃത്യതാ മോഡിലേക്ക് മാറ്റി.</string>
+ <string name="quick_settings_tiles_category_system">സിസ്റ്റം ടൈലുകൾ</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">ഒരു ടൈൽ ചേർക്കുക</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">എയര്‍പ്ലെയിന്‍ മോഡ് പ്രാപ്തമായിരിക്കുമ്പോള്‍ മൊബൈൽ നെറ്റ്‌വർക്കുകളിലേക്ക് ബന്ധിപ്പിക്കാൻ കഴിയില്ല. എയര്‍പ്ലെയിന്‍ മോഡ് അപ്രാപ്തമാക്കി വീണ്ടും ശ്രമിക്കുക.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ടോർച്ച് ഓൺ ആണ്</string>
+ <string name="quick_settings_tile_flashlight_not_summary">ഓഫാക്കാൻ ടാപ്പുചെയ്യുക</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d കക്ഷി</item>
+ <item quantity="other">%1$d കക്ഷികള്‍</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ഡോക്ക് ബാറ്ററി <xliff:g id="number">%d</xliff:g> ശതമാനം.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">പ്ലേ ക്യൂ ദൃശ്യമാക്കുക</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index eea27a5..4731ba1 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -32,7 +32,7 @@
<string name="status_bar_no_notifications_title" msgid="4755261167193833213">"അറിയിപ്പുകൾ ഒന്നുമില്ല"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"നടന്നുകൊണ്ടിരിക്കുന്നവ"</string>
<string name="status_bar_latest_events_title" msgid="6594767438577593172">"അറിയിപ്പുകൾ"</string>
- <string name="battery_low_title" msgid="6456385927409742437">"ബാറ്ററി നില കുറവാണ്"</string>
+ <string name="battery_low_title" msgid="6456385927409742437">"ബാറ്ററി കുറവാണ്"</string>
<string name="battery_low_percent_format" msgid="2900940511201380775">"<xliff:g id="PERCENTAGE">%s</xliff:g> ശേഷിക്കുന്നു"</string>
<string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"<xliff:g id="PERCENTAGE">%s</xliff:g> ശേഷിക്കുന്നു. ബാറ്ററി സേവർ ഓണാണ്."</string>
<string name="invalid_charger" msgid="4549105996740522523">"USB ചാർജ്ജുചെയ്യൽ പിന്തുണയ്ക്കുന്നില്ല.\nഅതിന്റെ അനുബന്ധ ചാർജ്ജർ മാത്രം ഉപയോഗിക്കുക."</string>
diff --git a/packages/SystemUI/res/values-mn-rMN/cm_arrays.xml b/packages/SystemUI/res/values-mn-rMN/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-mn-rMN/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-mn-rMN/cm_strings.xml b/packages/SystemUI/res/values-mn-rMN/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-mn-rMN/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/cm_arrays.xml b/packages/SystemUI/res/values-mr-rIN/cm_arrays.xml
new file mode 100644
index 0000000..198ac30
--- /dev/null
+++ b/packages/SystemUI/res/values-mr-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW </item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/cm_strings.xml b/packages/SystemUI/res/values-mr-rIN/cm_strings.xml
new file mode 100644
index 0000000..b2ff8aa
--- /dev/null
+++ b/packages/SystemUI/res/values-mr-rIN/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s साठी उजवीकडे स्वाईप करा</string>
+ <string name="right_shortcut_hint">%1$s साठी डावीकडे स्वाईप करा</string>
+ <string name="lockscreen_message">लॉक स्क्रीन शॉर्टकट पुन्हा नेमण्यासाठी डावीकडील किंवा उजवीकडील प्रतीक टॅप करा.</string>
+ <string name="lockscreen_default_target">डीफॉल्ट</string>
+ <string name="select_application">अनुप्रयोग निवडा</string>
+ <string name="lockscreen_choose_action_title">क्रिया निवडा</string>
+ <string name="lockscreen_none_target">काहीही नाही</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">नेमण्यासाठी क्रिया निवडा</string>
+ <string name="navbar_home_button">होम बटण</string>
+ <string name="navbar_recent_button">अलीकडील बटण</string>
+ <string name="navbar_search_button">शोध बटण</string>
+ <string name="navbar_back_button">मागे बटण</string>
+ <string name="navbar_empty_button">रिक्त बटण</string>
+ <string name="navbar_menu_conditional_button">मेनू (ऑटो लपवा) बटण</string>
+ <string name="navbar_menu_always_button">मेनू (नेहमी दर्शवा) बटण</string>
+ <string name="navbar_menu_big_button">मेनू बटण</string>
+ <string name="accessibility_dpad_left">कर्सर डावा</string>
+ <string name="accessibility_dpad_right">कर्सर उजवा</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">अनुप्रयोग डेटा पुसा</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">सक्तीने थांबवा</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">विस्थापित करा</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">प्रकाश प्रखरता</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">प्रोफाइल्स बंद.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">प्रोफाइल: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">प्रोफाइल्स बंद केला.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">प्रोफाइल <xliff:g id="profile" example="Default">%s</xliff:g>ला बदलला.</string>
+ <string name="quick_settings_compass_init">प्रारंभ करत आहे…</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">प्रकाश सेटिंग्ज</string>
+ <string name="led_notification_text">सेटिंग्जद्वारे LED प्रकाश सक्षम केला</string>
+ <string name="qs_tile_edit_header_instruction">पुनर्मांडणी करण्यासाठी टाईल्स दाबून धरा</string>
+ <string name="quick_settings_edit_label">टाईल्स संपादित करा</string>
+ <string name="quick_settings_cannot_delete_edit_tile">संपादित टाईल हटवू शकत नाही</string>
+ <string name="qs_tiles_reset_confirmation">जलद सेटिंग्ज टाईल्स डिफॉल्ट कॉन्फिगरेशनला रीसेट करायच्या?</string>
+ <string name="quick_settings_tile_reset_to_default">डिफॉल्ट मांडणीला रीसेट करा</string>
+ <string name="quick_settings_title_header">हेडर</string>
+ <string name="quick_settings_title_tiles">टाईल्स</string>
+ <string name="quick_settings_title_show_weather">हवामान दर्शवा</string>
+ <string name="quick_settings_title_show_brightness_slider">चकाकी स्लाईडर दर्शवा</string>
+ <string name="quick_settings_title_enlarge_first_row">पहिली ओळ मोठी करा</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">हे तुम्ही अनपिन करेपर्यंत व्ह्यूमध्ये राहते. अनपिन करण्यासाठी मागे बटणास स्पर्श करून ठेवा.</string>
+ <string name="quick_settings_custom_tile_detail_title">सानुकूल टाईल</string>
+ <string name="quick_settings_remove">टाईल काढा</string>
+ <string name="quick_settings_network_adb_label">नेटवर्कवर ADB</string>
+ <string name="quick_settings_compass_label">कंपास</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">सिस्टिम प्रोफाइल्स</string>
+ <string name="quick_settings_profiles_off">प्रोफाइल्स अक्षम केले</string>
+ <string name="quick_settings_heads_up_label">हेड्स अप</string>
+ <string name="quick_settings_battery_saver_label">बॅटरी सेव्हर</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">कॅफीन</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">सिंक बंद.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">सिंक चालू.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">सिंक बंद केले.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">सिंक चालू केले.</string>
+ <string name="quick_settings_sync_label">संकालन करा</string>
+ <string name="quick_settings_volume_panel_label">ध्वनी पॅनेल</string>
+ <string name="quick_settings_usb_tether_label">USB टेदरिंग</string>
+ <string name="quick_settings_screen_timeout_detail_title">स्क्रीन वेळ संपला</string>
+ <string name="quick_settings_lockscreen_label">लॉक स्‍क्रीन</string>
+ <string name="quick_settings_ambient_display_label">अँबियन्ट प्रदर्शन</string>
+ <string name="quick_settings_lockscreen_label_enforced">लॉक स्क्रीनची अंमलबजावणी केली</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">प्रोफाइल कडून अक्षम</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">स्क्रीन वेळ संपला: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">स्क्रीन वेळ संपला <xliff:g id="timeout" example="30 seconds">%s</xliff:g>ला बदलले.</string>
+ <string name="qs_tile_performance">बॅटरी मोड</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">बॅटरी मोड: पॉवर बचत मोड.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">बॅटरी मोड: बॅलन्स्ड मोड.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">बॅटरी मोड: परफॉर्मन्स मोड.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">बॅटरी मोड: क्षमता मोड.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">बॅटरी मोड: जलद मोड.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">बॅटरी मोड पॉवर बचत मोडला बदलले.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">बॅटरी मोड बॅलन्स्ड मोडला बदलले.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">बॅटरी मोड परफॉर्मन्स मोडला बदलले.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">बॅटरी मोड क्षमता मोडला बदलले.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">बॅटरी मोड जलद मोडला बदलले.</string>
+ <string name="quick_settings_performance_profile_detail_title">बॅटरी मोड</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">लॉक स्क्रीन बंद.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">लॉक स्क्रीन चालू.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">लॉक स्क्रीन बंद केला.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">लॉक स्क्रीन चालू केला.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">आसपासचे प्रदर्शन बंद.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">आसपासचे प्रदर्शन चालू.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">आसपासचे प्रदर्शन बंद केले.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">आसपासचे प्रदर्शन चालू केले.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">हेड्स अप बंद.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">हेड्स अप चालू.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">हेड्स अप बंद केले.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">हेड्स अप चालू केले.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">कॅफीन बंद.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">कॅफिन चालू.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">बॅटरी बचतकर्ता बंद.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">बॅटरी बचतकर्ता चालू.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">बॅटरी बचतकर्ता बंद केले.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">बॅटरी बचतकर्ता चालू केले.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">गतीशील टाईल</string>
+ <string name="dynamic_qs_tile_next_alarm_label">पुढील अलार्म</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME निवडक</string>
+ <string name="dynamic_qs_tile_su_label">रूट ऍक्सेस</string>
+ <string name="quick_settings_title_advanced_location">तिरंगी-राज्य स्थान</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">स्थान अहवाल देणे: बॅटरी बचत मोड.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">स्थान अहवाल देणे: केवळ सेन्सर्स मोड.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">स्थान अहवाल देणे: उच्च अचूकता मोड.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">स्थान मोड</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">बॅटरी बचत</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">केवळ डिव्हाइस</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">उच्च अचूकता</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">स्थान अहवाल देणे बॅटरी बचत मोडला बदलले.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">स्थान अहवाल देणे केवळ सेन्सर्स मोडला बदलले.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">स्थान अहवाल देणे उच्च अचूकता मोडला बदलले.</string>
+ <string name="quick_settings_tiles_category_system">सिस्टिम टाईल्स</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">टाईल जोडा</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">विमान मोड सक्षम केलेला असताना मोबाईल नेटवर्क्ससह कनेक्ट करण्यात अक्षम. विमान मोड अक्षम करा आणि पुन्हा प्रयत्न करा.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">फ्लॅशलाइट चालु आहे</string>
+ <string name="quick_settings_tile_flashlight_not_summary">बंद करण्यासाठी टॅप करा</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d client</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">डेटा सिम नाही</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">डॉक बॅटरी <xliff:g id="number">%d</xliff:g> टक्के.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">प्ले रांग दर्शवा</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index bbe80b4..857f83d 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -403,7 +403,7 @@
<string name="system_ui_tuner" msgid="708224127392452018">"सिस्टीम UI ट्यूनर"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"एम्बेडेड बॅटरी टक्केवारी दर्शवा"</string>
<string name="show_battery_percentage_summary" msgid="3215025775576786037">"चार्ज होत नसताना स्टेटस बार चिन्हामध्‍ये बॅटरी पातळी टक्केवारी दर्शवा"</string>
- <string name="quick_settings" msgid="10042998191725428">"दृत सेटिंग्ज"</string>
+ <string name="quick_settings" msgid="10042998191725428">"द्रुत सेटिंग्ज"</string>
<string name="status_bar" msgid="4877645476959324760">"स्टेटस बार"</string>
<string name="demo_mode" msgid="2389163018533514619">"डेमो मोड"</string>
<string name="enable_demo_mode" msgid="4844205668718636518">"डेमो मोड सक्षम करा"</string>
diff --git a/packages/SystemUI/res/values-ms-rMY/cm_arrays.xml b/packages/SystemUI/res/values-ms-rMY/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ms-rMY/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/cm_strings.xml b/packages/SystemUI/res/values-ms-rMY/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ms-rMY/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-my-rMM/cm_arrays.xml b/packages/SystemUI/res/values-my-rMM/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-my-rMM/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-my-rMM/cm_strings.xml b/packages/SystemUI/res/values-my-rMM/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-my-rMM/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-nb/cm_arrays.xml b/packages/SystemUI/res/values-nb/cm_arrays.xml
new file mode 100644
index 0000000..1d89f10
--- /dev/null
+++ b/packages/SystemUI/res/values-nb/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NØ</item>
+ <!-- North east -->
+ <item>Ø</item>
+ <!-- East -->
+ <item>SØ</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SV</item>
+ <!-- South west -->
+ <item>V</item>
+ <!-- West -->
+ <item>NV</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-nb/cm_strings.xml b/packages/SystemUI/res/values-nb/cm_strings.xml
new file mode 100644
index 0000000..ebef919
--- /dev/null
+++ b/packages/SystemUI/res/values-nb/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Sveip til høyre for %1$s</string>
+ <string name="right_shortcut_hint">Sveip til venstre for %1$s</string>
+ <string name="lockscreen_message">Trykk på ikonet til venstre eller høyre for å tilordne en låseskjermsnarvei.</string>
+ <string name="lockscreen_default_target">Standard</string>
+ <string name="select_application">Velg applikasjon</string>
+ <string name="lockscreen_choose_action_title">Velg handling</string>
+ <string name="lockscreen_none_target">Ingen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Velg handlingen du vil tilordne</string>
+ <string name="navbar_home_button">Hjem-knappen</string>
+ <string name="navbar_recent_button">Siste knappen</string>
+ <string name="navbar_search_button">Søkeknapp</string>
+ <string name="navbar_back_button">Tilbake-knappen</string>
+ <string name="navbar_empty_button">Tom knapp</string>
+ <string name="navbar_menu_conditional_button">Menyknappen (Skjul)</string>
+ <string name="navbar_menu_always_button">Menyknappen (alltid vis)</string>
+ <string name="navbar_menu_big_button">Meny-knappen</string>
+ <string name="accessibility_dpad_left">Markør til venstre</string>
+ <string name="accessibility_dpad_right">Markør til høyre</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Slett appdata</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Tving avslutning</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Avinstaller</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Lys lysstyrke</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiler av.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s </xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiler deaktivert.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil endret til <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initialiserer\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Lys innstillinger</string>
+ <string name="led_notification_text">LED lyset aktiveres av innstillingene</string>
+ <string name="qs_tile_edit_header_instruction">Trykk og hold fliser for å omorganisere</string>
+ <string name="quick_settings_edit_label">Rediger fliser</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Kan ikke slette Rediger-flisen</string>
+ <string name="qs_tiles_reset_confirmation">Tilbakestill innstillinger for innstillingsflisene til standardkonfigurasjonen?</string>
+ <string name="quick_settings_tile_reset_to_default">Tilbakestille til standard oppsett</string>
+ <string name="quick_settings_title_header">Topptekst</string>
+ <string name="quick_settings_title_tiles">Fliser</string>
+ <string name="quick_settings_title_show_weather">Vis været</string>
+ <string name="quick_settings_title_show_brightness_slider">Vis lysstyrkeendrer</string>
+ <string name="quick_settings_title_enlarge_first_row">Forstørr første rad</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Dette holder den i syne inntill du løsner den. Trykk og hold på tilbake knappen for å løsne.</string>
+ <string name="quick_settings_custom_tile_detail_title">Egendefinerte fliser</string>
+ <string name="quick_settings_remove">Fjern flis</string>
+ <string name="quick_settings_network_adb_label">ADB over nettverk</string>
+ <string name="quick_settings_compass_label">Kompass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">System profiler</string>
+ <string name="quick_settings_profiles_off">Profiler deaktivert</string>
+ <string name="quick_settings_heads_up_label">Flytende notifikasjoner</string>
+ <string name="quick_settings_battery_saver_label">Batterisparing</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Batterisparing (lading)</string>
+ <string name="quick_settings_caffeine_label">Koffein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synkronisering av.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synkronisering på.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synkronisering avskrudd.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synkronisering aktivert.</string>
+ <string name="quick_settings_sync_label">Synkronisering</string>
+ <string name="quick_settings_volume_panel_label">Volumpanel</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tidsavbrudd for skjermen</string>
+ <string name="quick_settings_lockscreen_label">Låseskjerm</string>
+ <string name="quick_settings_ambient_display_label">Ambient skjerm</string>
+ <string name="quick_settings_lockscreen_label_enforced">Låseskjerm er påkrevd</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Deaktivert av profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Skjerm tidsavbrudd: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Skjermens tidsavbrudd endret til <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Batterimodus</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Batterimodus: strømsparing.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Batterimodus: balansert.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Batterimodus: ytelse.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Batterimodus: effektivitet modus.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Batterimodus: hurtigmodus.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Batterimodus er endret til strømsparingsmodus.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Batterimodus er endret til balansert modus.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Batterimodus er endret til ytelsesmodus.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Batterimodus endret til effektivitet modus.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Batterimodus endret til hurtigmodus.</string>
+ <string name="quick_settings_performance_profile_detail_title">Batterimodus</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Låseskjerm av.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Låseskjerm på.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Låseskjerm slått av.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Låseskjerm slått på.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient skjerm av.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient skjerm på.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient skjerm er skrudd av.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient skjerm er skrudd på.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up notifikasjoner er av.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up notifikasjoner er på.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads-up ble deaktivert.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads-up ble aktivert.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Koffein av.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Koffein på.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Batterisparing av.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Batterisparing på.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Batterisparing slått av.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Batterisparing slått på.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamisk flis</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Neste alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME-velger</string>
+ <string name="dynamic_qs_tile_su_label">Root-tilgang</string>
+ <string name="dynamic_qs_tile_themes_label">Temaer</string>
+ <string name="quick_settings_title_advanced_location">Tre nivåer stedsangivelse</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Lokasjonsmodus: strømsparemodus.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Lokasjonsmodus: kun sensorer.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Lokasjonsmodus: høy nøyaktighet.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Lokasjonsmodus</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Batterisparing</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Kun enhet</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Høy nøyaktighet</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Lokasjonsmodus endret til batterisparing.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Lokasjonsmodus endret til bare sensorer.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Lokasjonsmodus endret til høy nøyaktighet.</string>
+ <string name="quick_settings_tiles_category_system">Systemfliser</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Legge til en flis</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Kan ikke koble til mobile nettverk mens Flymodus er aktivert. Deaktivere flymodus og prøv igjen.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Lommelykt er på</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Trykk for å slå av</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="other">%1$d klienter</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ingen data SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dokkingstasjonens batteri <xliff:g id="number"> %d</xliff:g> prosent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Vis avspillingskø</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Sveip ned for å utvide</string>
+ <string name="swipe_left_hint">Sveip til høyre for å <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Sveip til høyre for å se varsler</string>
+</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 7e645ec..e259d69 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -378,7 +378,7 @@
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheten forblir låst til du låser den opp manuelt"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"Motta varsler raskere"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"Se dem før du låser opp"</string>
- <string name="hidden_notifications_cancel" msgid="3690709735122344913">"Nei takk"</string>
+ <string name="hidden_notifications_cancel" msgid="3690709735122344913">"Nei, takk"</string>
<string name="hidden_notifications_setup" msgid="41079514801976810">"Konfigurer"</string>
<string name="notification_expand_button_text" msgid="1037425494153780718">"Se alle"</string>
<string name="notification_collapse_button_text" msgid="6883253262134328057">"Skjul alle"</string>
@@ -390,7 +390,7 @@
<string name="screen_pinning_description" msgid="1346522416878235405">"På denne måten blir skjermen synlig frem til du låser den opp. Trykk på og hold inne Tilbake og Oversikt samtidig for å låse opp."</string>
<string name="screen_pinning_description_accessible" msgid="8518446209564202557">"På denne måten blir skjermen synlig frem til du låser den opp. Trykk på og hold inne Tilbake og Oversikt for å låse opp."</string>
<string name="screen_pinning_positive" msgid="3783985798366751226">"Skjønner"</string>
- <string name="screen_pinning_negative" msgid="3741602308343880268">"Nei takk"</string>
+ <string name="screen_pinning_negative" msgid="3741602308343880268">"Nei, takk"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vil du skjule <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
<string name="quick_settings_reset_confirmation_message" msgid="2235970126803317374">"Den vises igjen neste gang du slår den på i innstillingene."</string>
<string name="quick_settings_reset_confirmation_button" msgid="2660339101868367515">"Skjul"</string>
diff --git a/packages/SystemUI/res/values-ne-rNP/cm_arrays.xml b/packages/SystemUI/res/values-ne-rNP/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ne-rNP/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ne-rNP/cm_strings.xml b/packages/SystemUI/res/values-ne-rNP/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ne-rNP/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-nl/cm_arrays.xml b/packages/SystemUI/res/values-nl/cm_arrays.xml
new file mode 100644
index 0000000..81ca7d2
--- /dev/null
+++ b/packages/SystemUI/res/values-nl/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NO</item>
+ <!-- North east -->
+ <item>O</item>
+ <!-- East -->
+ <item>ZO</item>
+ <!-- South east -->
+ <item>Z</item>
+ <!-- South -->
+ <item>ZW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-nl/cm_strings.xml b/packages/SystemUI/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..ac6ec80
--- /dev/null
+++ b/packages/SystemUI/res/values-nl/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Veeg naar rechts voor %1$s</string>
+ <string name="right_shortcut_hint">Veeg naar links voor %1$s</string>
+ <string name="lockscreen_message">Tik links of rechts op een pictogram om de snelkoppeling opnieuw toe te wijzen.</string>
+ <string name="lockscreen_default_target">Standaard</string>
+ <string name="select_application">App selecteren</string>
+ <string name="lockscreen_choose_action_title">Actie selecteren</string>
+ <string name="lockscreen_none_target">Geen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Kies de toe te wijzen functie</string>
+ <string name="navbar_home_button">Thuisknop</string>
+ <string name="navbar_recent_button">Recentknop</string>
+ <string name="navbar_search_button">Zoekknop</string>
+ <string name="navbar_back_button">Terugknop</string>
+ <string name="navbar_empty_button">Lege knop</string>
+ <string name="navbar_menu_conditional_button">Menuknop (altijd verbergen)</string>
+ <string name="navbar_menu_always_button">Menuknop (altijd tonen)</string>
+ <string name="navbar_menu_big_button">Menuknop</string>
+ <string name="accessibility_dpad_left">Cursor links</string>
+ <string name="accessibility_dpad_right">Cursor rechts</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">App-gegevens wissen</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Nu stoppen</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Verwijderen</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Verlichtingshelderheid</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profielen uit.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profiel: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profielen uitgeschakeld.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profiel gewijzigd naar <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initialiseren\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Verlichtingsinstellingen</string>
+ <string name="led_notification_text">LED-verlichting ingeschakeld door instellingen</string>
+ <string name="qs_tile_edit_header_instruction">Tegels ingedrukt houden om te verplaatsen</string>
+ <string name="quick_settings_edit_label">Tegels bewerken</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Kan de bewerk-tegel niet verwijderen</string>
+ <string name="qs_tiles_reset_confirmation">Tegels snelle instellingen naar standaardwaarden herstellen?</string>
+ <string name="quick_settings_tile_reset_to_default">Standaardindeling herstellen</string>
+ <string name="quick_settings_title_header">Koptekst</string>
+ <string name="quick_settings_title_tiles">Tegels</string>
+ <string name="quick_settings_title_show_weather">Weer tonen</string>
+ <string name="quick_settings_title_show_brightness_slider">Schuifregelaar helderheid</string>
+ <string name="quick_settings_title_enlarge_first_row">Eerst rij vergroten</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Met scherm vastzetten wordt het beeldscherm vergrendeld op één weergave.\n\nBlijf de Terug-knop aanraken om het scherm los te maken.</string>
+ <string name="quick_settings_custom_tile_detail_title">Aangepaste tegel</string>
+ <string name="quick_settings_remove">Tegel verwijderen</string>
+ <string name="quick_settings_network_adb_label">ADB over netwerk</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systeemprofielen</string>
+ <string name="quick_settings_profiles_off">Profielen uitgeschakeld</string>
+ <string name="quick_settings_heads_up_label">Heads-up</string>
+ <string name="quick_settings_battery_saver_label">Accubesparing</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Accubesparing (opladen)</string>
+ <string name="quick_settings_caffeine_label">Cafeïne</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synchr. uit.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synchr. aan.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchr. uitgeschakeld.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchr. ingeschakeld.</string>
+ <string name="quick_settings_sync_label">Synchroniseren</string>
+ <string name="quick_settings_volume_panel_label">Volumepaneel</string>
+ <string name="quick_settings_usb_tether_label">USB-tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Schermtime-out</string>
+ <string name="quick_settings_lockscreen_label">Schermbeveiliging</string>
+ <string name="quick_settings_ambient_display_label">Omgevingsdisplay</string>
+ <string name="quick_settings_lockscreen_label_enforced">Schermbeveiliging activeren</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Uitgeschakeld door profiel</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Schermtime-out: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Schermtime-out gewijzigd naar <xliff:g id="timeout" example="30 seconds">%s </xliff:g>.</string>
+ <string name="qs_tile_performance">Accumodus</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Accumodus: energiebesparing.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Accumodus: gebalanceerd.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Accumodus: prestaties.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Accumodus: efficiënt.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Accumodus: snel.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Accumodus: gewijzigd naar energiebesparing.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Accumodus: gewijzigd naar gebalanceerd.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Accumodus: gewijzigd naar prestaties.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Accumodus: gewijzigd naar efficiënt.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Accumodus: gewijzigd naar snel.</string>
+ <string name="quick_settings_performance_profile_detail_title">Accumodus</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Schermvergrendeling uit.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Schermvergrendeling aan.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Schermvergrendeling uitgeschakeld.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Schermvergrendeling ingeschakeld.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Omgevingsdisplay uit.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Omgevingsdisplay aan.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Omgevingsdisplay uitgeschakeld.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Omgevingsdisplay ingeschakeld.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads-up uit.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads-up aan.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads-up uitgeschakeld.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads-up ingeschakeld.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Cafeïne uit.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Cafeïne aan.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Accubesparing uit.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Accubesparing aan.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Accubesparing uitgeschakeld.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Accubesparing ingeschakeld.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamische tegel</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Volgend alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Invoermethode</string>
+ <string name="dynamic_qs_tile_su_label">Root-toegang</string>
+ <string name="dynamic_qs_tile_themes_label">Thema\'s</string>
+ <string name="quick_settings_title_advanced_location">Locatie met 3 standen</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Locatiemelding: accubesparing.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Locatiemelding: alleen apparaat.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Locatiemelding: grote nauwkeurigheid.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Locatiemodus</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Accubesparing</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Alleen apparaat</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Grote nauwkeurigheid</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Locatiemelding gewijzigd naar accubesparing.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Locatiemelding gewijzigd naar alleen apparaat.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Locatiemelding gewijzigd naar grote nauwkeurigheid.</string>
+ <string name="quick_settings_tiles_category_system">Systeemtegels</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Tegel toevoegen</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Kan geen verbinding maken met mobiele netwerken als vliegtuigmodus is ingeschakeld. Schakel vliegtuigmodus uit en probeer het opnieuw.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Zaklamp staat aan</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tik om uit te schakelen</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Geen data-SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dock-accu <xliff:g id="number">%d</xliff:g> procent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Wachtrij weergeven</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Veeg omlaag om uit te vouwen</string>
+ <string name="swipe_left_hint">Veeg naar links voor <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Veeg naar rechts voor meldingen</string>
+</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index bcf5213..f19368d 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -283,7 +283,7 @@
<string name="quick_settings_notifications_label" msgid="4818156442169154523">"Meldingen"</string>
<string name="quick_settings_flashlight_label" msgid="2133093497691661546">"Zaklamp"</string>
<string name="quick_settings_cellular_detail_title" msgid="8575062783675171695">"Mobiele gegevens"</string>
- <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"Gegevensgebruik"</string>
+ <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"Datagebruik"</string>
<string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"Resterende gegevens"</string>
<string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"Limiet overschreden"</string>
<string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> gebruikt"</string>
@@ -396,7 +396,7 @@
<string name="quick_settings_reset_confirmation_button" msgid="2660339101868367515">"Verbergen"</string>
<string name="volumeui_prompt_message" msgid="918680947433389110">"<xliff:g id="APP_NAME">%1$s</xliff:g> wil het volumedialoogvenster zijn."</string>
<string name="volumeui_prompt_allow" msgid="7954396902482228786">"Toestaan"</string>
- <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Afwijzen"</string>
+ <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Weigeren"</string>
<string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is het volumedialoogvenster"</string>
<string name="volumeui_notification_text" msgid="1826889705095768656">"Tik hierop om het origineel te herstellen."</string>
<string name="managed_profile_foreground_toast" msgid="5421487114739245972">"U gebruikt je werkprofiel"</string>
diff --git a/packages/SystemUI/res/values-oc-rFR/cm_arrays.xml b/packages/SystemUI/res/values-oc-rFR/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-oc-rFR/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-oc-rFR/cm_strings.xml b/packages/SystemUI/res/values-oc-rFR/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-oc-rFR/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-oc-rFR/strings.xml b/packages/SystemUI/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-oc-rFR/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-or-rIN/cm_arrays.xml b/packages/SystemUI/res/values-or-rIN/cm_arrays.xml
new file mode 100644
index 0000000..c0cb650
--- /dev/null
+++ b/packages/SystemUI/res/values-or-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>ଊ</item>
+ <!-- North -->
+ <item>ଊ.ପୂ</item>
+ <!-- North east -->
+ <item>ପୂ</item>
+ <!-- East -->
+ <item>ଦ.ପୂ</item>
+ <!-- South east -->
+ <item>ଦ</item>
+ <!-- South -->
+ <item>ଦ.ପ</item>
+ <!-- South west -->
+ <item>ପ</item>
+ <!-- West -->
+ <item>ଊ.ପ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-or-rIN/cm_strings.xml b/packages/SystemUI/res/values-or-rIN/cm_strings.xml
new file mode 100644
index 0000000..7bed354
--- /dev/null
+++ b/packages/SystemUI/res/values-or-rIN/cm_strings.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s ପାଇଁ ଡାହାଣକୁ ସ୍ୱାଇପ୍‍ କରନ୍ତୁ</string>
+ <string name="right_shortcut_hint">%1$s ପାଇଁ ବାମକୁ ସ୍ୱାଇପ୍‍ କରନ୍ତୁ</string>
+ <string name="lockscreen_message">ଏକ ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ସର୍ଟକ‍ ପୁନଃ ପ୍ରଦାନ କରିବା ପାଇଁ ବାମ ବା ଡାହାଣରେ ଥିବା ଏକ ଆଇକନ୍‍କୁ ଟ୍ୟାପ୍‍ କରନ୍ତୁ।</string>
+ <string name="lockscreen_default_target">ଡିଫଲ୍ଟ</string>
+ <string name="select_application">ଆପ୍ଲିକେସନ୍ ଚୟନ କରନ୍ତୁ</string>
+ <string name="lockscreen_choose_action_title">କାର୍ଯ ଚୟନ କରନ୍ତୁ</string>
+ <string name="lockscreen_none_target">କିଛି ନୁହେଁ</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">ହସ୍ତାନ୍ତର ପାଇଁ କାର୍ଯ ଚୟନ କରନ୍ତୁ</string>
+ <string name="navbar_home_button">ହୋମ୍‍ ବଟନ୍‍</string>
+ <string name="navbar_recent_button">ସମ୍ପ୍ରତି ବଟନ୍‍</string>
+ <string name="navbar_search_button">ସ‍ନ୍ଧାନ ବଟନ୍‍</string>
+ <string name="navbar_back_button">ପଛକୁ ଯିବା ବଟନ୍‍</string>
+ <string name="navbar_empty_button">ଶୂନ୍ୟ ବଟନ୍‍</string>
+ <string name="navbar_menu_conditional_button">ମେନ୍ୟୁ (ସ୍ୱତଃଲୁଚାଇବା ବଟନ୍‍)</string>
+ <string name="navbar_menu_always_button">ମେନ୍ୟୁ (ସର୍ବଦାଦେଖାଇବା) ବଟନ୍‍</string>
+ <string name="navbar_menu_big_button">ମେନ୍ୟୁ ବଟନ୍</string>
+ <string name="accessibility_dpad_left">କର୍ସର୍‍ ବାମ</string>
+ <string name="accessibility_dpad_right">କର୍ସର୍ ଡାହାଣ</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ଆପ୍ଲିକେସନ୍‍ ଡାଟା ଲିଭାଇ ଦିଅନ୍ତୁ</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">ଫୋର୍ସ୍ ସ୍ଥଗିତ</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">ଅଣସଂସ୍ଥାପନ କରନ୍ତୁ</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ଆଲୋକ ଉଜ୍ଜ୍ୱଳତା</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">ପ୍ରୋଫାଇଲ୍‍ଗୁଡିକ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">ପ୍ରୋଫାଇଲ୍‍: <xliff:g id="profile" example="Default">%s</xliff:g>।</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">ପ୍ରୋଫାଇଲ୍‍ଗୁଡିକ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">ପ୍ରୋଫାଇଲ୍ <xliff:g id="profile" example="Default">%s</xliff:g>କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <string name="quick_settings_compass_init">ସଂସ୍ଥାପନ କରୁଛି\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">ଲାଇଟ୍‍ ସେଟିଂସ୍‍</string>
+ <string name="led_notification_text">ସେଟିଂସ୍‍ ଦ୍ୱାରା LED ଆ୍ଲୋକ ସଷମ କରାଯାଇଛି</string>
+ <string name="qs_tile_edit_header_instruction">ପୁନଃସଜାଇବା ପାଇଁ ଟାଇଲ୍ସ ଦବାନ୍ତୁ ଓ ଧରି ରଖନ୍ତୁ</string>
+ <string name="quick_settings_edit_label">ଟାଇଲ୍ସ ସମ୍ପାଦନା କରନ୍ତୁ</string>
+ <string name="quick_settings_cannot_delete_edit_tile">ସମ୍ପାଦନା ଟାଇଲ୍‍ ବିଲୋପ କରିହେବ ନାହିଁ</string>
+ <string name="qs_tiles_reset_confirmation">ଦ୍ରୁତ ସେଟିଂସ୍‍ ଟାଇଲ୍ସ ଡିଫଲ୍ଟ କଫିଗରେସନ୍‍କୁ ରିସେଟ୍‍ କରିବେ କି?</string>
+ <string name="quick_settings_tile_reset_to_default">ଡିଫଲ୍ଟ ଲେଆଉଟ୍‍କୁ ରିସେଟ୍‍ କରନ୍ତୁ</string>
+ <string name="quick_settings_title_header">ହେଡର୍‍</string>
+ <string name="quick_settings_title_tiles">ଟାଇଲ୍ସ</string>
+ <string name="quick_settings_title_show_weather">ପାଣିପାଗ ଦେଖାନ୍ତୁ</string>
+ <string name="quick_settings_title_show_brightness_slider">ଉଜ୍ଜ୍ୱଳତା ସ୍ଲାଇଡର୍‍ ଦେଖାନ୍ତୁ</string>
+ <string name="quick_settings_title_enlarge_first_row">ପ୍ରଥମ ଧାଡି ବଡ କରନ୍ତୁ</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">ଆପଣ ଅନପିନ୍‌ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହାକୁ ଦର୍ଶନ ରଖନ୍ତୁ। ଅନ୍‍ପିନ୍‍ କରିବା ପାଇଁ ବ୍ୟାକ୍‍ ବଟନ୍‍ ସ୍ପର୍ଶ କରନ୍ତୁ ଓ ଧରି ରଖନ୍ତୁ।</string>
+ <string name="quick_settings_custom_tile_detail_title">ଟାଇଲ୍‍ କଷ୍ଟମ୍‍ କରନ୍ତୁ</string>
+ <string name="quick_settings_remove">ଟାଇଲ୍‍ ଅପସାରଣ କରନ୍ତୁ</string>
+ <string name="quick_settings_network_adb_label">ନେଟ୍‍ୱାର୍କ୍‍ରେ ADB</string>
+ <string name="quick_settings_compass_label">କମ୍ପାସ୍‍</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">ସିଷ୍ଟମ୍‍ ପ୍ରୋଫାଇଲ୍‍ଗୁଡିକ</string>
+ <string name="quick_settings_profiles_off">ପ୍ରୋଫାଇଲ୍‍ଗୁଡିକ ଅଷମ କରାଯାଇଛି</string>
+ <string name="quick_settings_heads_up_label">ହେଡ୍ସ୍‍ ଅପ୍‍</string>
+ <string name="quick_settings_battery_saver_label">ବ୍ୟାଟେରୀ ସଭର୍‌</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">Caffeine</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">ସିଙ୍କ୍‍ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">ସିଙ୍କ୍‍ ଅନ୍‍ ଅଛି।</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">ସିଙ୍କ୍‍ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">ସିଙ୍କ୍‍ ଅନ୍‍‍ କରାଯାଇଛି।</string>
+ <string name="quick_settings_sync_label">ସିଙ୍କ୍</string>
+ <string name="quick_settings_volume_panel_label">ଭୋଲ୍ୟୁମ୍‍ ପ୍ୟାନେଲ୍‍</string>
+ <string name="quick_settings_usb_tether_label">USB ଟିଥରିଂ</string>
+ <string name="quick_settings_screen_timeout_detail_title">ସ୍କ୍ରିନ୍‍ ସମୟ ଶେଷ</string>
+ <string name="quick_settings_lockscreen_label">ଲକ୍ ସ୍କ୍ରିନ୍</string>
+ <string name="quick_settings_ambient_display_label">ଏମ୍ବିଏଣ୍ଟ ପ୍ରଦର୍ଶନ</string>
+ <string name="quick_settings_lockscreen_label_enforced">ଲକ୍ ସ୍କ୍ରିନ୍ ଏଫୋର୍ସ୍ଡ</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">ପ୍ରୋଫାଇଲ୍‍ ଦ୍ୱାରା ବନ୍ଦ</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">ସ୍କ୍ରିନ୍‍ ଶେଷସମୟ: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>।</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">ସ୍କ୍ରିନ୍‍ ଶେଷସମୟ <xliff:g id="timeout" example="30 seconds">%s</xliff:g>କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <string name="qs_tile_performance">ବ୍ୟାଟେରୀ ମୋଡ୍‍</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">ବ୍ୟାଟେରୀ ମୋଡ୍‍: ପାୱାର୍‍ ସଂରକ୍ଷଣ ମୋଡ୍‍</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">ବ୍ୟାଟେରୀ ମୋଡ୍‍: ସନ୍ତୁଳିତ ମୋଡ୍‍</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">ବ୍ୟାଟେରୀ ମୋଡ୍‍: ପ୍ରଦର୍ଶନ ମୋଡ୍‍</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">ବ୍ୟାଟେରୀ ମୋଡ୍‍: ଉପାଦେୟତା ମୋଡ୍‍</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">ବ୍ୟାଟେରୀ ମୋଡ୍‍: ଦ୍ରୁତ ମୋଡ୍‍</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">ବ୍ୟାଟେରୀ ମୋ୍ଡ୍‍ ପାୱାର୍‍ ସଂରକ୍ଷଣ ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">ବ୍ୟାଟେରୀ ମୋ୍ଡ୍‍ ସନ୍ତୁଳିତ ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">ବ୍ୟାଟେରୀ ସଂଚାଳନକାରିତା ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">ବ୍ୟାଟେରୀ ମୋ୍ଡ୍‍ ଉପାଦେୟତା ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">ବ୍ୟାଟେରୀ ମୋ୍ଡ୍‍ ଦ୍ରୁତ ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା।</string>
+ <string name="quick_settings_performance_profile_detail_title">ବ୍ୟାଟେରୀ ମୋଡ୍‍</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ଅନ୍‍ ଅଛି।</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">ଲକ୍‍ ସ୍କ୍ରିନ୍‍ ଅନ୍‍‍ କରାଯାଇଛି।</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">ଆମ୍ବିଏଣ୍ଟ୍‍ ଡିସ୍‍ପ୍ଲେ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">ଆମ୍ବିଏଣ୍ଟ୍‍ ଡିସ୍‍ପ୍ଲେ ଅନ୍‍‍ ଅଛି।</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">ଆମ୍ବିଏଣ୍ଟ୍‍ ଡିସ୍‍ପ୍ଲେ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">ଆମ୍ବିଏଣ୍ଟ୍‍ ଡିସ୍‍ପ୍ଲେ ଅନ୍‍ କରାଯାଇଛି।</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">ହେଡ୍ସ୍‍ ଅପ୍‍ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">ହେଡ୍ସ୍‍ ଅପ୍‍ ଅନ୍‍ ଅଛି।</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">ହେଡ୍ସ୍‍ ଅପ୍‍ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">ହେଡ୍ସ୍‍ ଅପ୍‍ ଅନ୍‍‍ କରାଯାଇଛି।</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Caffeine off.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Caffeine on.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">ବ୍ୟାଟେରୀ ସେଭର୍‍ ଅଫ୍‍ ଅଛି।</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">ବ୍ୟାଟେରୀ ସେଭର୍‍ ଅନ୍‍‍ ଅଛି।</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">ବ୍ୟାଟେରୀ ସେଭର୍‍ ଅଫ୍‍ କରାଯାଇଛି।</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">ବ୍ୟାଟେରୀ ସେଭର୍‍ ଅନ୍‍ କରାଯାଇଛି।</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ଡାଇନେମିକ୍‍ ଟାଇଲ୍‍</string>
+ <string name="dynamic_qs_tile_next_alarm_label">ପରବର୍ତ୍ତୀ ଆଲରାମ୍:</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME ସିଲେକ୍ଟର</string>
+ <string name="dynamic_qs_tile_su_label">ରୁଟ୍‍ ଆକ୍‍ସେସ୍‍</string>
+ <string name="quick_settings_title_advanced_location">ତିନି-ସ୍ତରୀୟ ଅବସ୍ଥାନ</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ: ବ୍ୟାଟେରୀ ସଂରକ୍ଷଣ ମୋଡ୍‍</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ: କେବଳ ସେନ୍‍ସର୍‍ ମୋଡ୍‍</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ: ଅଧିକ ସଠିକତା ମୋଡ୍‍</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">ଅବସ୍ଥାନ ମୋଡ୍</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">ବ୍ୟାଟେରୀ ସଞ୍ଚୟ</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">କେବଳ ଡିଭାଇସ୍</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">ଅଧିକ ସଠିକତା</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ ବ୍ୟାଟେରୀ ସଂରକ୍ଷଣ ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ କେବଳ ସେନ୍‍ସର୍‍ ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">ଅବସ୍ଥାନ ରିପୋର୍ଟିଂ ଅଧିକ ସଠିକତା ମୋଡ୍‍କୁ ପରିବର୍ତ୍ତିତ ହେଲା</string>
+ <string name="quick_settings_tiles_category_system">ସିଷ୍ଟମ୍‍ ଟାଇଲ୍ସ</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">ଏକ ଟାଇଲ୍‍ ଯୋଗ କରନ୍ତୁ</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">ବିମାନ ମୋଡ୍‍ ସଷମ ଥିବା ସ୍ମୟ୍ରେ ମୋବାଇଲ୍‍ ନେଟ୍‍ୱାର୍କ ସହ ସଂଯୋଗ ହେବାରେ ଅଷମ ହେଉଛି। ବିମାନ ମୋଡ୍‍ ଅଷମ କରନ୍ତୁ ଓ ପୁନର୍ବାର ଚେଷ୍ଟା କରନ୍ତୁ।</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ଫ୍ଲାସ୍‍ଲାଇଟ୍‍ ଅନ୍‍ ଅଛି</string>
+ <string name="quick_settings_tile_flashlight_not_summary">ଅଫ୍‍ କରିବା ପାଇଁ ଟ୍ୟାପ୍‍ କରନ୍ତୁ</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">ଡକ୍‍ ବ୍ୟାଟେରୀ <xliff:g id="number">%d</xliff:g> ଶତକଡା।</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">ଚାଳନା ଧାଡି ଦେଖାନ୍ତୁ</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-or-rIN/strings.xml b/packages/SystemUI/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..7758366
--- /dev/null
+++ b/packages/SystemUI/res/values-or-rIN/strings.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <!-- Title of confirmation dialog for USB debugging -->
+ <!-- Message of confirmation dialog for USB debugging -->
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <!-- Textual description of Ethernet connections -->
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/cm_arrays.xml b/packages/SystemUI/res/values-pa-rIN/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-pa-rIN/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/cm_strings.xml b/packages/SystemUI/res/values-pa-rIN/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-pa-rIN/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-pl/cm_arrays.xml b/packages/SystemUI/res/values-pl/cm_arrays.xml
new file mode 100644
index 0000000..d5537a3
--- /dev/null
+++ b/packages/SystemUI/res/values-pl/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>płn.</item>
+ <!-- North -->
+ <item>płn. wsch.</item>
+ <!-- North east -->
+ <item>wsch.</item>
+ <!-- East -->
+ <item>płd. wsch.</item>
+ <!-- South east -->
+ <item>płd.</item>
+ <!-- South -->
+ <item>płd. zach.</item>
+ <!-- South west -->
+ <item>zach.</item>
+ <!-- West -->
+ <item>płn. zach.</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-pl/cm_strings.xml b/packages/SystemUI/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..f5b0eab
--- /dev/null
+++ b/packages/SystemUI/res/values-pl/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Przesuń palcem w prawo do %1$s</string>
+ <string name="right_shortcut_hint">Przesuń palcem w lewo do %1$s</string>
+ <string name="lockscreen_message">Dotknij ikony po lewej lub prawej, aby przypisać skrót ekranu blokady.</string>
+ <string name="lockscreen_default_target">Domyślna</string>
+ <string name="select_application">Wybierz aplikację</string>
+ <string name="lockscreen_choose_action_title">Wybierz akcję</string>
+ <string name="lockscreen_none_target">Brak</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Wybierz akcję do przypisania</string>
+ <string name="navbar_home_button">Przycisk Home</string>
+ <string name="navbar_recent_button">Przycisk Ostatnie aplikacje</string>
+ <string name="navbar_search_button">Przycisk Szukaj</string>
+ <string name="navbar_back_button">Przycisk Wstecz</string>
+ <string name="navbar_empty_button">Pusty przycisk</string>
+ <string name="navbar_menu_conditional_button">Przycisk Menu (autoukrywaj)</string>
+ <string name="navbar_menu_always_button">Przycisk Menu (zawsze pokazuj)</string>
+ <string name="navbar_menu_big_button">Przycisk Menu</string>
+ <string name="accessibility_dpad_left">Kursor w lewo</string>
+ <string name="accessibility_dpad_right">Kursor w prawo</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Usuń dane aplikacji</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Wymuś zamknięcie</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Odinstaluj</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Jasność światła</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profile wyłączone.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profile zostały wyłączone.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil zmieniony na <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicjalizowanie\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ustawienia diody</string>
+ <string name="led_notification_text">Diody LED włączone przez ustawienia</string>
+ <string name="qs_tile_edit_header_instruction">Naciśnij i przytrzymaj kafelki, aby zmienić kolejność</string>
+ <string name="quick_settings_edit_label">Edycja kafelków</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Nie można usunąć kafelka edycji</string>
+ <string name="qs_tiles_reset_confirmation">Zresetować ustawienia kafelków szybkiego dostępu do domyślnej konfiguracji?</string>
+ <string name="quick_settings_tile_reset_to_default">Przywróć domyślny układ</string>
+ <string name="quick_settings_title_header">Nagłówek</string>
+ <string name="quick_settings_title_tiles">Kafelki</string>
+ <string name="quick_settings_title_show_weather">Pokaż pogodę</string>
+ <string name="quick_settings_title_show_brightness_slider">Pokaż suwak jasności</string>
+ <string name="quick_settings_title_enlarge_first_row">Powiększenie pierwszego rzędu</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Zostaje na widoku do czasu odpięcia. Dotknij i przytrzymaj przycisk Wstecz, aby odpiąć.</string>
+ <string name="quick_settings_custom_tile_detail_title">Kafelek niestandardowy</string>
+ <string name="quick_settings_remove">Usuń kafelek</string>
+ <string name="quick_settings_network_adb_label">ADB przez sieć</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profile systemowe</string>
+ <string name="quick_settings_profiles_off">Profile wyłączone</string>
+ <string name="quick_settings_heads_up_label">Wyskakujące powiadomienia</string>
+ <string name="quick_settings_battery_saver_label">Oszczędzanie baterii</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Oszczędzanie baterii (ładowanie)</string>
+ <string name="quick_settings_caffeine_label">Kofeina</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synchronizacja wyłączona.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synchronizacja włączona.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronizacja została wyłączona.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronizacja została włączona.</string>
+ <string name="quick_settings_sync_label">Synchronizacja</string>
+ <string name="quick_settings_volume_panel_label">Panel głośności</string>
+ <string name="quick_settings_usb_tether_label">Tethering USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Wygaszanie ekranu</string>
+ <string name="quick_settings_lockscreen_label">Ekran blokady</string>
+ <string name="quick_settings_ambient_display_label">Aktywny wyświetlacz</string>
+ <string name="quick_settings_lockscreen_label_enforced">Blokada ekranu wymuszona</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Wyłączone przez profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Wygaszanie ekranu: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Wygaszanie ekranu zmieniono na <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Tryb baterii</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Tryb baterii: tryb oszczędzania baterii.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Tryb baterii: tryb zrównoważony.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Tryb baterii: tryb wydajności.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Tryb baterii: tryb wydajności.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Tryb baterii: tryb szybki.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Tryb baterii zmienił się na tryb oszczędzania energii.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Tryb baterii zmienił się na tryb zrównoważony.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Tryb baterii zmienił się na tryb wydajności.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Tryb baterii zmieniony na tryb wydajności.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Tryb baterii zmieniony na tryb szybki.</string>
+ <string name="quick_settings_performance_profile_detail_title">Tryb baterii</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Blokada ekranu wyłączona.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Blokada ekranu włączona.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Blokada ekranu została wyłączona.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Blokada ekranu została włączona.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Aktywny wyświetlacz wyłączony.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Aktywny wyświetlacz włączony.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Aktywny wyświetlacz został wyłączony.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Aktywny wyświetlacz został włączony.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Wyskakujące powiadomienia wyłączone.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Wyskakujące powiadomienia włączone.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Wyskakujące powiadomienia zostały wyłączone.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Wyskakujące powiadomienia zostały włączone.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofeina wył.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofeina wł.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Oszczędzanie baterii wył.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Oszczędzanie baterii wł.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Oszczędzanie baterii zostało wył.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Oszczędzanie baterii zostało wł.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamiczne przełączniki</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Następny alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Przełącznik klawiatury</string>
+ <string name="dynamic_qs_tile_su_label">Dostęp do roota</string>
+ <string name="quick_settings_title_advanced_location">Trójstanowa lokalizacja</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Raportowanie lokalizacji: tryb oszczędzania baterii.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Raportowanie lokalizacji: tylko czujniki.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Raportowanie lokalizacji: wysoka dokładność.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Tryb lokalizacji</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Oszczędzanie baterii</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Tylko urządzenie</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Wysoka dokładność</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Zgłaszanie lokalizacji przeszło w tryb oszczędzania energii.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Zgłaszanie lokalizacji przeszło w tryb \"tylko czujniki\".</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Zgłaszanie lokalizacji przeszło w tryb wysokiej dokładności.</string>
+ <string name="quick_settings_tiles_category_system">Kafelki systemowe</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Dodaj kafelek</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Sieć komórkowa jest niedostępna w Trybie samolotowym. Wyłącz go i spróbuj ponownie.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Latarka jest włączona</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Dotknij, aby wyłączyć</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="few">%1$d klientów</item>
+ <item quantity="other">%1$d klientów</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Brak danych SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Bateria stacji dokującej <xliff:g id="number">%d</xliff:g> procent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Pokaż kolejkę odtwarzania</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Przesuń w dół, aby rozwinąć</string>
+ <string name="swipe_left_hint">Przesuń w lewo, aby uruchomić <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Przesuń w prawo, aby zobaczyć powiadomienia</string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/cm_arrays.xml b/packages/SystemUI/res/values-pt-rBR/cm_arrays.xml
new file mode 100644
index 0000000..1fd49e9
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rBR/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>L</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/cm_strings.xml b/packages/SystemUI/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..845df0f
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="tempo">%1$s</xliff:g> - <xliff:g id="condição">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Deslize para a direita para %1$s</string>
+ <string name="right_shortcut_hint">Deslize para a esquerda para %1$s</string>
+ <string name="lockscreen_message">Toque em um ícone da esquerda ou da direita para reatribuir o atalho da tela de bloqueio.</string>
+ <string name="lockscreen_default_target">Padrão</string>
+ <string name="select_application">Selecionar aplicativo</string>
+ <string name="lockscreen_choose_action_title">Escolher ação</string>
+ <string name="lockscreen_none_target">Nenhum</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Escolha uma ação para atribuir</string>
+ <string name="navbar_home_button">Botão de início</string>
+ <string name="navbar_recent_button">Botão de recentes</string>
+ <string name="navbar_search_button">Botão de buscar</string>
+ <string name="navbar_back_button">Botão de voltar</string>
+ <string name="navbar_empty_button">Botão vazio</string>
+ <string name="navbar_menu_conditional_button">Botão menu (autoesconder)</string>
+ <string name="navbar_menu_always_button">Botão menu (sempre visível)</string>
+ <string name="navbar_menu_big_button">Botão menu</string>
+ <string name="accessibility_dpad_left">Cursor à esquerda</string>
+ <string name="accessibility_dpad_right">Cursor à direita</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Limpar dados de aplicativos</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Interromper à força</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Brilho da luz</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfis desligados.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfis foram desligados.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil alterado para <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializando\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Configurações de luz</string>
+ <string name="led_notification_text">Luz de LED ativada pelas configurações</string>
+ <string name="qs_tile_edit_header_instruction">Pressione e segure os botões para reorganizar</string>
+ <string name="quick_settings_edit_label">Editar botões</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Não é possível excluir o botão de Edição</string>
+ <string name="qs_tiles_reset_confirmation">Redefinir botões das configurações rápidas para a configuração padrão?</string>
+ <string name="quick_settings_tile_reset_to_default">Redefinir para a organização padrão</string>
+ <string name="quick_settings_title_header">Cabeçalho</string>
+ <string name="quick_settings_title_tiles">Botões</string>
+ <string name="quick_settings_title_show_weather">Mostrar clima</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostrar o controle deslizante de brilho</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar a primeira linha</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Isto a manterá na tela até ser desafixada. Toque e segure o botão Voltar para desafixar.</string>
+ <string name="quick_settings_custom_tile_detail_title">Botão personalizado</string>
+ <string name="quick_settings_remove">Remover botão</string>
+ <string name="quick_settings_network_adb_label">ADB sobre rede</string>
+ <string name="quick_settings_compass_label">Bússola</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfis de sistema</string>
+ <string name="quick_settings_profiles_off">Perfis desativados</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Economizador de bateria</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Economia de bateria (carregando)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronização desligada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronização ligada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronização foi desligada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronização foi ligada.</string>
+ <string name="quick_settings_sync_label">Sincronização</string>
+ <string name="quick_settings_volume_panel_label">Painel de volume</string>
+ <string name="quick_settings_usb_tether_label">Compartilhamento USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tempo limite de tela</string>
+ <string name="quick_settings_lockscreen_label">Tela de bloqueio</string>
+ <string name="quick_settings_ambient_display_label">Tela ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Tela de bloqueio aplicada</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Desativado pelo perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tempo limite da tela: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tempo limite da tela alterado para <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Modo de bateria</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Modo de bateria: modo de economia de energia.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Modo de bateria: modo equilibrado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Modo de bateria: modo de desempenho.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Modo de bateria: modo eficiente.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Modo de bateria: modo rápido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Modo de bateria alterado para o modo de economia de energia.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Modo de bateria alterado para o modo equilibrado.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Modo de bateria alterado para o modo de desempenho.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Modo de bateria alterado para o modo eficiente.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Modo de bateria alterado para o modo rápido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Modo de bateria</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Tela de bloqueio desligada.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Tela de bloqueio ligada.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Tela de bloqueio foi desligada.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Tela de bloqueio foi ligada.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Tela ambiente desativado.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Tela ambiente ativada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Tela ambiente foi desligada.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Tela ambiente foi ligada.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up desligado.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up ligado.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up foi desligado.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up foi ligado.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Cafeína desligado.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Cafeína ligado.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Economizador de bateria desligado.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Economizador de bateria ligado.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">O economizador de bateria foi desligado.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">O economizador de bateria foi ligado.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Botão dinâmico</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Próximo alarme</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Seletor de IME</string>
+ <string name="dynamic_qs_tile_su_label">Acesso super usuário</string>
+ <string name="dynamic_qs_tile_themes_label">Temas</string>
+ <string name="quick_settings_title_advanced_location">Localização em 3 estados</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Relatório de localização: modo economia de bateria.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Relatório de localização: modo somente sensores.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Relatório de localização: modo de alta precisão.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Modo de localização</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Economia de bateria</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Somente no dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisão</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Relatório de localização alterado para economia de bateria.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Relatório de localização alterado para modo somente sensores.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Relatório de localização alterado para modo de alta precisão.</string>
+ <string name="quick_settings_tiles_category_system">Botões de sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Adicionar um botão</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Não é possível se conectar a redes móveis enquanto o Modo Avião estiver ativado. Desative o modo avião e tente novamente.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">A lanterna está ligada</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toque para desligar</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d cliente</item>
+ <item quantity="other">%1$d clientes</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Sem SIM de dados</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">A bateria do dock tem <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" id="number">%d</xliff:g>%.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Mostrar fila de reprodução</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="tempo">%1$s</xliff:g> - <xliff:g id="condição">%2$s</xliff:g></string>
+ <string name="expand_hint">Deslize para baixo para expandir</string>
+ <string name="swipe_left_hint">Deslizar para a esquerda para <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Deslize para a direita para ver as notificações</string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 8f6aeba..ab60bd4 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Sem cartão SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Alteração de rede de operadora."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria em <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Configurações do sistema"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificações."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Limpar notificação."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/cm_arrays.xml b/packages/SystemUI/res/values-pt-rPT/cm_arrays.xml
new file mode 100644
index 0000000..85897e7
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rPT/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SO</item>
+ <!-- South west -->
+ <item>O</item>
+ <!-- West -->
+ <item>NO</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/cm_strings.xml b/packages/SystemUI/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..9c32153
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Deslizar para a direita para %1$s</string>
+ <string name="right_shortcut_hint">Deslizar para a esquerda para %1$s</string>
+ <string name="lockscreen_message">Toque num ícone da esquerda ou da direita para atribuir um atalho no ecrã de bloqueio.</string>
+ <string name="lockscreen_default_target">Padrão</string>
+ <string name="select_application">Selecionar aplicação</string>
+ <string name="lockscreen_choose_action_title">Selecionar ação</string>
+ <string name="lockscreen_none_target">Nenhum</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Escolha uma ação para atribuir</string>
+ <string name="navbar_home_button">Botão Home</string>
+ <string name="navbar_recent_button">Botão Recentes</string>
+ <string name="navbar_search_button">Botão Pesquisa</string>
+ <string name="navbar_back_button">Botão Voltar</string>
+ <string name="navbar_empty_button">Botão vazio</string>
+ <string name="navbar_menu_conditional_button">Botão Menu (esconder auto)</string>
+ <string name="navbar_menu_always_button">Botão Menu (sempre visível)</string>
+ <string name="navbar_menu_big_button">Botão Menu</string>
+ <string name="accessibility_dpad_left">Cursor à esquerda</string>
+ <string name="accessibility_dpad_right">Cursor à direita</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Limpar dados da aplicação</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Forçar paragem</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Desinstalar</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Brilho</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Perfis desligados.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Perfil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Perfis foram desligados.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Perfil alterado para <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">A iniciar\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Definições de luz</string>
+ <string name="led_notification_text">Luz do LED ativada pelas definições</string>
+ <string name="qs_tile_edit_header_instruction">Mantenha os mosaicos premidos para os reorganizar</string>
+ <string name="quick_settings_edit_label">Editar os mosaicos</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Não é possível eliminar o mosaico de Editar</string>
+ <string name="qs_tiles_reset_confirmation">Repor os valores de origem dos mosaicos de definições rápidas?</string>
+ <string name="quick_settings_tile_reset_to_default">Restaurar a disposição padrão</string>
+ <string name="quick_settings_title_header">Cabeçalho</string>
+ <string name="quick_settings_title_tiles">Mosaicos</string>
+ <string name="quick_settings_title_show_weather">Mostrar o tempo</string>
+ <string name="quick_settings_title_show_brightness_slider">Mostrar o controlo deslizante de brilho</string>
+ <string name="quick_settings_title_enlarge_first_row">Ampliar a primeira linha</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Irá ficar visível até que o solte. Toque e segure o botão Voltar para soltar.</string>
+ <string name="quick_settings_custom_tile_detail_title">Mosaicos personalizados</string>
+ <string name="quick_settings_remove">Remover mosaico</string>
+ <string name="quick_settings_network_adb_label">ADB através da rede</string>
+ <string name="quick_settings_compass_label">Bússola</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Perfis de sistema</string>
+ <string name="quick_settings_profiles_off">Perfis desativados</string>
+ <string name="quick_settings_heads_up_label">Notificações pop-up</string>
+ <string name="quick_settings_battery_saver_label">Economizador de bateria</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Economizador de bateria (a carregar)</string>
+ <string name="quick_settings_caffeine_label">Cafeína</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronização desativada.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronização ativada.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">A sincronização foi desativada.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">A sincronização foi ativada.</string>
+ <string name="quick_settings_sync_label">Sincronização</string>
+ <string name="quick_settings_volume_panel_label">Painel de volume</string>
+ <string name="quick_settings_usb_tether_label">Partilha de internet por USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Tempo limite do ecrã</string>
+ <string name="quick_settings_lockscreen_label">Ecrã de bloqueio</string>
+ <string name="quick_settings_ambient_display_label">Visualização de ambiente</string>
+ <string name="quick_settings_lockscreen_label_enforced">Ecrã de bloqueio forçado</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Desativado pelo perfil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Tempo limite do ecrã: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Tempo limite do ecrã alterado para <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Modo de bateria</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Modo de bateria: modo de poupança de bateria.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Modo de bateria: modo equilibrado.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Modo de bateria: modo de desempenho.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Modo de bateria: modo de eficiência.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Modo de bateria: modo rápido.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Modo de bateria alterado para o modo de poupança de bateria.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Modo de bateria alterado para o modo equilibrado.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Modo de bateria alterado para o modo de desempenho.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Modo de bateria alterado para o modo de eficiência.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Modo de bateria alterado para o modo rápido.</string>
+ <string name="quick_settings_performance_profile_detail_title">Modo de bateria</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Ecrã de bloqueio desativado.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Ecrã de bloqueio ativado.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">O ecrã de bloqueio foi desativado.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">O ecrã de bloqueio foi ativado.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Visualização de ambiente desativada.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Visualização de ambiente ativada.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">A visualização de ambiente foi desativada.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">A visualização de ambiente foi ativada.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Notificações pop-up desativadas.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Notificações pop-up ativadas.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">As notificações pop-up foram desativadas.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">As notificações pop-up foram ativadas.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Cafeína desligada.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Cafeína ligada.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Economizador de bateria desativado.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Economizador de bateria ativado.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">O economizador de bateria foi desativado.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">O economizador de bateria foi ativado.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Mosaicos dinâmicos</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Próximo alarme</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Seletor de método de entrada</string>
+ <string name="dynamic_qs_tile_su_label">Acesso root</string>
+ <string name="dynamic_qs_tile_themes_label">Temas</string>
+ <string name="quick_settings_title_advanced_location">Localização com 3 estados</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Localização: poupança de bateria.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Localização: apenas no dispositivo.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Localização: alta precisão.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Modos de localização</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Poupança de bateria</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Apenas no dispositivo</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Alta precisão</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Modo de localização alterado para poupança de bateria.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Modo de localização alterado para apenas no dispositivo.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Modo de localização alterado para alta precisão.</string>
+ <string name="quick_settings_tiles_category_system">Mosaicos do sistema</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Adicionar um mosaico</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Não é possível ligar-se a redes móveis enquanto o modo de voo estiver ativado. Desative o modo de voo e tente novamente.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">A lanterna está ligada</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Toque para desligar</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d cliente</item>
+ <item quantity="other">%1$d clientes</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Cartão SIM sem dados móveis</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Bateria da dock <xliff:g id="number">%d</xliff:g> por cento.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Mostrar a fila de reprodução</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Deslize para baixo para expandir</string>
+ <string name="swipe_left_hint">Deslize para a esquerda para <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Deslize para a direita para ver as notificações</string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 05858de..9e6c15f 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -414,7 +414,7 @@
<string name="status_bar_airplane" msgid="7057575501472249002">"Modo de avião"</string>
<string name="add_tile" msgid="2995389510240786221">"Adicionar mosaico"</string>
<string name="broadcast_tile" msgid="3894036511763289383">"Mosaico de transmissão"</string>
- <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Só vai ouvir o próximo alarme às <xliff:g id="WHEN">%1$s</xliff:g> se desativar esta funcionalidade antes dessa hora"</string>
+ <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Só vai ouvir o próximo alarme (<xliff:g id="WHEN">%1$s</xliff:g>) se desativar esta funcionalidade antes dessa hora"</string>
<string name="zen_alarm_warning" msgid="444533119582244293">"Não vai ouvir o próximo alarme às <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template" msgid="3980063409350522735">"às <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="4242179982586714810">"em <xliff:g id="WHEN">%1$s</xliff:g>"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 8f6aeba..ab60bd4 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Sem cartão SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Alteração de rede de operadora."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria em <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Configurações do sistema"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificações."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Limpar notificação."</string>
diff --git a/packages/SystemUI/res/values-rm/cm_arrays.xml b/packages/SystemUI/res/values-rm/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-rm/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-rm/cm_strings.xml b/packages/SystemUI/res/values-rm/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-rm/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ro/cm_arrays.xml b/packages/SystemUI/res/values-ro/cm_arrays.xml
new file mode 100644
index 0000000..acce4b6
--- /dev/null
+++ b/packages/SystemUI/res/values-ro/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SV</item>
+ <!-- South west -->
+ <item>V</item>
+ <!-- West -->
+ <item>NV</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ro/cm_strings.xml b/packages/SystemUI/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..2ef4e1d
--- /dev/null
+++ b/packages/SystemUI/res/values-ro/cm_strings.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Glisați dreapta pentru %1$s</string>
+ <string name="right_shortcut_hint">Glisați stânga pentru %1$s</string>
+ <string name="lockscreen_default_target">Implicit</string>
+ <string name="select_application">Selectați aplicația</string>
+ <string name="lockscreen_choose_action_title">Alege acțiunea</string>
+ <string name="lockscreen_none_target">Nimic</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Alege o acțiune pentru a o asocia</string>
+ <string name="navbar_home_button">Butonul Acasă</string>
+ <string name="navbar_recent_button">Butonul Recent</string>
+ <string name="navbar_search_button">Butonul Căutare</string>
+ <string name="navbar_back_button">Butonul Înapoi</string>
+ <string name="navbar_empty_button">Buton disponibil</string>
+ <string name="navbar_menu_conditional_button">Buton (ascundeAutomat) Meniu</string>
+ <string name="navbar_menu_always_button">Buton (afișareÎntotdeauna) Meniu</string>
+ <string name="navbar_menu_big_button">Buton Meniu</string>
+ <string name="accessibility_dpad_left">Cursor stânga</string>
+ <string name="accessibility_dpad_right">Cursor dreapta</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Șterge datele aplicației</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Oprire forțată</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Dezinstalați</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiluri oprit.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiluri este activat.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil schimbat în <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inițializare\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Setări de lumină</string>
+ <string name="qs_tile_edit_header_instruction">Apăsați și țineți apăsate chenarele pentru a rearanja</string>
+ <string name="quick_settings_edit_label">Editare chenare</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Nu se poate șterge chenarul Editare</string>
+ <string name="qs_tiles_reset_confirmation">Resetați chenarele cu setări rapide la configurația implicită?</string>
+ <string name="quick_settings_tile_reset_to_default">Resetare la aspectul implicit</string>
+ <string name="quick_settings_title_header">Antet</string>
+ <string name="quick_settings_title_tiles">Chenare</string>
+ <string name="quick_settings_title_show_weather">Arată vremea</string>
+ <string name="quick_settings_title_show_brightness_slider">Arată glisorul de luminozitate</string>
+ <string name="quick_settings_title_enlarge_first_row">Mărește primul rând</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="quick_settings_custom_tile_detail_title">Chenar personalizat</string>
+ <string name="quick_settings_remove">Eliminare chenar</string>
+ <string name="quick_settings_network_adb_label">ADB prin rețea</string>
+ <string name="quick_settings_compass_label">Busolă</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Profiluri de sistem</string>
+ <string name="quick_settings_profiles_off">Profilurile sunt dezactivate</string>
+ <string name="quick_settings_heads_up_label">Atenționare</string>
+ <string name="quick_settings_battery_saver_label">Economizor baterie</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">Cofeină</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sincronizare oprită.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sincronizare pornită.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sincronizare oprită.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sincronizare pornită.</string>
+ <string name="quick_settings_sync_label">Sincronizare</string>
+ <string name="quick_settings_volume_panel_label">Panou volum</string>
+ <string name="quick_settings_usb_tether_label">Tethering USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Timpul de expirare ecran</string>
+ <string name="quick_settings_lockscreen_label">Ecran de blocare</string>
+ <string name="quick_settings_ambient_display_label">Afișare ambientală</string>
+ <string name="quick_settings_lockscreen_label_enforced">Blocare ecran impusă</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Dezactivat de profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Timp expirare ecran: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Timp expirare ecran a fost schimbat la <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Mod baterie</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Mod baterie: mod de salvare energie.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Mod baterie: mod echilibrat.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Mod baterie: mod performanță.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Mod baterie: mod eficiență.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Mod baterie: mod rapid.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Modul bateriei a fost schimbat în modul de salvare energie.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Modul bateriei a fost schimbat în mod echilibrat.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Modul bateriei schimbat în modul de performanță.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Modul bateriei a fost schimbat în modul de eficiență.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Modul bateriei a fost schimbat în modul rapid.</string>
+ <string name="quick_settings_performance_profile_detail_title">Mod baterie</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Blocare ecran oprit.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Blocare ecran pornit.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Afișare ambientală oprită.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Afișare ambientală pornită.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Cofeină oprit.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Cofeină pornit.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Economisire baterie oprită.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Economisire baterie pornită.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Economisire baterie este dezactivată.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Economisire baterie este activată.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Chenar dinamic</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Următoarea alarmă</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Selector IME</string>
+ <string name="dynamic_qs_tile_su_label">Acces root</string>
+ <string name="quick_settings_title_advanced_location">Starea celor 3 moduri de locație</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Raportarea locației: mod economisire baterie.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Raportarea locației: doar senzori.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Raportarea locației: precizie ridicată.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Mod localizare</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Economisire baterie</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Doar dispozitiv</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Precizie ridicată</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Raportarea locației modificată în modul economisire baterie.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Raportarea locației modificată în modul doar senzori.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Raportarea locației modificată în modul precizie ridicată.</string>
+ <string name="quick_settings_tiles_category_system">Chenar sistem</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Adaugă un chenar</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Nu se poate conecta la rețele mobile în timp ce modul Avion este activat. Dezactivați modul Avion și încercați din nou.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Lanterna este pornită</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Atingeți pentru a dezactiva</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="few">%1$d clienți</item>
+ <item quantity="other">%1$d clienți</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index d68188d..122bb01 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -56,7 +56,7 @@
<string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Permiteți aplicației <xliff:g id="APPLICATION">%1$s</xliff:g> să acceseze accesoriul USB?"</string>
<string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Deschideţi <xliff:g id="ACTIVITY">%1$s</xliff:g> la conectarea acestui dispozitiv USB?"</string>
<string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Deschideţi <xliff:g id="ACTIVITY">%1$s</xliff:g> la conectarea acestui accesoriu USB?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Aplic. instal. nu funcţ. cu acest acces. USB. Aflaţi despre acest accesoriu la <xliff:g id="URL">%1$s</xliff:g>"</string>
+ <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Aplic. instal. nu funcţ. cu acest acces. USB. Aflați despre acest accesoriu la <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="4966265263465181372">"Accesoriu USB"</string>
<string name="label_view" msgid="6304565553218192990">"Afişaţi"</string>
<string name="always_use_device" msgid="1450287437017315906">"Utilizaţi în mod prestabilit pt. acest dispoz. USB"</string>
@@ -151,7 +151,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod Avion."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Niciun card SIM."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Se schimbă rețeaua operatorului."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterie: <xliff:g id="NUMBER">%d</xliff:g> procente."</string>
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterie: <xliff:g id="NUMBER">%d</xliff:g> la sută."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Setări de sistem."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificări."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Ștergeți notificarea."</string>
diff --git a/packages/SystemUI/res/values-ru/cm_arrays.xml b/packages/SystemUI/res/values-ru/cm_arrays.xml
new file mode 100644
index 0000000..7fa348b
--- /dev/null
+++ b/packages/SystemUI/res/values-ru/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>С</item>
+ <!-- North -->
+ <item>СВ</item>
+ <!-- North east -->
+ <item>В</item>
+ <!-- East -->
+ <item>ЮВ</item>
+ <!-- South east -->
+ <item>Ю</item>
+ <!-- South -->
+ <item>ЮЗ</item>
+ <!-- South west -->
+ <item>З</item>
+ <!-- West -->
+ <item>СЗ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ru/cm_strings.xml b/packages/SystemUI/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..ccfd26d
--- /dev/null
+++ b/packages/SystemUI/res/values-ru/cm_strings.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s: проведите от значка</string>
+ <string name="right_shortcut_hint">%1$s: проведите от значка</string>
+ <string name="lockscreen_message">Нажмите значок слева или справа для изменения ярлыка экрана блокировки.</string>
+ <string name="lockscreen_default_target">По умолчанию</string>
+ <string name="select_application">Выбор приложения</string>
+ <string name="lockscreen_choose_action_title">Выбор действия</string>
+ <string name="lockscreen_none_target">Ничего</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Выберите действие</string>
+ <string name="navbar_home_button">Домой</string>
+ <string name="navbar_recent_button">Запущ. приложения</string>
+ <string name="navbar_search_button">Поиск</string>
+ <string name="navbar_back_button">Назад</string>
+ <string name="navbar_empty_button">Пустая кнопка</string>
+ <string name="navbar_menu_conditional_button">Меню (если доступно)</string>
+ <string name="navbar_menu_always_button">Меню (всегда)</string>
+ <string name="navbar_menu_big_button">Меню</string>
+ <string name="accessibility_dpad_left">Курсор влево</string>
+ <string name="accessibility_dpad_right">Курсор вправо</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Стереть данные</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Остановить</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Удалить</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Яркость</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Профили выключены.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Профиль: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Профили выключены.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Профиль изменён на <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Включение\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Настройки яркости</string>
+ <string name="led_notification_text">Светодиод включен параметрами</string>
+ <string name="qs_tile_edit_header_instruction">Нажмите и удерживайте плитку для изменения</string>
+ <string name="quick_settings_edit_label">Редактировать плитки</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Невозможно удалить кнопку редактирования</string>
+ <string name="qs_tiles_reset_confirmation">Восстановить набор плиток по умолчанию?</string>
+ <string name="quick_settings_tile_reset_to_default">Восстановить стандартные</string>
+ <string name="quick_settings_title_header">Заголовок</string>
+ <string name="quick_settings_title_tiles">Плитки</string>
+ <string name="quick_settings_title_show_weather">Сведения о погоде</string>
+ <string name="quick_settings_title_show_brightness_slider">Показывать регулятор яркости</string>
+ <string name="quick_settings_title_enlarge_first_row">Увеличить первый ряд</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Это приложение останется активным, пока вы не отмените блокировку долгим нажатием кнопки «Назад».</string>
+ <string name="quick_settings_custom_tile_detail_title">Пользовательская плитка</string>
+ <string name="quick_settings_remove">Удалить плитку</string>
+ <string name="quick_settings_network_adb_label">Отладка по сети</string>
+ <string name="quick_settings_compass_label">Компас</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Профили системы</string>
+ <string name="quick_settings_profiles_off">Профили отключены</string>
+ <string name="quick_settings_heads_up_label">Всплывающие уведомления</string>
+ <string name="quick_settings_battery_saver_label">Энергосбережение</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Энергосбережение (идёт зарядка)</string>
+ <string name="quick_settings_caffeine_label">Запрет сна</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Синхронизация отключена.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Синхронизация включена.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Синхронизация отключена.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Синхронизация включена.</string>
+ <string name="quick_settings_sync_label">Синхронизация</string>
+ <string name="quick_settings_volume_panel_label">Панель громкости</string>
+ <string name="quick_settings_usb_tether_label">USB-модем</string>
+ <string name="quick_settings_screen_timeout_detail_title">Задержка отключения экрана</string>
+ <string name="quick_settings_lockscreen_label">Экран блокировки</string>
+ <string name="quick_settings_ambient_display_label">Индикация событий</string>
+ <string name="quick_settings_lockscreen_label_enforced">Блокировка экрана включена</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Отключено профилем</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Время до выключения экрана: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Время до выключения экрана изменено на <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Энергопотребление</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Режим энергопотребления: сберегающий.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Режим энергопотребления: сбалансированный.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Режим энергопотребления: высокая производительность.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Режим энергопотребления: энергоэффективный.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Режим энергопотребления: оптимальная производительность.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Режим энергопотребления изменён на сберегающий.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Режим энергопотребления изменён на сбалансированный.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Режим энергопотребления изменён на производительный.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Режим энергопотребления изменён на эффективный.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Режим энергопотребления изменён на режим оптимальной производительности.</string>
+ <string name="quick_settings_performance_profile_detail_title">Энергопотребление</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Экран блокировки выключен.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Экран блокировки включён.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Экран блокировки выключен.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Экран блокировки включён.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Индикация событий экраном отключена.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Индикация событий экраном включена.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Индикация событий экраном отключена.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Индикация событий экраном включена.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Всплывающие уведомления отключены.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Всплывающие уведомления включены.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Всплывающие уведомления отключены.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Всплывающие уведомления включены.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Переход в спящий режим разрешён.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Переход в спящий режим запрещён.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Режим энергосбережения выключен.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Режим энергосбережения включён.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Режим энергосбережения выключен.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Режим энергосбережения включён.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Динамическая плитка</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Следующий будильник</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Выбор метода ввода</string>
+ <string name="dynamic_qs_tile_su_label">Суперпользователь</string>
+ <string name="dynamic_qs_tile_themes_label">Темы</string>
+ <string name="quick_settings_title_advanced_location">Параметры отправки геоданных</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Отправка местоположения: режим экономии батареи.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Отправка местоположения: только по GPS.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Отправка местоположения: режим высокой точности.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Определение местоположения</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">По координатам сети</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">По спутникам GPS</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">По всем источникам</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Служба отправки местоположения переключена в режим экономии батареи.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Для отправки местоположения используются только данные GPS.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Служба отправки местоположения переключена в режим высокой точности.</string>
+ <string name="quick_settings_tiles_category_system">Системные плитки</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Добавление плитки</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Подключение к мобильной сети невозможно, пока включён режим полёта. Отключите его, а затем повторите попытку.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Фонарик включён</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Нажмите, чтобы отключить</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">Подключено %1$d устройство</item>
+ <item quantity="few">Подключены %1$d устройства</item>
+ <item quantity="other">Подключено %1$d устройств</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Нет SIM для моб. данных</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Заряд батареи док-станции <xliff:g id="number">%d</xliff:g> процентов.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Показать очередь воспроизведения</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g>, <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Проведите вниз, чтобы развернуть</string>
+ <string name="swipe_left_hint">Проведите влево, чтобы перейти к <xliff:g id="app_name">%1$s </xliff:g></string>
+ <string name="swipe_right_hint">Проведите вправо, чтобы перейти к уведомлениям</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 3188636..2197355 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -152,9 +152,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим полета."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Нет SIM-карты."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Сменить сеть"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд батареи в процентах: <xliff:g id="NUMBER">%d</xliff:g>."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Настройки"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Уведомления"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Удалить уведомление"</string>
diff --git a/packages/SystemUI/res/values-si-rLK/cm_arrays.xml b/packages/SystemUI/res/values-si-rLK/cm_arrays.xml
new file mode 100644
index 0000000..edf575a
--- /dev/null
+++ b/packages/SystemUI/res/values-si-rLK/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>උතුර</item>
+ <!-- North -->
+ <item>ඊශාන</item>
+ <!-- North east -->
+ <item>නැගෙනහිර</item>
+ <!-- East -->
+ <item>ගිනිකොන</item>
+ <!-- South east -->
+ <item>දකුණ</item>
+ <!-- South -->
+ <item>නිරිත</item>
+ <!-- South west -->
+ <item>බටහිර</item>
+ <!-- West -->
+ <item>වයඹ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-si-rLK/cm_strings.xml b/packages/SystemUI/res/values-si-rLK/cm_strings.xml
new file mode 100644
index 0000000..e4b7e46
--- /dev/null
+++ b/packages/SystemUI/res/values-si-rLK/cm_strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">පැවරීමට ක්‍රියාවක් තෝරන්න</string>
+ <string name="navbar_home_button">නිවස බොත්තම</string>
+ <string name="navbar_recent_button">මෑත බොත්තම</string>
+ <string name="navbar_search_button">සොයන්න බොත්තම</string>
+ <string name="navbar_back_button">ආපසු බොත්තම</string>
+ <string name="navbar_menu_conditional_button">මෙනුව (ඉබේ වැසෙන) බොත්තම</string>
+ <string name="navbar_menu_always_button">මෙනුව (නිතර පෙනෙන) බොත්තම</string>
+ <string name="navbar_menu_big_button">මෙනුව බොත්තම</string>
+ <string name="accessibility_dpad_left">වම් කර්සරය</string>
+ <string name="accessibility_dpad_right">දකුණු කර්සරය</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">යෙදුම් දත්ත පිහින්න</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">බලෙන් නවත්වන්න</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">අස්ථාපනය කරන්න</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">අරඹමින්\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-sk/cm_arrays.xml b/packages/SystemUI/res/values-sk/cm_arrays.xml
new file mode 100644
index 0000000..3c17f45
--- /dev/null
+++ b/packages/SystemUI/res/values-sk/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>S</item>
+ <!-- North -->
+ <item>SV</item>
+ <!-- North east -->
+ <item>V</item>
+ <!-- East -->
+ <item>JV</item>
+ <!-- South east -->
+ <item>J</item>
+ <!-- South -->
+ <item>JZ</item>
+ <!-- South west -->
+ <item>Z</item>
+ <!-- West -->
+ <item>SZ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sk/cm_strings.xml b/packages/SystemUI/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..68e99e4
--- /dev/null
+++ b/packages/SystemUI/res/values-sk/cm_strings.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Potiahnite doprava pre %1$s</string>
+ <string name="right_shortcut_hint">Potiahnite doľava pre %1$s</string>
+ <string name="select_application">Vyberte aplikáciu</string>
+ <string name="lockscreen_choose_action_title">Vyberte akciu</string>
+ <string name="lockscreen_none_target">Žiadna</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Vyberte akciu na priradenie</string>
+ <string name="navbar_home_button">Tlačidlo Domov</string>
+ <string name="navbar_recent_button">Tlačidlo Nedávne</string>
+ <string name="navbar_search_button">Tlačidlo Hľadať</string>
+ <string name="navbar_back_button">Tlačidlo Späť</string>
+ <string name="navbar_empty_button">Prázdne tlačidlo</string>
+ <string name="navbar_menu_conditional_button">Tlačidlo Ponuka (automaticky skrývané)</string>
+ <string name="navbar_menu_always_button">Tlačidlo Ponuka (vždy viditeľné)</string>
+ <string name="navbar_menu_big_button">Tlačidlo Ponuka</string>
+ <string name="accessibility_dpad_left">Kurzor vľavo</string>
+ <string name="accessibility_dpad_right">Kurzor vpravo</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Vymazať údaje aplikácie</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Vynútiť zastavenie</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Odinštalovať</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profily vyp.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profily vypnuté.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil sa zmenil na <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Inicializácia\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Zobrazenie aktuálnej obrazovky je zaistené, dokým ju neuvoľníte. Dotknite a podržte tlačidlo Späť pre uvoľnenie.</string>
+ <string name="quick_settings_custom_tile_detail_title">Vlastná dlaždica</string>
+ <string name="quick_settings_remove">Odstrániť dlaždicu</string>
+ <string name="quick_settings_network_adb_label">ADB cez sieť</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systémové profily</string>
+ <string name="quick_settings_profiles_off">Profily zakázané</string>
+ <string name="quick_settings_heads_up_label">Plávajúce oznámenia</string>
+ <string name="quick_settings_battery_saver_label">Šetrič batérie</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synch. vyp.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synch. zap.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synchronizácia vypnutá.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synchronizácia zapnutá.</string>
+ <string name="quick_settings_sync_label">Synchronizácia</string>
+ <string name="quick_settings_volume_panel_label">Panel hlasitosti</string>
+ <string name="quick_settings_usb_tether_label">Zdieľanie cez USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Časový limit obrazovky</string>
+ <string name="quick_settings_lockscreen_label">Obrazovka uzamknutia</string>
+ <string name="quick_settings_ambient_display_label">Ambientné zobrazenie</string>
+ <string name="quick_settings_lockscreen_label_enforced">Obrazovka uzamknutia povolená</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Časový limit obrazovky: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Časový limit obrazovky sa zmenil na <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Režim batérie</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Režim batérie: režim šetrenia energie.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Režim batérie: vyvážený režim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Režim batérie: režim výkonu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Režim batérie: efektívny režim.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Režim batérie: rýchly režim.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Režim batérie sa zmenil na režim šetrenia energie.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Režim batérie sa zmenil na vyvážený režim.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Režim batérie sa zmenil na režim výkonu.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Režim batérie sa zmenil na efektívny režim.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Režim batérie sa zmenil na výkonný režim.</string>
+ <string name="quick_settings_performance_profile_detail_title">Režim batérie</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Obrazovka uzamknutia vyp.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Obrazovka uzamknutia zap.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Obrazovka uzamknutia vypnutá.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Obrazovka uzamknutia zapnutá.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambientné zobrazenie povolené.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambientné zobrazenie zakázané.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambientné zobrazenie povolené.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambientné zobrazenie zakázané.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Plávajúce oznámenia zakázané.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Plávajúce oznámenia povolené.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Plávajúce oznámenia zakázané.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Plávajúce oznámenia povolené.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Šetrič batérie vypnutý.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Šetrič batérie zapnutý.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Šetrič batérie vypnutý.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Šetrič batérie zapnutý.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamické dlaždice</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Ďalší budík</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Výber IME</string>
+ <string name="dynamic_qs_tile_su_label">Root prístup</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Hlásenie polohy: režim šetrenia batérie.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Hlásenie polohy: režim iba so snímačmi.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Hlásenie polohy: režim vysokej presnosti.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Režimy polohy</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Šetrenie batérie</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Iba zariadenie</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Vysoká presnosť</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Hlásenie polohy sa zmenilo na režim šetrenia batérie.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Hlásenie polohy sa zmenilo na režim iba senzorov.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Hlásenie polohy sa zmenilo na režim vysokej presnosti.</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Batéria doku <xliff:g id="number">%d</xliff:g> percent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Zobraziť poradie prehrávania</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 041a949..e37247e 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -152,9 +152,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim v lietadle."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Žiadna SIM karta."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Zmena siete operátora"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Batéria <xliff:g id="NUMBER">%d</xliff:g> percent."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Nastavenia systému."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Upozornenia."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Vymazať upozornenie."</string>
diff --git a/packages/SystemUI/res/values-sl/cm_arrays.xml b/packages/SystemUI/res/values-sl/cm_arrays.xml
new file mode 100644
index 0000000..3c17f45
--- /dev/null
+++ b/packages/SystemUI/res/values-sl/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>S</item>
+ <!-- North -->
+ <item>SV</item>
+ <!-- North east -->
+ <item>V</item>
+ <!-- East -->
+ <item>JV</item>
+ <!-- South east -->
+ <item>J</item>
+ <!-- South -->
+ <item>JZ</item>
+ <!-- South west -->
+ <item>Z</item>
+ <!-- West -->
+ <item>SZ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sl/cm_strings.xml b/packages/SystemUI/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..3183ae3
--- /dev/null
+++ b/packages/SystemUI/res/values-sl/cm_strings.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Potegnite desno za %1$s</string>
+ <string name="right_shortcut_hint">Potegnite levo za %1$s</string>
+ <string name="lockscreen_message">Tapnite ikono na levi ali desni, da ponovno dodelite bližnjico zaklenjenega zaslona.</string>
+ <string name="lockscreen_default_target">Privzeto</string>
+ <string name="select_application">Izberite aplikacijo</string>
+ <string name="lockscreen_choose_action_title">Izberite dejanje</string>
+ <string name="lockscreen_none_target">Brez</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Izberite dejanje za dodelitev</string>
+ <string name="navbar_home_button">Gumb Domov</string>
+ <string name="navbar_recent_button">Gumb Nedavno</string>
+ <string name="navbar_search_button">Gumb Išči</string>
+ <string name="navbar_back_button">Gumb Nazaj</string>
+ <string name="navbar_empty_button">Gumb Prazno</string>
+ <string name="navbar_menu_conditional_button">Menijski gumb (sam. skrivanje)</string>
+ <string name="navbar_menu_always_button">Menijski gumb (vedno prikaži)</string>
+ <string name="navbar_menu_big_button">Menijski gumb</string>
+ <string name="accessibility_dpad_left">Kazalec levo</string>
+ <string name="accessibility_dpad_right">Kazalec desno</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Izbriši podatke aplikacije</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Vsili ustavitev</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Odstrani</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Svetlost lučke</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profili izklopljeni.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profili izklopljeni.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil spremenjen v <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Začenjanje \u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Nastavitve lučke</string>
+ <string name="led_notification_text">Lučka LED omogočena v nastavitvah</string>
+ <string name="qs_tile_edit_header_instruction">Pritisnite in pridržite ploščice za preurejanje</string>
+ <string name="quick_settings_edit_label">Uredi ploščice</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Ploščice za urejanje ni mogoče izbrisati</string>
+ <string name="qs_tiles_reset_confirmation">Ponastavi ploščice hitrih nastavitev na privzeto nastavitev?</string>
+ <string name="quick_settings_tile_reset_to_default">Ponastavi na privzeto razporeditev</string>
+ <string name="quick_settings_title_header">Glava</string>
+ <string name="quick_settings_title_tiles">Ploščice</string>
+ <string name="quick_settings_title_show_weather">Prikaži vreme</string>
+ <string name="quick_settings_title_show_brightness_slider">Prikaži drsnik za svetlost</string>
+ <string name="quick_settings_title_enlarge_first_row">Povečaj prvo vrstico</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">To jo ohrani prikazano, dokler je ne odpnete. Tapnite in pridržite gumb Nazaj, da jo odpnete.</string>
+ <string name="quick_settings_custom_tile_detail_title">Ploščica po meri</string>
+ <string name="quick_settings_remove">Odstrani ploščico</string>
+ <string name="quick_settings_network_adb_label">ADB preko omrežja</string>
+ <string name="quick_settings_compass_label">Kompas</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistemski profili</string>
+ <string name="quick_settings_profiles_off">Profili onemogočeni</string>
+ <string name="quick_settings_heads_up_label">Obvestila na zaslonu</string>
+ <string name="quick_settings_battery_saver_label">Ohranjevalnik baterije</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Ohranjevalnik baterije (polnjenje)</string>
+ <string name="quick_settings_caffeine_label">Kofein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sinhronizacija izklopljena.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sinhronizacija vklopljena.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sinhronizacija izklopljena.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sinhronizacija vklopljena.</string>
+ <string name="quick_settings_sync_label">Sinhronizacija</string>
+ <string name="quick_settings_volume_panel_label">Plošča za glasnost</string>
+ <string name="quick_settings_usb_tether_label">Delj. mob. int. USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Časovna omejitev zaslona</string>
+ <string name="quick_settings_lockscreen_label">Zakleni zaslon</string>
+ <string name="quick_settings_ambient_display_label">Okoliški zaslon</string>
+ <string name="quick_settings_lockscreen_label_enforced">Vsiljen zaklenjen zaslon</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Onemogočeno s profilom</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Časovna omejitev zaslona: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Časovna omejitev zaslona spremenjena na <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Način varčevanja energije</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Način varčevanja energije: način varčevanja.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Način varčevanja energije: uravnotežen način.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Način varčevanja energije: zmogljivostni način.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Način varčevanja energije: učinkoviti način.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Način varčevanja energije: hitri način.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Način varčevanja energije spremenjen v način varčevanja.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Način varčevanja energije spremenjen v uravnotežen način.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Način varčevanja energije spremenjen v zmogljivostni način.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Način varčevanja energije spremenjen v učinkoviti način.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Način varčevanja energije spremenjen v hitri način.</string>
+ <string name="quick_settings_performance_profile_detail_title">Način varčevanja energije</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Zaklepanje zaslona izklopljeno.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Zaklepanje zaslona vklopljeno.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Zaklepanje zaslona izklopljeno.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Zaklepanje zaslona vklopljeno.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Okoliški zaslon izklopljen.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Okoliški zaslon vklopljen.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Okoliški zaslon izklopljen.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Okoliški zaslon vklopljen.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Obvestila na zas. izk.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Obvestila na zas. vkl.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Obvestila na zaslonu izklopljena.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Obvestila na zaslonu vklopljena.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kofein izklopljen.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kofein vklopljen.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Ohranjevalnik baterije izklopljen.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Ohranjevalnik baterije vklopljen.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Ohranjevalnik baterije izklopljen.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Ohranjevalnik baterije vklopljen.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamične ploščice</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Naslednja budilka</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Izbirnik IME</string>
+ <string name="dynamic_qs_tile_su_label">Skrbniški dostop</string>
+ <string name="dynamic_qs_tile_themes_label">Teme</string>
+ <string name="quick_settings_title_advanced_location">Tri stanja lokacije</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Poročanje o lokaciji: način varčevanja energije.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Poročanje o lokaciji: način \'samo tipala\'.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Poročanje o lokaciji: način visoke natančnosti.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Način lokacije</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Varčevanje z energijo</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Samo naprava</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Visoka natančnost</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Poročanje o lokaciji spremenjeno v način varčevanja energije.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Poročanje o lokaciji spremenjeno v način \'samo tipala\'.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Poročanje o lokaciji spremenjen v način visoke natančnosti.</string>
+ <string name="quick_settings_tiles_category_system">Sistemske ploščice</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Dodaj ploščico</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Povezava z mobilnimi omrežji ni možna v načinu za letalo. Onemogočite način za letalo in poskusite znova.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Svetilka je vklopljena</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tapnite, če želite izklopiti</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d odjemalec</item>
+ <item quantity="two">%1$d odjemalca</item>
+ <item quantity="few">%1$d odjemalci</item>
+ <item quantity="other">%1$d odjemalcev</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Ni podatkovne kartice SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level"><xliff:g id="number">%d</xliff:g> odstotkov baterije v postaji.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Prikaži čak. vrsto pred.</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">Za razširitev potegnite navzdol</string>
+ <string name="swipe_left_hint">Za <xliff:g id="app_name">%1$s</xliff:g> potegnite levo</string>
+ <string name="swipe_right_hint">Za obvestila potegnite desno</string>
+</resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/cm_arrays.xml b/packages/SystemUI/res/values-sq-rAL/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-sq-rAL/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/cm_strings.xml b/packages/SystemUI/res/values-sq-rAL/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-sq-rAL/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-sr/cm_arrays.xml b/packages/SystemUI/res/values-sr/cm_arrays.xml
new file mode 100644
index 0000000..ed1ef4d
--- /dev/null
+++ b/packages/SystemUI/res/values-sr/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>С</item>
+ <!-- North -->
+ <item>СИ</item>
+ <!-- North east -->
+ <item>И</item>
+ <!-- East -->
+ <item>ЈИ</item>
+ <!-- South east -->
+ <item>Ј</item>
+ <!-- South -->
+ <item>ЈЗ</item>
+ <!-- South west -->
+ <item>З</item>
+ <!-- West -->
+ <item>СЗ</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sr/cm_strings.xml b/packages/SystemUI/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..b7725f6
--- /dev/null
+++ b/packages/SystemUI/res/values-sr/cm_strings.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA +</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Превуци десно за %1$s</string>
+ <string name="right_shortcut_hint">Превуци лево за %1$s</string>
+ <string name="lockscreen_message">Додирни икону лево или десно да доделиш пречицу за закључани екран.</string>
+ <string name="lockscreen_default_target">Подразумевано</string>
+ <string name="select_application">Изабери апликацију</string>
+ <string name="lockscreen_choose_action_title">Изабери акцију</string>
+ <string name="lockscreen_none_target">Ниједан</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Изабери акцију да доделиш</string>
+ <string name="navbar_home_button">Главно дугме</string>
+ <string name="navbar_recent_button">Дугме за Недавно</string>
+ <string name="navbar_search_button">Дугме за Претрагу</string>
+ <string name="navbar_back_button">Дугме за Назад</string>
+ <string name="navbar_empty_button">Празан тастер</string>
+ <string name="navbar_menu_conditional_button">Мени (ауто сакриј) дугме</string>
+ <string name="navbar_menu_always_button">Мени (увек прикажи) дугме</string>
+ <string name="navbar_menu_big_button">Дугме за Мени</string>
+ <string name="accessibility_dpad_left">Курсор лево</string>
+ <string name="accessibility_dpad_right">Курсор десно</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Избриши податке апликације</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Приморај заустављање</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Деинсталирај</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Осветљење</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Профили искључени.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Профил: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Профили су искључени.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Профил је промењен у <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Покретање\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Поставке светла</string>
+ <string name="led_notification_text">LED светло омогућено помоћу поставки</string>
+ <string name="qs_tile_edit_header_instruction">Притисни и држи плочицу за реорганизацију</string>
+ <string name="quick_settings_edit_label">Уреди плочице</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Није могуће обрисати уређивање плочица</string>
+ <string name="qs_tiles_reset_confirmation">Подеси плочице брзог подешавања на подразумевано?</string>
+ <string name="quick_settings_tile_reset_to_default">Подеси на посразумевани распоред</string>
+ <string name="quick_settings_title_header">Заглавље</string>
+ <string name="quick_settings_title_tiles">Плочице</string>
+ <string name="quick_settings_title_show_weather">Покажи време</string>
+ <string name="quick_settings_title_show_brightness_slider">Прикажи клизач оветљености</string>
+ <string name="quick_settings_title_enlarge_first_row">Увећајте први ред</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Ово задржава преглед док га не уклониш. Додирни и држи дугме за назад да уклониш.</string>
+ <string name="quick_settings_custom_tile_detail_title">Промени назив</string>
+ <string name="quick_settings_remove">Уклони назив</string>
+ <string name="quick_settings_network_adb_label">ADB преко мреже</string>
+ <string name="quick_settings_compass_label">Компас</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Профили система</string>
+ <string name="quick_settings_profiles_off">Профили онемогућени</string>
+ <string name="quick_settings_heads_up_label">Искачуће поруке</string>
+ <string name="quick_settings_battery_saver_label">Уштеда батерије</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Чувар батерије (пуњење)</string>
+ <string name="quick_settings_caffeine_label">Кофеин</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Синхрон. искључено.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Синхрон. укључено.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Синхронизација је искључена.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Синхронизација је укључена.</string>
+ <string name="quick_settings_sync_label">Синхрон</string>
+ <string name="quick_settings_volume_panel_label">Панел гласноће</string>
+ <string name="quick_settings_usb_tether_label">USB повезивање</string>
+ <string name="quick_settings_screen_timeout_detail_title">Искључивање екрана</string>
+ <string name="quick_settings_lockscreen_label">Закључан екран</string>
+ <string name="quick_settings_ambient_display_label">Амбијент приказ</string>
+ <string name="quick_settings_lockscreen_label_enforced">Присилно закључани екран</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Онемогућено профилом</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Време искључења екрана: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Време искључења екрана промењено у <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Режим батерије</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Режим батерије: режим уштеде енергије.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Режим батерије: балансирани режим.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Режим батерије: режим учинка.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Режим батерије: режим ефикасности.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Режим батерије: режим брзине.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Режим батерије промењен у режим уштеде енергије.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Режим батерије промењен у балансирани режим.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Режим батерије промењен у режим учинка.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Режим батерије промењен у режим ефикасности.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Режим батерије промењен у режим брзине.</string>
+ <string name="quick_settings_performance_profile_detail_title">Режим батерије</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Закључани екран искључен.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Закључани екран укључен.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Закључани екран је искључен.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Закључани екран је укључен.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Амбијент приказ искључен.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Амбијент приказ укључен.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Амбијент приказ ће бити искључен.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Амбијент приказ ће бити укључен.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Искачуће поруке искључене.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Искачуће поруке укључене.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Искачуће поруке ће бити искључене.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Искачуће поруке ће бити укључене.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Кофеин је искључен.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Кофеин је укључен.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Уштеда батерије искључена.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Уштеда батерије укључена.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Уштеда батерије је искључена.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Уштеда батерије је укључена.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Динамичне плочице</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Следећи аларм</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME бирач</string>
+ <string name="dynamic_qs_tile_su_label">Root приступ</string>
+ <string name="dynamic_qs_tile_themes_label">Теме</string>
+ <string name="quick_settings_title_advanced_location">Локација три-државе</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Локација извештај: режим чувања батерије.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Локација извештај: режим само сензори.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Локација извештај: режим високе тачности.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Режими локације</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Уштеда батерије</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Само уређај</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Велика прецизност</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Извештај о локацији промењен у режим уштеде батерије.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Извештај о локацији промењен у режим само сензора.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Извештај о локацији промењен у режим високе прецизности.</string>
+ <string name="quick_settings_tiles_category_system">Плочице система</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Додај плочицу</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Није се могуће конектовати на мобилне мреже док је режим авиона омогућен. Онемогући режим авиона и пробај поново.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Блиц је укључен</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Додирни да угасиш</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d клијент</item>
+ <item quantity="few">%1$d клијента</item>
+ <item quantity="other">%1$d клијента</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Нема SIM-а за податке</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Батерија <xliff:g id="number">%d</xliff:g> процената.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Прикажи на чекању</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sv/cm_arrays.xml b/packages/SystemUI/res/values-sv/cm_arrays.xml
new file mode 100644
index 0000000..bdbe6b4
--- /dev/null
+++ b/packages/SystemUI/res/values-sv/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NO</item>
+ <!-- North east -->
+ <item>O</item>
+ <!-- East -->
+ <item>SO</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SV</item>
+ <!-- South west -->
+ <item>V</item>
+ <!-- West -->
+ <item>NV</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sv/cm_strings.xml b/packages/SystemUI/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..0363610
--- /dev/null
+++ b/packages/SystemUI/res/values-sv/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Svep höger för %1$s</string>
+ <string name="right_shortcut_hint">Svep vänster för %1$s</string>
+ <string name="lockscreen_message">Tryck på en ikon till vänster eller höger för att tilldela en låsskärmgenväg.</string>
+ <string name="lockscreen_default_target">Standard</string>
+ <string name="select_application">Välj app</string>
+ <string name="lockscreen_choose_action_title">Välj åtgärd</string>
+ <string name="lockscreen_none_target">Ingen</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Välj åtgärd att tilldela</string>
+ <string name="navbar_home_button">Hemknapp</string>
+ <string name="navbar_recent_button">Senasteknapp</string>
+ <string name="navbar_search_button">Sökknapp</string>
+ <string name="navbar_back_button">Bakåtknapp</string>
+ <string name="navbar_empty_button">Tom knapp</string>
+ <string name="navbar_menu_conditional_button">Menyknapp (autogöm)</string>
+ <string name="navbar_menu_always_button">Menyknapp (visa alltid)</string>
+ <string name="navbar_menu_big_button">Menyknapp</string>
+ <string name="accessibility_dpad_left">Markör till vänster</string>
+ <string name="accessibility_dpad_right">Markör till höger</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Rensa appdata</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Tvinga avslutning</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Avinstallera</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Ljusstyrka</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiler av.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiler har stängts av.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profil ändrades till <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Initierar\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Ljusinställningar</string>
+ <string name="led_notification_text">LED-ljus aktiverat av inställningar</string>
+ <string name="qs_tile_edit_header_instruction">Tryck och håll brickor för att arrangera om</string>
+ <string name="quick_settings_edit_label">Redigera brickor</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Kan inte radera Redigera-brickan</string>
+ <string name="qs_tiles_reset_confirmation">Återställ snabbinställningsbrickor till standardkonfiguration?</string>
+ <string name="quick_settings_tile_reset_to_default">Återställ till standardlayout</string>
+ <string name="quick_settings_title_header">Huvud</string>
+ <string name="quick_settings_title_tiles">Brickor</string>
+ <string name="quick_settings_title_show_weather">Visa väder</string>
+ <string name="quick_settings_title_show_brightness_slider">Visa Ljusstyrkereglaget</string>
+ <string name="quick_settings_title_enlarge_first_row">Förstora första raden</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Detta håller den synlig tills du frigör den. Tryck och håll nere Bakåt-knappen för att frigöra.</string>
+ <string name="quick_settings_custom_tile_detail_title">Anpassad bricka</string>
+ <string name="quick_settings_remove">Ta bort bricka</string>
+ <string name="quick_settings_network_adb_label">ADB över nätverk</string>
+ <string name="quick_settings_compass_label">Kompass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Systemprofiler</string>
+ <string name="quick_settings_profiles_off">Profiler inaktiverad</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Strömsparläge</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Batterisparfunktion (laddar)</string>
+ <string name="quick_settings_caffeine_label">Koffein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Synk av.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Synk på.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Synk inaktiverad.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Synk aktiverad.</string>
+ <string name="quick_settings_sync_label">Synk</string>
+ <string name="quick_settings_volume_panel_label">Volympanel</string>
+ <string name="quick_settings_usb_tether_label">USB-tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Timeout för skärm</string>
+ <string name="quick_settings_lockscreen_label">Låsskärm</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Tvingad låsskärm</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Inaktiverad av profil</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Skärm-timeout: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Skärm-timeout ändrades till <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Batteriläge</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Batteriläge: energisparläge.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Batteriläge: balanserat läge.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Batteriläge: prestandaläge.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Batteriläge: strömsparande läge.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Batteriläge: prestandaläge.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Batteriläge ändrat till energisparläge.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Batteriläge ändrat till balanserat läge.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Batteriläge ändrat till prestandaläge.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Batteriläge ändrat till strömsparande läge.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Batteriläge ändrat till prestandaläge.</string>
+ <string name="quick_settings_performance_profile_detail_title">Batteriläge</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Låsskärm av.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Låsskärm på.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Låsskärm inaktiverad.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Låsskärm aktiverad.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display av.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display påslagen.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display avslagen.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display påslagen.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up av.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up på.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up avslaget.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up påslaget.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Koffein av.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Koffein på.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Strömsparläge är inaktiverat.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Strömsparläge är aktiverat.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Strömsparläge inaktiverat.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Strömsparläge aktiverat.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamiska bricka</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Nästa alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME-väljare</string>
+ <string name="dynamic_qs_tile_su_label">Root-åtkomst</string>
+ <string name="quick_settings_title_advanced_location">Tri-state placering</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Platsrapportering: batterisparläge.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Platsrapportering: endast sensorläge.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Platsrapportering: högt precisionsläge.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Platsläge</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Batterisparläge</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Endast enhet</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Hög noggrannhet</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Platsrapportering ändrades till batterispararläge.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Platsrapportering ändrad till endast sensor.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Platsrapportering ändrad till hög noggrannhet.</string>
+ <string name="quick_settings_tiles_category_system">Systembrickor</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Lägg till en bricka</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Det går inte att ansluta till mobila nät när flygplansläge är aktiverat. Inaktivera flygplansläge och försök igen.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Ficklampan är på</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tryck för att stänga av</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d klient</item>
+ <item quantity="other">%1$d klienter</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Inget data SIM</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dockningsstationens batteri<xliff:g id="number">%d</xliff:g> procent.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Visa uppspelningskö</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-sw/cm_arrays.xml b/packages/SystemUI/res/values-sw/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-sw/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-sw/cm_strings.xml b/packages/SystemUI/res/values-sw/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-sw/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/cm_arrays.xml b/packages/SystemUI/res/values-ta-rIN/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-ta-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/cm_strings.xml b/packages/SystemUI/res/values-ta-rIN/cm_strings.xml
new file mode 100644
index 0000000..eb45d15
--- /dev/null
+++ b/packages/SystemUI/res/values-ta-rIN/cm_strings.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$sக்காக வலதுபுறம் தேய்.</string>
+ <string name="right_shortcut_hint">%1$sக்காக இடதுபுறம் தேய்.</string>
+ <string name="lockscreen_message">ஒரு லாக் திரை குறுக்குவழியை மறுசீரமைக்க இடது அல்லது வலதுபுறம் உள்ள ஐகானை தட்டு</string>
+ <string name="lockscreen_default_target">இயல்புநிலை</string>
+ <string name="select_application">பயன்பாட்டைத் தேர்ந்தெடுக்கவும்</string>
+ <string name="lockscreen_choose_action_title">செயல்பாட்டை தேர்வுசெய்</string>
+ <string name="lockscreen_none_target">ஏதுமில்லை</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">ஒதுக்குவதற்கான செயலை தேர்வுசெய்</string>
+ <string name="navbar_home_button">முகப்பு பட்டன்</string>
+ <string name="navbar_recent_button">சமீபத்திய பொத்தான்</string>
+ <string name="navbar_search_button">பட்டனை தேடுதல்</string>
+ <string name="navbar_back_button">பின்செல் பொத்தான்</string>
+ <string name="navbar_empty_button">வெறுமை பொத்தான்</string>
+ <string name="navbar_menu_conditional_button">மெனு(autoHide) பொத்தான்</string>
+ <string name="navbar_menu_always_button">மெனு(alwaysShow) பொத்தான்</string>
+ <string name="navbar_menu_big_button">மெனு பொத்தான்</string>
+ <string name="accessibility_dpad_left">இடஞ்சுட்டி இடது</string>
+ <string name="accessibility_dpad_right">இடஞ்சுட்டி வலது</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">பயன்பாட்டு தரவை துடைக்க</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">உடனே நிறுத்து</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">நிறுவல்நீக்கு</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ஒளி ஒளிர்வு</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">சுயவிவரங்கள் ஆஃப்.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">சுயவிவரம்: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">சுயவிவரங்கள் ஆஃப் செய்யப்பட்டன.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">சுயவிவரம் <xliff:g id="profile" example="Default">%s</xliff:g>க்கு மாற்றப்பட்டது.</string>
+ <string name="quick_settings_compass_init">துவக்குகிறது\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">ஒளி அமைப்புகள்</string>
+ <string name="led_notification_text">LED ஒளி அமைப்பினால் செயல்படுத்தப்படுதல்</string>
+ <string name="qs_tile_edit_header_instruction">மறு ஒழுங்கமைக்க ஓடுகளை அழுத்தி பிடித்துக்கொள்ளவும்</string>
+ <string name="quick_settings_edit_label">ஓடுகளை திருத்து</string>
+ <string name="quick_settings_cannot_delete_edit_tile">ஒட்டு திருத்தத்தை நீக்க முடியாது</string>
+ <string name="qs_tiles_reset_confirmation">விரைவு அமைப்புகள் டைல்களை இயல்புநிலை கட்டமைப்புக்கு மீட்டமைக்கவா?</string>
+ <string name="quick_settings_tile_reset_to_default">இயல்புநிலை தளவமைப்புக்கு மீட்டமை</string>
+ <string name="quick_settings_title_header">மேற்குறிப்பு</string>
+ <string name="quick_settings_title_tiles">ஓடுகள்</string>
+ <string name="quick_settings_title_show_weather">வானிலையை காட்டு</string>
+ <string name="quick_settings_title_show_brightness_slider">பிரகாச ஸ்லைடரை காட்டு</string>
+ <string name="quick_settings_title_enlarge_first_row">முதல் வரிசையை பெரிதாக்கு</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">நீங்கள் பின்நீக்கு செய்யும்வரை இது காட்சியில் வைக்கும். பின்நீக்கு செய்ய பின்செல் பொத்தானை தொட்டு பிடித்துக்கொள்.</string>
+ <string name="quick_settings_custom_tile_detail_title">தனிப்பயன் ஓடு</string>
+ <string name="quick_settings_remove">டைலை அகற்று</string>
+ <string name="quick_settings_network_adb_label">பிணையத்தின் மீது ADB</string>
+ <string name="quick_settings_compass_label">காம்பஸ்</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">சிஸ்டம் சுயவிவரங்கள்</string>
+ <string name="quick_settings_profiles_off">சுயவிவரங்கள் முடக்கப்பட்டன</string>
+ <string name="quick_settings_heads_up_label">ஹெட்ஸ் அப்</string>
+ <string name="quick_settings_battery_saver_label">பேட்டரி சேமிப்பான்</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">கேஃபைன்</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">ஒத்திசைவு ஆஃப்</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">ஒத்திசைவு ஆன்</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">ஒத்திசைவு அணைக்கப்பட்டது</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">ஒத்திசைவு துவக்கப்பட்டது</string>
+ <string name="quick_settings_sync_label">ஒத்திசை</string>
+ <string name="quick_settings_volume_panel_label">வால்யூம் பேனல்</string>
+ <string name="quick_settings_usb_tether_label">USB டெதெரிங்</string>
+ <string name="quick_settings_screen_timeout_detail_title">திரை டைமவுட்</string>
+ <string name="quick_settings_lockscreen_label">பூட்டுத் திரை</string>
+ <string name="quick_settings_ambient_display_label">சூழல்சார் திரை</string>
+ <string name="quick_settings_lockscreen_label_enforced">பூட்டுத் திரை அமலாக்கப்பட்டது</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">சுயவிவரம் முடக்கப்பட்டது</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">திரை நேரம்முடிவு: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">திரை நேரம்முடிவு <xliff:g id="timeout" example="30 seconds">%s</xliff:g>க்கு மாற்றப்பட்டது.</string>
+ <string name="qs_tile_performance">பேட்டரி முறை</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">மின்கல பயன்முறை: மின்சக்தி பயன்முறை.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">மின்கல பயன்முறை: சமச்சீரான பயன்முறை.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">மின்கல பயன்முறை: செயல்திறன் பயன்முறை.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">மின்கல பயன்முறை: ஆற்றல் பயன்முறை</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">மின்கல பயன்முறை: விரைவு பயன்முறை</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">மின்கல பயன்முறை மின்சக்தி சேமிப்பு பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">மின்கல பயன்முறை சமச்சீரான பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">மின்கல பயன்முறை செயல்திறன் பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">மின்கல பயன்முறை ஆற்றல் பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">மின்கல பயன்முறை விரைவு பயன்முறைக்கு மாறியது.</string>
+ <string name="quick_settings_performance_profile_detail_title">பேட்டரி முறை</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">பூட்டுத் திரை ஆஃப்.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">பூட்டுத் திரை ஆன்.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">பூட்டுத் திரை ஆஃப் செய்யப்பட்டது</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">பூட்டுத் திரை ஆன் செய்யப்பட்டது</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">சூழல் காட்சி ஆஃப்.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">சூழல் காட்சி ஆன்.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">சூழல் காட்சி ஆஃப் செய்யப்பட்டது.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">சூழல் காட்சி ஆன் செய்யப்பட்டது.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">ஹெட்ஸ் அப் ஆஃப்.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">ஹெட்ஸ் அப் ஆன்.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">ஹெட்ஸ் அப் ஆஃப் செய்யப்பட்டது.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">ஹெட்ஸ் அப் ஆன் செய்யப்பட்டது.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">கேஃபைன் ஆஃப்.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">கேஃபைன் ஆன்.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">பேட்டரி பாதுகாப்பான் ஆஃப்</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">பேட்டரி சேமிப்பான் ஆன்</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">பேட்டரி பாதுகாப்பான் அணைக்கப்பட்டது</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">பேட்டரி பாதுகாப்பான் துவக்கப்பட்டது</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">இயங்குநிலை டைல்</string>
+ <string name="dynamic_qs_tile_next_alarm_label">அடுத்த அலாரம்</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME தேர்ந்தெடுப்பான்</string>
+ <string name="dynamic_qs_tile_su_label">மூல அணுகல்</string>
+ <string name="quick_settings_title_advanced_location">மூன்று-நிலை இருப்பிடம்</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">இருப்பிடம் அறிவித்தல்: மின்கல சேமிப்பு பயன்முறை.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">இருப்பிடம் அறிவித்தல்: உணர்கருவிகள் மட்டும் பயன்முறை.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">இருப்பிடம் அறிவித்தல்: உயர் துல்லிய பயன்முறை.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">இருப்பிடப் பயன்முறை</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">பேட்டரி சேமிப்பு</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">சாதனம் மட்டும்</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">அதிக துல்லியத்தன்மை</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">இருப்பிடம் அறிவித்தல் மின்கல சேமிப்பு பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">இருப்பிடம் அறிவித்தல் உணர்கருவிகள் மட்டும் பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">இருப்பிடம் அறிவித்தல் உயர் துல்லிய பயன்முறைக்கு மாற்றப்பட்டது.</string>
+ <string name="quick_settings_tiles_category_system">கணினி ஓடுகள்</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">ஒரு ஓட்டை சேர்</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">விமான பயன்முறை செயல்படுத்தப்பட்டு இருக்கும்போது மொபைல் பிணையங்களை இணைக்க முடியவில்லை. விமான பயன்முறையை முடக்கிவிட்டு மீண்டும் முயற்சிக்கவும்.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ஃபிளாஷ்லைட் இயக்கத்தில் உள்ளது</string>
+ <string name="quick_settings_tile_flashlight_not_summary">ஆஃப் செய்ய தட்டவும்</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">பொருத்தப்பட்ட மின்கல <xliff:g id="number">%d</xliff:g> சதவிகிதம்.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">இயக்கு சாரை காண்பி</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-te-rIN/cm_arrays.xml b/packages/SystemUI/res/values-te-rIN/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-te-rIN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-te-rIN/cm_strings.xml b/packages/SystemUI/res/values-te-rIN/cm_strings.xml
new file mode 100644
index 0000000..aee0b52
--- /dev/null
+++ b/packages/SystemUI/res/values-te-rIN/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">హెచ్ఎస్పిఎ+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s కొరకు కుడి వైపుకు స్వైప్ చేయుము</string>
+ <string name="right_shortcut_hint">%1$s కొరకు ఎడమ వైపుకు స్వైప్ చేయుము</string>
+ <string name="lockscreen_message">లాక్ స్క్రీన్ సత్వరమార్గాన్ని తిరిగి కేటాయించేందుకు ఎడమ లేదా కుడి వైపున ఉన్న చిహ్నం పైన ట్యాప్ చేయండి.</string>
+ <string name="lockscreen_default_target">డిఫాల్ట్</string>
+ <string name="select_application">అనువర్తనాన్ని ఎంచుకోండి</string>
+ <string name="lockscreen_choose_action_title">కార్యాచరణను ఎంచుకోండి</string>
+ <string name="lockscreen_none_target">ఏదీ లేదు</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">కేటాయించేందుకు చర్యను ఎంచుకొనుము</string>
+ <string name="navbar_home_button">హోమ్ బటన్</string>
+ <string name="navbar_recent_button">ఇటీవలి బటన్</string>
+ <string name="navbar_search_button">శోధన బటన్</string>
+ <string name="navbar_back_button">బ్యాక్ బటన్</string>
+ <string name="navbar_empty_button">ఖాళీ బటన్</string>
+ <string name="navbar_menu_conditional_button">మెనూ (ఆటోహైడ్) బటన్</string>
+ <string name="navbar_menu_always_button">మెనూ (ఆల్వేస్ షో) బటన్</string>
+ <string name="navbar_menu_big_button">మెనూ బటన్</string>
+ <string name="accessibility_dpad_left">కర్సర్ ఎడమకి</string>
+ <string name="accessibility_dpad_right">కర్సర్ కుడికి</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ప్రోగ్రాం డేటాను తుడిపివేయుము</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">నిర్బంధ ఆపివేత</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">అన్ఇన్‌స్టాల్ చేయి</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">లైట్ ప్రకాశవంతం</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">ప్రోఫైళ్ళు ఆఫ్.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">ప్రొఫైల్: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">ప్రోఫైళ్ళు ఆపివేయబడినవి.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">ప్రొఫైల్ <xliff:g id="profile" example="Default">%s</xliff:g>కు మార్చబడింది.</string>
+ <string name="quick_settings_compass_init">ప్రారంభించబడుతోంది\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">లైట్ సెట్టింగ్స్</string>
+ <string name="led_notification_text">సెట్టింగ్సుచే చేతనపరచబడిన LED లైట్</string>
+ <string name="qs_tile_edit_header_instruction">తిరిగి అమర్చడానికి టైల్స్ ను నొక్కి పట్టుకోండి</string>
+ <string name="quick_settings_edit_label">టైల్స్ ను సంకలనం చేయండి</string>
+ <string name="quick_settings_cannot_delete_edit_tile">సంకలన టైల్ ను తొలగించలేకపోయింది</string>
+ <string name="qs_tiles_reset_confirmation">స్వయంసిద్ధ నిర్మితీకరణకు త్వరిత సెట్టింగ్‌ల టైల్స్ ను రీసెట్ చేయాలా?</string>
+ <string name="quick_settings_tile_reset_to_default">స్వయంసిద్ధ లేవుట్‌ కు రీసెట్ చేయి</string>
+ <string name="quick_settings_title_header">శీర్షిక</string>
+ <string name="quick_settings_title_tiles">టైల్స్</string>
+ <string name="quick_settings_title_show_weather">వాతావరణాన్ని చూపించు</string>
+ <string name="quick_settings_title_show_brightness_slider">ప్రకాశం స్థితి నిర్థారణిను చూపుము</string>
+ <string name="quick_settings_title_enlarge_first_row">మొదటి వరుసను పెద్దది చేయుము</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">మీరు అన్పిన్ చేసేంతవరకు ఇది దానిని వీక్షణలో ఉంచుతుంది. అన్పిన్ చేసేందుకు బ్యాక్ బటనును తాకి అంతే పట్టుకోండి.</string>
+ <string name="quick_settings_custom_tile_detail_title">అనుకూలీకరించిన టైల్</string>
+ <string name="quick_settings_remove">టైలును తొలిగించుము</string>
+ <string name="quick_settings_network_adb_label">ADB ఓవర్ నెట్వర్క్</string>
+ <string name="quick_settings_compass_label">దిక్సూచి</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">సిస్టమ్ ప్రోఫైళ్ళు</string>
+ <string name="quick_settings_profiles_off">ప్రోఫైళ్ళు నిలిపివేయబడ్డాయి</string>
+ <string name="quick_settings_heads_up_label">హెచ్చరిక</string>
+ <string name="quick_settings_battery_saver_label">బ్యాటరీ సేవర్</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_caffeine_label">కాఫిన్</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">సమకాలీకరణ ఆఫ్.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">సమకాలీకరణ ఆన్.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">సమకాలీకరణ ఆపివేయబడింది.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">సమకాలీకరణ ఆన్ చేయబడింది.</string>
+ <string name="quick_settings_sync_label">సమకాలీకరణ</string>
+ <string name="quick_settings_volume_panel_label">వాల్యూమ్ ప్యానల్</string>
+ <string name="quick_settings_usb_tether_label">USB టీథరింగ్</string>
+ <string name="quick_settings_screen_timeout_detail_title">స్క్రీన్ సమయం ముగిసింది</string>
+ <string name="quick_settings_lockscreen_label">స్క్రీన్‌ను లాక్ చేయడం</string>
+ <string name="quick_settings_ambient_display_label">యాంబియెంట్ డిస్‌ప్లే</string>
+ <string name="quick_settings_lockscreen_label_enforced">లాక్ స్క్రీన్ అమలు</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">ప్రొఫైల్‌ను నిలిపివెయ్యబడింది</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">స్క్రీన్ సమయం ముగిసింది: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">స్క్రీన్ ముగింపు సమయం <xliff:g id="timeout" example="30 seconds">%s</xliff:g>కు మార్చబడింది.</string>
+ <string name="qs_tile_performance">బ్యాటరీ మోడ్</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">బ్యాటరీ మోడ్: పవర్ సేవ్ మోడ్.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">బ్యాటరీ మోడ్: సంతులిత మోడ్.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">బ్యాటరీ మోడ్: పనితనపు మోడ్.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">బ్యాటరీ మోడ్: సమర్థత మోడ్.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">బ్యాటరీ మోడ్: త్వరిత మోడ్.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">బ్యాటరీ మోడ్ పవర్ సేవ్ మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">బ్యాటరీ మోడ్ సంతులిత మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">బ్యాటరీ మోడ్ పనితనపు మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">బ్యాటరీ మోడ్ సమర్థత మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">బ్యాటరీ మోడ్ త్వరిత మోడుకు మార్చబడింది.</string>
+ <string name="quick_settings_performance_profile_detail_title">బ్యాటరీ మోడ్</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">లాక్ స్క్రీన్ ఆఫ్.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">లాక్ స్క్రీన్ ఆన్.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">లాక్ స్క్రీన్ ఆపివేయబడింది.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">లాక్ స్క్రీన్ ఆన్ చేయబడింది.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">పరిసర ప్రదర్శన ఆఫ్.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">పరిసర ప్రదర్శన ఆన్.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">పరిసర ప్రదర్శన ఆపివేయబడింది.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">పరిసర ప్రదర్శన ఆన్ చేయబడింది.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">హెచ్చరిక ఆఫ్.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">హెచ్చరిక ఆన్.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">హెచ్చరిక ఆపివేయబడింది.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">హెచ్చరిక ఆన్ చేయబడింది.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">కాఫిన్ ఆఫ్</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">కాఫిన్ ఆన్</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">బ్యాటరీ సేవర్ ఆఫ్.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">బ్యాటరీ సేవర్ ఆన్.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">బ్యాటరీ సేవర్ ఆఫ్ చేయబడింది</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">బ్యాటరీ సేవర్ ఆన్ చేయబడింది.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">డైనమిక్ టైల్</string>
+ <string name="dynamic_qs_tile_next_alarm_label">తరువాతి అలారం</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME సెలక్టర్</string>
+ <string name="dynamic_qs_tile_su_label">మూల ప్రాప్తి</string>
+ <string name="quick_settings_title_advanced_location">మూడు-స్థితుల స్థానం</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">స్థాన నివేదిక: బ్యాటరీ సేవింగ్ మోడ్.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">స్థాన నివేదిక: సెన్సార్లు మాత్రమే మోడ్.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">స్థాన నివేదిక: అధిక ఖచ్చితత్వ మోడ్.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">స్థానం మోడ్</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">బ్యాటరీ ఆదా</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">పరికరం మాత్రమే</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">అధిక నిర్దుష్టత</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">స్థాన నివేదిక బ్యాటరీ సేవింగ్ మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">స్థాన నివేదిక సెన్సార్లు మాత్రమే మోడుకు మార్చబడింది.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">స్థాన నివేదిక అధిక ఖచ్చితత్వ మోడుకు మార్చబడింది.</string>
+ <string name="quick_settings_tiles_category_system">సిస్టమ్ టైల్స్</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">టైల్‌ ను జోడించు</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">విమాన మోడ్ అమలుపరచునప్పుడు మొబైల్ నెట్వర్క్ కనెక్ట్ చేయుటకు సాధ్యపడలేదు. విమాన మోడ్ ను నిలిపివేసి, తిరిగి ప్రయత్నించండి.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ఫ్లాష్లైట్ ఆన్ అయ్యింది</string>
+ <string name="quick_settings_tile_flashlight_not_summary">ఆఫ్ చెయ్యడానికి టాప్ నొక్కండి</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d క్లయింట్</item>
+ <item quantity="other">%1$d క్లయింట్
+
+%1$d క్లయింట్స్</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">డాక్ బ్యాటరీ <xliff:g id="number">%d</xliff:g> పర్సెంట్.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">ప్లే క్యూను చూపుము</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-th/cm_arrays.xml b/packages/SystemUI/res/values-th/cm_arrays.xml
new file mode 100644
index 0000000..3110756
--- /dev/null
+++ b/packages/SystemUI/res/values-th/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item>
+ <!-- North -->
+ <item>NE</item>
+ <!-- North east -->
+ <item>E</item>
+ <!-- East -->
+ <item>SE</item>
+ <!-- South east -->
+ <item>S</item>
+ <!-- South -->
+ <item>SW</item>
+ <!-- South west -->
+ <item>W</item>
+ <!-- West -->
+ <item>NW</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-th/cm_strings.xml b/packages/SystemUI/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..a70602e
--- /dev/null
+++ b/packages/SystemUI/res/values-th/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">ปัดไปทางขวาเพื่อ %1$s</string>
+ <string name="right_shortcut_hint">ปัดไปทางซ้ายเพื่อ %1$s</string>
+ <string name="lockscreen_message">แตะที่ไอคอนด้านซ้ายหรือขวาเพื่อกำหนดทางลัดสำหรับหน้าจอล็อค</string>
+ <string name="lockscreen_default_target">ค่าเริ่มต้น</string>
+ <string name="select_application">เลือกแอปพลิเคชัน</string>
+ <string name="lockscreen_choose_action_title">เลือกการกระทำ</string>
+ <string name="lockscreen_none_target">ไม่มี</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">เลือกใช้การกระทำ</string>
+ <string name="navbar_home_button">ปุ่มหลัก</string>
+ <string name="navbar_recent_button">ปุ่มแอปล่าสุด</string>
+ <string name="navbar_search_button">ปุ่มค้นหา</string>
+ <string name="navbar_back_button">ปุ่มกลับ</string>
+ <string name="navbar_empty_button">ปุ่มว่าง</string>
+ <string name="navbar_menu_conditional_button">ปุ่มเมนู (ซ่อนอัตโนมัติ)</string>
+ <string name="navbar_menu_always_button">ปุ่มเมนู (แสดงตลอด)</string>
+ <string name="navbar_menu_big_button">ปุ่มเมนู</string>
+ <string name="accessibility_dpad_left">เคอร์เซอร์ซ้าย</string>
+ <string name="accessibility_dpad_right">เคอร์เซอร์ขวา</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ล้างข้อมูลแอป</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">บังคับปิด</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">ยกเลิกการติดตั้ง</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">ความสว่าง</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">โปรไฟล์ปิดอยู่</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">โปรไฟล์: <xliff:g id="profile" example="Default">%s</xliff:g></string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">ปิดโปรไฟล์</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">โปรไฟล์เปลี่ยนเป็น <xliff:g id="profile" example="Default">%s</xliff:g></string>
+ <string name="quick_settings_compass_init">กำลังเตรียมการ\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">การตั้งค่าแสง</string>
+ <string name="led_notification_text">LED ถูกเปิดใช้งานโดยการตั้งค่า</string>
+ <string name="qs_tile_edit_header_instruction">แตะไทต์ค้างไว้เพื่อย้ายตำแหน่ง</string>
+ <string name="quick_settings_edit_label">แก้ไขไทต์</string>
+ <string name="quick_settings_cannot_delete_edit_tile">ไม่สามารถลบไทต์แก้ไขได้</string>
+ <string name="qs_tiles_reset_confirmation">คืนค่าการจัดวางไทต์เป็นค่าเริ่มต้น</string>
+ <string name="quick_settings_tile_reset_to_default">คืนค่าเป็นการจัดวางเริ่มต้น</string>
+ <string name="quick_settings_title_header">หัวข้อ</string>
+ <string name="quick_settings_title_tiles">ไทต์</string>
+ <string name="quick_settings_title_show_weather">แสดงสภาพอากาศ</string>
+ <string name="quick_settings_title_show_brightness_slider">แสดงแถบเลื่อนปรับความสว่าง</string>
+ <string name="quick_settings_title_enlarge_first_row">ขยายแถวแรก</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">จะแสดงหน้านี้จนกว่าคุณจะเลิกปักหมุด กดปุ่มกลับค้างเพื่อเลิกปักหมุด</string>
+ <string name="quick_settings_custom_tile_detail_title">ไทล์กำหนดเอง</string>
+ <string name="quick_settings_remove">ลบไทล์ออก</string>
+ <string name="quick_settings_network_adb_label">ADB บนเครือข่าย</string>
+ <string name="quick_settings_compass_label">เข็มทิศ</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">โปรไฟล์ระบบ</string>
+ <string name="quick_settings_profiles_off">โปรไฟล์ถูกปิดอยู่</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">ประหยัดแบตเตอรี่</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">ประหยัดแบตเตอรี่ (ขณะชาร์จ)</string>
+ <string name="quick_settings_caffeine_label">คาเฟอีน</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">ปิดการซิงค์</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">การซิงค์เปิดอยู่</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">การซิงค์ปิดอยู่</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">การซิงค์เปิดอยู่</string>
+ <string name="quick_settings_sync_label">ซิงค์</string>
+ <string name="quick_settings_volume_panel_label">แผงควบคุมระดับเสียง</string>
+ <string name="quick_settings_usb_tether_label">ปล่อยสัญญาณผ่าน USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">เวลาที่หน้าจอดับ</string>
+ <string name="quick_settings_lockscreen_label">หน้าจอล็อค</string>
+ <string name="quick_settings_ambient_display_label">หน้าจอแวดล้อม</string>
+ <string name="quick_settings_lockscreen_label_enforced">บังคับล็อคหน้าจอ</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">ปิดการใช้งานโปรไฟล์</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">หมดเวลาหน้าจอ: <xliff:g id="timeout" example="30 seconds">%s</xliff:g></string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">หมดเวลาหน้าจอเปลี่ยนเป็น <xliff:g id="timeout" example="30 seconds">%s</xliff:g></string>
+ <string name="qs_tile_performance">รูปแบบแบตเตอรี่</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">รูปแบบแบตเตอรี่: ประหยัดพลังงาน</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">รูปแบบแบตเตอรี่: สมดุล</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">รูปแบบแบตเตอรี่: ประสิทธิภาพ</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">รูปแบบแบตเตอรี่: รูปแบบใช้พลังงานต่ำ</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">รูปแบบแบตเตอรี่: รูปแบบรวดเร็ว</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">รูปแบบแบตเตอรี่เปลี่ยนเป็นรูปแบบประหยัดพลังงาน</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">รูปแบบแบตเตอรี่เปลี่ยนเป็นสมดุล</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">รูปแบบแบตเตอรี่เปลี่ยนเป็นรูปแบบประสิทธิภาพ</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">รูปแบบแบตเตอรี่เปลี่ยนเป็นรูปแบบใช้พลังงานต่ำ</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">รูปแบบแบตเตอรี่เปลี่ยนเป็นรูปแบบรวดเร็ว</string>
+ <string name="quick_settings_performance_profile_detail_title">รูปแบบแบตเตอรี่</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">หน้าจอล็อคปิดอยู่</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">หน้าจอล็อคเปิดอยู่</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">หน้าจอล็อคถูกปิด</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">หน้าจอล็อคถูกเปิด</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">ปิดหน้าจอแวดล้อม</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">เปิดหน้าจอแวดล้อม</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">หน้าจอแวดล้อมปิดอยู่</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">หน้าจอแวดล้อมเปิดอยู่</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up ปิดอยู่</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up เปิดอยู่</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up ปิดอยู่</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up เปิดอยู่</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">คาเฟอีนปิดอยู่</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">คาเฟอีนเปิดอยู่</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">ตัวประหยัดแบตเตอรี่ปิดอยู่</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">ตัวประหยัดแบตเตอรี่เปิดอยู่</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">ตัวประหยัดแบตเตอรีถูกปิด</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">ตัวประหยัดแบตเตอรีถูกเปิด</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ไทล์แบบไดนามิก</string>
+ <string name="dynamic_qs_tile_next_alarm_label">การปลุกครั้งต่อไป</string>
+ <string name="dynamic_qs_tile_ime_selector_label">ตัวเลือก IME</string>
+ <string name="dynamic_qs_tile_su_label">สิทธิผู้ดูแลระบบ</string>
+ <string name="quick_settings_title_advanced_location">ตำแหน่งแบบสามสถานะ</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">การระบุตำแหน่ง: รูปแบบประหยัดแบตเตอรี่</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">รายงานตำแหน่งที่ตั้ง: เซนเซอร์เท่านั้น</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">รูปแบบการระบุตำแหน่ง: ความแม่นยำสูง</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">รูปแบบตำแหน่งที่ตั้ง</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">ประหยัดแบตเตอรี่</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">อุปกรณ์เท่านั้น</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">ความแม่นยำสูง</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">ตำแหน่งการระบุเปลี่ยนเป็นรูปแบบประหยัดแบตเตอรี่</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">การระบุตำแหน่งเปลี่ยนเป็นรูปแบบเฉพาะเซนเซอร์</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">การระบุตำแหน่งเปลี่ยนรูปแบบเป็นความแม่นยำสูง</string>
+ <string name="quick_settings_tiles_category_system">ไทล์ระบบ</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">เพิ่มไทล์</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">ไม่สามารถเชื่อมต่อเครือข่ายมือถือขณะใช้รูปแบบบนเครื่องบิน กรุณาปิดรูปแบบบนเครื่องบินและลองอีกครั้ง</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">ไฟฉายเปิดอยู่</string>
+ <string name="quick_settings_tile_flashlight_not_summary">แตะเพื่อปิด</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d ลูกข่าย</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">ไม่มี SIM ข้อมูล</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">แท่นชาร์จแบตเตอรี่ <xliff:g id="number">%d</xliff:g> เปอร์เซ็นต์</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">แสดงคิวเล่น</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-tr/cm_arrays.xml b/packages/SystemUI/res/values-tr/cm_arrays.xml
new file mode 100644
index 0000000..8658c49
--- /dev/null
+++ b/packages/SystemUI/res/values-tr/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>K</item>
+ <!-- North -->
+ <item>KD</item>
+ <!-- North east -->
+ <item>D</item>
+ <!-- East -->
+ <item>GD</item>
+ <!-- South east -->
+ <item>G</item>
+ <!-- South -->
+ <item>GB</item>
+ <!-- South west -->
+ <item>B</item>
+ <!-- West -->
+ <item>KB</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-tr/cm_strings.xml b/packages/SystemUI/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..a126402
--- /dev/null
+++ b/packages/SystemUI/res/values-tr/cm_strings.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s için sağa kaydırın</string>
+ <string name="right_shortcut_hint">%1$s için sola kaydırın</string>
+ <string name="lockscreen_message">Kilit ekranı kısayollarını ayarlamak için sağ ya da soldaki simgeye dokunun.</string>
+ <string name="lockscreen_default_target">Varsayılan</string>
+ <string name="select_application">Uygulama seçin</string>
+ <string name="lockscreen_choose_action_title">Eylem seçin</string>
+ <string name="lockscreen_none_target">Yok</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Atamak için işlev seçin</string>
+ <string name="navbar_home_button">Ana ekran tuşu</string>
+ <string name="navbar_recent_button">Son uyg. tuşu</string>
+ <string name="navbar_search_button">Arama tuşu</string>
+ <string name="navbar_back_button">Geri tuşu</string>
+ <string name="navbar_empty_button">Boş tuş</string>
+ <string name="navbar_menu_conditional_button">Menü (otoGizle) tuşu</string>
+ <string name="navbar_menu_always_button">Menü (hepGöster) tuşu</string>
+ <string name="navbar_menu_big_button">Menü tuşu</string>
+ <string name="accessibility_dpad_left">Sol imleç</string>
+ <string name="accessibility_dpad_right">Sağ imleç</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Uygulama verisini sil</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Durmaya zorla</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Kaldır</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Işık parlaklığı</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiller kapalı.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profil: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiller kapatıldı.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed"><xliff:g id="profile" example="Default">%s</xliff:g> profiline geçildi.</string>
+ <string name="quick_settings_compass_init">Başlatılıyor\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Işık ayarları</string>
+ <string name="led_notification_text">LED ışık ayarlar tarafından etkinleştirilmiş</string>
+ <string name="qs_tile_edit_header_instruction">Kareleri yeniden düzenlemek için basılı tutun</string>
+ <string name="quick_settings_edit_label">Kareleri düzenle</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Düzenle karesi silinemiyor</string>
+ <string name="qs_tiles_reset_confirmation">Hızlı ayarlar kareleri ilk durumuna sıfırlansın mı?</string>
+ <string name="quick_settings_tile_reset_to_default">Varsayılan düzene sıfırla</string>
+ <string name="quick_settings_title_header">Başlık</string>
+ <string name="quick_settings_title_tiles">Kareler</string>
+ <string name="quick_settings_title_show_weather">Hava durumunu göster</string>
+ <string name="quick_settings_title_show_brightness_slider">Parlaklık kaydırıcısını göster</string>
+ <string name="quick_settings_title_enlarge_first_row">İlk satırı büyüt</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Ekrandan kaldırana kadar görünümde tutar. Kaldırmak için Geri tuşuna dokunun ve tutun.</string>
+ <string name="quick_settings_custom_tile_detail_title">Özel kare</string>
+ <string name="quick_settings_remove">Kareyi kaldır</string>
+ <string name="quick_settings_network_adb_label">Ağ üzerinden ADB</string>
+ <string name="quick_settings_compass_label">Pusula</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Sistem profilleri</string>
+ <string name="quick_settings_profiles_off">Profiller devre dışı</string>
+ <string name="quick_settings_heads_up_label">Bildirim pencereleri</string>
+ <string name="quick_settings_battery_saver_label">Pil tasarrufu</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Batarya kurtarıcı (şarj ediliyor)</string>
+ <string name="quick_settings_caffeine_label">Kafein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Eşitleme kapalı.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Eşitleme açık.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Eşitleme kapatıldı.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Eşitleme açıldı.</string>
+ <string name="quick_settings_sync_label">Eşitleme</string>
+ <string name="quick_settings_volume_panel_label">Ses paneli</string>
+ <string name="quick_settings_usb_tether_label">USB İnternet Paylaşımı</string>
+ <string name="quick_settings_screen_timeout_detail_title">Ekran zaman aşımı</string>
+ <string name="quick_settings_lockscreen_label">Kilit ekranı</string>
+ <string name="quick_settings_ambient_display_label">Bildirim ekranı</string>
+ <string name="quick_settings_lockscreen_label_enforced">Kilit ekranı zorunlu</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Profil tarafından devre dışı</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Ekran zaman aşımı : <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Ekran zaman aşımı <xliff:g id="timeout" example="30 seconds">%s</xliff:g> olarak ayarlandı.</string>
+ <string name="qs_tile_performance">Pil modu</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Pil modu: güç tasarruf modu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Pil modu: dengeli mod.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Pil modu: performans modu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Pil modu: verimlilik modu.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Pil modu: hızlı mod.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Pil modu güç tasarruf moduna geçti.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Pil modu dengeli moda geçti.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Pil modu performans moduna geçti.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Pil modu verimlilik moduna geçti.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Pil modu hızlı moda geçti.</string>
+ <string name="quick_settings_performance_profile_detail_title">Pil modu</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Kilit ekranı kapalı.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Kilit ekranı açık.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Kilit ekranı kapatıldı.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Kilit ekranı açıldı.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Bildirim ekranı kapalı.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Bildirim ekranı açık.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Bildirim ekranı kapatıldı.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Bildirim ekranı açıldı.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Bildirim pencereleri kapalı.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Bildirim pencereleri açık.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Bildirim pencereleri kapatıldı.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Bildirim pencereleri açıldı.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Kafein kapalı.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Kafein açık.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Pil tasarrufu kapalı.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Pil tasarrufu açık.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Pil tasarrufu kapatıldı.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Pil tasarrufu açıldı.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dinamik kare</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Sonraki alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME seçici</string>
+ <string name="dynamic_qs_tile_su_label">Root erişimi</string>
+ <string name="quick_settings_title_advanced_location">3-durumlu konum</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Konum bildirimi: pil tasarruf modu.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Konum bildirimi: sadece sensörler modu.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Konum bildirimi: yüksek hassasiyet modu.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Konum modu</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Pil tasarrufu</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Sadece cihaz</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Yüksek doğruluk</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Konum bildirimi pil tasarruf moduna geçti.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Konum bildirimi sadece sensörler moduna geçti.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Konum bildirimi yüksek hassasiyet moduna geçti.</string>
+ <string name="quick_settings_tiles_category_system">Sistem başlıkları</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Başlık ekle</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Uçak modu etkinken hücresel ağlarla bağlantı kurulamıyor. Uçak modunu devre dışı bırakın ve tekrar deneyin.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Flaş ışığı açık</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Kapatmak için dokunun</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d istemci</item>
+ <item quantity="other">%1$d istemci</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">SIM verisi yok</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Ünite pili yüzde <xliff:g id="number">%d</xliff:g>.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Oynatma kuyruğunu göster</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ug/cm_arrays.xml b/packages/SystemUI/res/values-ug/cm_arrays.xml
new file mode 100644
index 0000000..0d61eb4
--- /dev/null
+++ b/packages/SystemUI/res/values-ug/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>شىمال</item>
+ <!-- North -->
+ <item>شەرقىي شىمال</item>
+ <!-- North east -->
+ <item>شەرق</item>
+ <!-- East -->
+ <item>شەرقىي جەنۇپ</item>
+ <!-- South east -->
+ <item>جەنۇپ</item>
+ <!-- South -->
+ <item>غەربىي جەنۇپ</item>
+ <!-- South west -->
+ <item>غەرب</item>
+ <!-- West -->
+ <item>غەربىي شىمال</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ug/cm_strings.xml b/packages/SystemUI/res/values-ug/cm_strings.xml
new file mode 100644
index 0000000..bb0eb55
--- /dev/null
+++ b/packages/SystemUI/res/values-ug/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">%1$s ئۈچۈن ئوڭغا سۈرۈڭ</string>
+ <string name="right_shortcut_hint">%1$s ئۈچۈن سولغا سۈرۈڭ</string>
+ <string name="lockscreen_message">ئوڭ ياكى سول تەرەپتىكى سىنبەلگىنى چېكىپ قۇلۇپ ئېكران قىسقا يولىنى قايتا تەقسىملەڭ.</string>
+ <string name="lockscreen_default_target">كۆڭۈلدىكى</string>
+ <string name="select_application">ئەپ تاللاڭ</string>
+ <string name="lockscreen_choose_action_title">مەشغۇلات تاللاڭ</string>
+ <string name="lockscreen_none_target">يوق</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">تەقسىملەيدىغان مەشغۇلاتنى تاللاڭ</string>
+ <string name="navbar_home_button">باش بەت توپچا</string>
+ <string name="navbar_recent_button">يېقىنقى توپچىلار</string>
+ <string name="navbar_search_button">ئىزدەش توپچىسى</string>
+ <string name="navbar_back_button">قايت توپچا</string>
+ <string name="navbar_empty_button">بوش توپچا</string>
+ <string name="navbar_menu_conditional_button">تىزىملىك (ئۆزلۈكىدىن يوشۇر) توپچا</string>
+ <string name="navbar_menu_always_button">‫تىزىملىك (ھەمىشە كۆرسەت) توپچا‪</string>
+ <string name="navbar_menu_big_button">تىزىملىك توپچا</string>
+ <string name="accessibility_dpad_left">نۇربەلگە سولغا</string>
+ <string name="accessibility_dpad_right">نۇر بەلگە ئوڭغا</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">ئەپ سانلىق مەلۇماتىنى تازىلا</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">مەجبۇرى توختات</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">ئۆچۈر</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">چىراق يورۇقلىقى</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">مۇھىت ھالىتى تاقاق.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">مۇھىت ھالىتى: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">مۇھىت ھالىتى تاقالدى.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">مۇھىت ھالىتى <xliff:g id="profile" example="Default">%s</xliff:g> گە ئۆزگەرتىلدى.</string>
+ <string name="quick_settings_compass_init">دەسلەپلەشتۈرۈۋاتىدۇ\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">يورۇقلۇق تەكشىكى</string>
+ <string name="led_notification_text">تەڭشەكتىن LED نى قوزغىتىش</string>
+ <string name="qs_tile_edit_header_instruction">خىشنى بېسىپ تۇرۇپ قايتا ئورۇنلاشتۇرۇڭ</string>
+ <string name="quick_settings_edit_label">خىشنى تەھرىرلەش</string>
+ <string name="quick_settings_cannot_delete_edit_tile">خىش تەھرىرلەشنى ئۆچۈرەلمەيدۇ</string>
+ <string name="qs_tiles_reset_confirmation">خىشنىڭ تىز تەڭشەكلىرىنى كۆڭۈلدىكى سەپلەنمىگە قايتا بېكىتەمسىز؟</string>
+ <string name="quick_settings_tile_reset_to_default">كۆڭۈلدىكى ئورۇنلاشتۇرۇشقا قايتۇرۇڭ</string>
+ <string name="quick_settings_title_header">باش</string>
+ <string name="quick_settings_title_tiles">خىش</string>
+ <string name="quick_settings_title_show_weather">ھاۋارايىنى كۆرستىڭ</string>
+ <string name="quick_settings_title_show_brightness_slider">يورۇقلۇق سۈرگۈچنى كۆرسىتىدۇ</string>
+ <string name="quick_settings_title_enlarge_first_row">بىرىنچى قۇرنى چوڭايتىڭ</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">بۇ ئېكراننى سىز بىكار قىلغانغا قەدەر مۇقىملاشتۇرىدۇ. قايتىش كونۇپكىسىنى بېسىپ تۇرۇش ئارقىلىق مۇقىملاشتۇرۇشنى بىكار قىلىڭ.</string>
+ <string name="quick_settings_custom_tile_detail_title">خىش خاسلاشتۇرۇش</string>
+ <string name="quick_settings_remove">ماۋزۇ چىقىرىۋېتىش</string>
+ <string name="quick_settings_network_adb_label">ADB تور سازلاش</string>
+ <string name="quick_settings_compass_label">كومپاس</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">سىستېما سەپلىمە ھۆججەتلىرى</string>
+ <string name="quick_settings_profiles_off">سەپلىمە ھۆججەت چەكلەندى</string>
+ <string name="quick_settings_heads_up_label">لەيلىمە ئۇقتۇرۇش</string>
+ <string name="quick_settings_battery_saver_label">توكدان ياردەمچىسى</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">توك تىجىگۈچى (توك قاچىلاۋاتىدۇ)</string>
+ <string name="quick_settings_caffeine_label">قەھۋەخانە ھالىتى</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">قەدەمداش تاقاق.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">قەدەمداش ئوچۇق.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">قەدەمداش قىلىش تاقاق.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">قەدەمداش قىلىش ئوچۇق.</string>
+ <string name="quick_settings_sync_label">قەدەمداش</string>
+ <string name="quick_settings_volume_panel_label">ئاۋاز تاختىسى</string>
+ <string name="quick_settings_usb_tether_label">USB ھەمبەھىر</string>
+ <string name="quick_settings_screen_timeout_detail_title">ئېكران مۆھلىتى</string>
+ <string name="quick_settings_lockscreen_label">قۇلۇپ ئېكرانى</string>
+ <string name="quick_settings_ambient_display_label">مۇھىتنى كۆرسىتىدۇ</string>
+ <string name="quick_settings_lockscreen_label_enforced">ئېكراننى مەجبۇرىي قۇلۇپلا</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">ھالەت تەڭشىكىدە تاقالدى</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">ئېكران ۋاقتى ئېشىپ كەتتى: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">ئېكران ۋاقىت ئېشىمى <xliff:g id="timeout" example="30 seconds">%s</xliff:g> گە ئۆزگەرتىلدى.</string>
+ <string name="qs_tile_performance">توكدان ھالىتى</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">باتارىيە ھالىتى: توك تىجەش ھالىتى.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">باتارىيە ھالىتى: تەڭپۇڭ ھالەت.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">باتارىيە ھالىتى: ئىقتىدار ھالىتى.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">باتارىيە ھالىتى: ئۆنۈم ھالىتى.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">باتارىيە ھالىتى: تىز سۈرەت ھالىتى.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">باتارىيە ھالىتى توك تىجەش ھالىتىگە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">باتارىيە ھالىتى تەڭپۇڭ ھالەتكە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">باتارىيە ھالىتى ئىقتىدار ھالىتىگە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">باتارىيە ھالىتى ئۆنۈم ھالىتىگە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">باتارىيە ھالىتى تىز سۈرەت ھالىتىگە ئۆزگەرتىلدى.</string>
+ <string name="quick_settings_performance_profile_detail_title">توكدان ھالىتى</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">ئېكران قۇلۇپى تاقاق.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">ئېكران قۇلۇپى ئوچۇق.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">ئېكران قۇلۇپى تاقالدى.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">ئېكران قۇلۇپى ئېچىلدى.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">مۇھىت كۆرسىتىش تاقاق.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">مۇھىت كۆرسىتىش ئوچۇق.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">مۇھىت كۆرسىتىش تاقالدى.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">مۇھىت كۆرسىتىش ئېچىلدى.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">لەيلىمە ئۇقتۇرۇش تاقاق.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">لەيلىمە ئۇقتۇرۇش ئوچۇق.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">لەيلىمە ئۇقتۇرۇش تاقالدى.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">لەيلىمە ئۇقتۇرۇش ئېچىلدى.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">قەھۋەخانە ھالىتىنى تاقاش.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">قەھۋەخانە ھالىتىنى ئېچىش.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">توك تىجەش ھالىتى تاقاق.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">توك تىجەش ھالىتى ئوچۇق.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">توك تىجەش ھالىتى تاقالدى.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">توك تىجەش ھالىتى ئېچىلدى.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">ھەرىكەتچان توپچا</string>
+ <string name="dynamic_qs_tile_next_alarm_label">كىيىنكى قوڭغۇراق</string>
+ <string name="dynamic_qs_tile_ime_selector_label">كىرگۈزگۈچ تاللىغۇچ</string>
+ <string name="dynamic_qs_tile_su_label">Root ھوقۇقى</string>
+ <string name="quick_settings_title_advanced_location">ئۈچ ھالەت ئورۇن بەلگىلەش</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">ئورۇن دوكلاتى: توك تېجەش ھالىتى.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">ئورۇن دوكلاتى: سەزگۈچ ھالىتىلا.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">ئورۇن دوكلاتى: يۇقىرى ئېنىقلىق ھالىتى.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">ئورۇن ھالىتى</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">توك سەرپىياتى تۆۋەن</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">ئۈسكۈنىلا</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">دەللىكى يۇقىرى</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">جۇغراپىيەلىك ئورۇن دوكىلاتى توك تىجەش ھالىتىگە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">جۇغراپىيەلىك ئورۇن دوكىلاتى سېنزور ھالىتىگە ئۆزگەرتىلدى.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">جۇغراپىيەلىك ئورۇن دوكىلاتى توغرىلىقى يوقىرى ھالەتكە ئۆزگەرتىلدى.</string>
+ <string name="quick_settings_tiles_category_system">سىستېما خىشى</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">خىش قوشۇش</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">ئايروپىلان ھالىتى ئېچىلسا كۆچمە تورنى ئىشلەتكىلى بولمايدۇ. ئايروپىلان ھالىتىنى تاقاڭ ھەم قايتا سىناڭ.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">قولچىراق ئوچۇق</string>
+ <string name="quick_settings_tile_flashlight_not_summary">يىنىك بېسىپ ئۆچۈرۈڭ</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d مۇئامىلىدار</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">تورغا ئۇلىنىدىغان SIM كارتا يوق</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">لەڭگەر توكدان <xliff:g id="number">%d</xliff:g>%%.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">قويۇش تىزىملىكىنى كۆرسىتىش</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-ug/strings.xml b/packages/SystemUI/res/values-ug/strings.xml
new file mode 100644
index 0000000..95d4f4d
--- /dev/null
+++ b/packages/SystemUI/res/values-ug/strings.xml
@@ -0,0 +1,604 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+/**
+ * Copyright (c) 2009, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Name of the status bar as seen in the applications info settings page. [CHAR LIMIT=12] -->
+ <string name="app_label">سىستېما ئارايۈزى</string>
+ <!-- The text for the button in the notification window-shade that clears
+ all of the currently visible notifications. [CHAR LIMIT=10]-->
+ <string name="status_bar_clear_all_button">تازىلا</string>
+ <!-- Title shown in recents popup for removing an application from the list -->
+ <string name="status_bar_recent_remove_item_title">تىزىمدىن چىقىرىۋەت</string>
+ <!-- Title shown in recents popup for inspecting an application's properties -->
+ <string name="status_bar_recent_inspect_item_title">ئەپ ئۇچۇرى</string>
+ <!-- Message shown in the middle of the screen after clicking on the recent apps button
+ when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]-->
+ <!-- Content description for the button to dismiss Recent Apps (only present on large
+ devices) -->
+ <string name="status_bar_accessibility_dismiss_recents">يېقىنقى ئەپلەرنى بىكار قىل</string>
+ <!-- Message that is read when you enter recent apps in TalkBack -->
+ <!-- The label in the bar at the top of the status bar when there are no notifications
+ showing. [CHAR LIMIT=40]-->
+ <string name="status_bar_no_notifications_title">ئۇقتۇرۇش يوق</string>
+ <!-- The label for the group of notifications for ongoing events in the opened version of
+ the status bar. An ongoing call is the prime example of this. The MP3 music player
+ might be another example. [CHAR LIMIT=40] -->
+ <string name="status_bar_ongoing_events_title">ئېلىپ بېرىلىۋاتىدۇ</string>
+ <!-- The label for the group of notifications for recent events in the opened version of
+ the status bar. Recently received text messsages (SMS), emails, calendar alerts, etc.
+ [CHAR LIMIT=40] -->
+ <string name="status_bar_latest_events_title">ئۇقتۇرۇشلار</string>
+ <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]-->
+ <!-- A message that appears when the battery level is getting low in a dialog. This is
+ appened to the subtitle of the low battery alert. "percentage" is the percentage of battery
+ remaining [CHAR LIMIT=none]-->
+ <!-- Same as battery_low_percent_format, with a notice about battery saver if on. [CHAR LIMIT=none]-->
+ <!-- A message that appears when a USB charger is plugged in and the device does not
+ support charging on it. That is, a charger that fits into the USB port and goes into
+ a wall socket, not into a computer. (This happens because some devices require more
+ current than the USB spec allows. [CHAR LIMIT=NONE] -->
+ <string name="invalid_charger">USB دىن توكلاشنى قوللىمايدۇ.\nتوكلىغۇچتىن توڭلاڭ.</string>
+ <!-- First line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- Second line of invalid_charger, used in the notification form. [CHAR LIMIT=NONE]-->
+ <!-- When the battery is low, this is the label of the button to go to the
+ power usage activity to find out what drained the battery. [CHAR LIMIT=30] -->
+ <!-- Battery saver confirmation dialog title [CHAR LIMIT=NONE]-->
+ <!-- Battery saver confirmation dialog ok text [CHAR LIMIT=40]-->
+ <!-- Battery saver notification action [CHAR LIMIT=NONE]-->
+ <!-- Name of the button that links to the Settings app. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_settings_button">تەڭشەكلەر</string>
+ <!-- Name of the button that links to the Wifi settings screen. [CHAR LIMIT=NONE] -->
+ <string name="status_bar_settings_wifi_button">Wi-Fi</string>
+ <!-- Label in system panel saying the device will use the orientation sensor to rotate [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_auto_rotation">ئېكراننى ئۆزلۈكىدىن ئايلاندۇر</string>
+ <!-- Abbreviation / label for mute brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_mute_label">ئۈنسىز</string>
+ <!-- Abbreviation / label for automatic brightness mode button. Should be all caps. [CHAR LIMIT=6] -->
+ <string name="status_bar_settings_auto_brightness_label">ئاپتوماتىك</string>
+ <!-- Label in system panel saying the device will show notifications [CHAR LIMIT=30] -->
+ <string name="status_bar_settings_notifications">ئۇقتۇرۇشلار</string>
+ <!-- Separator for PLMN and SPN in network name. -->
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <string name="bluetooth_tethered">كۆكچىش چەكلىمىسى</string>
+ <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] -->
+ <string name="status_bar_input_method_settings_configure_input_methods">كىرگۈزگۈچ تەڭشەك</string>
+ <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] -->
+ <string name="status_bar_use_physical_keyboard">فىزىكىلىق ھەرپتاختا</string>
+ <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_permission_prompt"><xliff:g id="APPLICATION">%1$s</xliff:g> ئەپنىڭ USB ئۈسكۈنىنى زىيارەت قىلىشىغا يول قويامدۇ؟</string>
+ <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_permission_prompt"><xliff:g id="APPLICATION">%1$s</xliff:g> ئەپنىڭ USB قوشۇمچىسىنى زىيارەت قىلىشىغا يول قويامدۇ؟</string>
+ <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_device_confirm_prompt">بۇ USB ئۈسكۈنە باغلانغاندا <xliff:g id="ACTIVITY">%1$s</xliff:g> نى ئاچامدۇ؟</string>
+ <!-- Prompt for the USB accessory confirm dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_confirm_prompt">بۇ USB قوشۇمچىسى باغلانغاندا <xliff:g id="ACTIVITY">%1$s</xliff:g> نى ئاچامدۇ؟</string>
+ <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] -->
+ <string name="usb_accessory_uri_prompt">بۇ USB قوشۇمچىسىغا ماس كېلىدىغان ئەپ ئورنىتىلمىغان. بۇ قوشۇمچە ھەققىدىكى تېخىمۇ كۆپ ئۇچۇرنى <xliff:g id="URL">%1$s</xliff:g> دىن زىيارەت قىلىڭ.</string>
+ <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] -->
+ <string name="title_usb_accessory">USB قوشۇمچە</string>
+ <!-- View button label for USB dialogs. [CHAR LIMIT=15] -->
+ <string name="label_view">كۆرۈنۈش</string>
+ <!-- Checkbox label for USB device dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_device">كۆڭۈلدىكى ئەھۋالدا بۇ USB ئۈسكۈنىنى ئىشلەت</string>
+ <!-- Checkbox label for USB accessory dialogs. [CHAR LIMIT=50] -->
+ <string name="always_use_accessory">كۆڭۈلدىكى ئەھۋالدا بۇ USB قوشۇمچىنى ئىشلەت</string>
+ <!-- Title of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_title">USB سازلاشقا يول قويامدۇ؟</string>
+ <!-- Message of confirmation dialog for USB debugging -->
+ <string name="usb_debugging_message">بۇ كومپيۇتېرنىڭ RSA ئاچقۇچىنىڭ بارماق ئىزى: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g></string>
+ <!-- Option to always allow USB debugging from the attached computer -->
+ <string name="usb_debugging_always">بۇ كومپيۇتېرغا ھەمىشە يول قوي</string>
+ <!-- Title of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Message of notification shown when trying to enable USB debugging but a secondary user is the current foreground user. -->
+ <!-- Checkbox label for application compatibility mode ON (zooming app to look like it's running
+ on a phone). [CHAR LIMIT=25] -->
+ <string name="compat_mode_on">پۈتۈن ئېكرانغا چوڭايت</string>
+ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
+ [CHAR LIMIT=25] -->
+ <string name="compat_mode_off">پۈتۈن ئېكرانغا ياي</string>
+ <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
+ <string name="screenshot_saving_ticker">ئېكران كەسمىسىنى ساقلاۋاتىدۇ…</string>
+ <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saving_title">ئېكران كەسمىسىنى ساقلاۋاتىدۇ…</string>
+ <!-- Notification text displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saving_text">ئېكران كەسمىسى ساقلاندى.</string>
+ <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
+ <string name="screenshot_saved_title">ئېكران كەسمىسىگە ئېرىشتى.</string>
+ <!-- Notification text displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=100] -->
+ <string name="screenshot_saved_text">چېكىلسە ئېكران كەسمىسىنى كۆرسىتىدۇ.</string>
+ <!-- Notification title displayed when we fail to take a screenshot. [CHAR LIMIT=50] -->
+ <string name="screenshot_failed_title">ئېكران كەسمىسىگە ئېرىشەلمەيدۇ.</string>
+ <!-- Notification text displayed when we fail to take a screenshot. [CHAR LIMIT=100] -->
+ <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
+ <string name="usb_preference_title">USB ھۆججەت يوللاش تاللانمىسى</string>
+ <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_mtp_button_title">ۋاستە چالغۇچ سۈپىتىدە ئېگەرلە (MTP)</string>
+ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="use_ptp_button_title">كامېرا سۈپىتىدە ئېگەرلە (PTP)</string>
+ <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
+ <string name="installer_cd_button_title">Mac ئۈچۈن Android ھۆججەت يوللايدىغان ئەپنى ئورنات</string>
+ <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_back">قايت</string>
+ <!-- Content description of the home button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_home">باش بەت</string>
+ <!-- Content description of the menu button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_menu">تىزىملىك</string>
+ <!-- Content description of the recents button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the search button for accessibility. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_search_light">ئىزدە</string>
+ <!-- Content description of the camera button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_camera_button">كامېرا</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Accessibility action of the unlock button when fingerpint is on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the voice assist button. This is not shown on-screen and is an accessibility label for the icon which launches the voice assist from the lock screen.[CHAR LIMIT=NONE] -->
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
+ <!-- Button name for "Cancel". [CHAR LIMIT=NONE] -->
+ <!-- Content description of the compatibility zoom button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_button">ماسلىشىشچان چوڭايت كىچىكلەت توپچىسى.</string>
+ <!-- Content description of picture of the compatibility zoom example for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_compatibility_zoom_example">ئېكراننى كىچىكتىن چوڭايتىدۇ.</string>
+ <!-- Content description of the bluetooth icon when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_connected">كۆكچىش باغلاندى.</string>
+ <!-- Content description of the bluetooth icon when connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_disconnected">كۆكچىش ئۈزۈلدى.</string>
+ <!-- Content description of the battery when no battery for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_battery">توكدان يوق.</string>
+ <!-- Content description of the battery when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_one_bar">توكدان بىر بالداق.</string>
+ <!-- Content description of the battery when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_two_bars">توكدان ئىككى بالداق.</string>
+ <!-- Content description of the battery when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_three_bars">توكدان ئۈچ بالداق.</string>
+ <!-- Content description of the battery when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_full">توكدان لىق.</string>
+ <!-- Content description of the phone signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_phone">تېلېفون يوق.</string>
+ <!-- Content description of the phone signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_one_bar">تېلېفون بىر بالداق.</string>
+ <!-- Content description of the phone signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_two_bars">تېلېفون ئىككى بالداق.</string>
+ <!-- Content description of the phone signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_three_bars">تېلېفون ئۈچ بالداق.</string>
+ <!-- Content description of the phone signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_phone_signal_full">تېلېفون سىگنالى لىق.</string>
+ <!-- Content description of the data signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_data">سانلىق مەلۇمات يوق.</string>
+ <!-- Content description of the data signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_one_bar">سانلىق مەلۇمات بىر بالداق.</string>
+ <!-- Content description of the data signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_two_bars">سانلىق مەلۇمات ئىككى بالداق.</string>
+ <!-- Content description of the data signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_three_bars">سانلىق مەلۇمات ئۈچ بالداق.</string>
+ <!-- Content description of the data signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_signal_full">سانلىق مەلۇمات سىگنالى لىق.</string>
+ <!-- Content description of the wifi label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth label showing what we are connected to. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the WiMAX signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_wimax">WiMAX يوق.</string>
+ <!-- Content description of the WiMAX signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_one_bar">WiMAX بىر بالداق.</string>
+ <!-- Content description of the WiMAX signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_two_bars">WiMAX ئىككى بالداق.</string>
+ <!-- Content description of the WiMAX signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_three_bars">WiMAX ئۈچ بالداق.</string>
+ <!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_wimax_signal_full">WiMAX سىگنالى لىق.</string>
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_signal">سىگنال يوق.</string>
+ <!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_not_connected">باغلانمىدى.</string>
+ <!-- Content description of an item with zero signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_zero_bars">نۆل بالداق.</string>
+ <!-- Content description of an item with one signal bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_one_bar">بىر بالداق.</string>
+ <!-- Content description of an item with two signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_two_bars">ئىككى بالداق.</string>
+ <!-- Content description of an item with three signal bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_three_bars">ئۈچ بالداق.</string>
+ <!-- Content description of an item with full signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_signal_full">سىگنال لىق.</string>
+ <!-- Content description of an item that is turned on for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_on">ئوچۇق.</string>
+ <!-- Content description of an item that is turned off for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_off">تاقاق.</string>
+ <!-- Content description of an item that is connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_connected">باغلاندى.</string>
+ <!-- Content description of an item that is connecting for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_gprs">GPRS</string>
+ <!-- Content description of the data connection type 1x for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_1x">1 X</string>
+ <!-- Content description of the data connection type HSPA and its variants for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspa">HSPA</string>
+ <!-- Content description of the data connection type 3G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3g">3G</string>
+ <!-- Content description of the data connection type 3.5G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_3.5g">3.5G</string>
+ <!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g">4G</string>
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_lte">LTE</string>
+ <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_cdma">CDMA</string>
+ <!-- Content description of the roaming data connection type for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_roaming">كەزمە</string>
+ <!-- Content description of the data connection type Edge for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_edge">Edge</string>
+ <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_no_sim">SIM كارتا يوق.</string>
+ <!-- Content description of the bluetooth tethering icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_bluetooth_tether">كۆكچىش ھەمبەھىر</string>
+ <!-- Content description of the airplane mode icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_airplane_mode">ئايروپىلان ھالىتى</string>
+ <!-- Content description of the no sim icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the carrier network changing icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_battery_level">توكدان <xliff:g id="NUMBER">%d</xliff:g> پىرسەنت.</string>
+ <!-- Content description of the button for showing a settings panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_settings_button">سىستېما تەڭشەكلىرى</string>
+ <!-- Content description of the button for showing a notifications panel in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notifications_button">ئۇقتۇرۇشلار.</string>
+ <!-- Content description of the button for removing a notification in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_remove_notification">ئۇقتۇرۇشنى تازىلا.</string>
+ <!-- Content description of the enabled GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_enabled">GPS قوزغىتىلدى.</string>
+ <!-- Content description of the acquiring GPS icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_gps_acquiring">GPS بايقاۋاتىدۇ.</string>
+ <!-- Content description of the TeleTypewriter(TTY) enabled icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_tty_enabled">TeleTypewriter قوزغىتىلدى.</string>
+ <!-- Content description of the ringer vibrate icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_vibrate">قوڭغۇراق تىترەت.</string>
+ <!-- Content description of the ringer silent icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ringer_silent">قوڭغۇراق ئۈنسىز.</string>
+ <!-- Content description of the cast icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description to tell the user that this button will remove an application from recents -->
+ <!-- Content description to tell the user an application has been removed from recents -->
+ <string name="accessibility_recents_item_dismissed"><xliff:g id="APP">%s</xliff:g> بوشىتىلدى.</string>
+ <!-- Content description to tell the user all applications has been removed from recents -->
+ <!-- Content description to tell the user an application has been launched from recents -->
+ <!-- Content description of individual recents task. -->
+ <!-- Content description to tell the user a notification has been removed from the notification shade -->
+ <string name="accessibility_notification_dismissed">ئۇقتۇرۇش رەت قىلىندى.</string>
+ <!-- Content description for the notification shade panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_notification_shade">ئۇقتۇرۇش سايەسى.</string>
+ <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_desc_quick_settings">تېز تەڭشەكلەر.</string>
+ <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the settings button in the status bar header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+ <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_user">ئىشلەتكۈچى <xliff:g id="USER">%s.</xliff:g></string>
+ <!-- Content description of the wifi tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the wifi is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the mobile data tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_mobile">كۆچمە <xliff:g id="SIGNAL">%1$s</xliff:g>، <xliff:g id="TYPE">%2$s</xliff:g>،<xliff:g id="NETWORK">%3$s</xliff:g>.</string>
+ <!-- Content description of the battery tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery">توكدان <xliff:g id="STATE">%s</xliff:g>.</string>
+ <!-- Content description of the airplane mode tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the airplane mode tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the airplane mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in priority (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in none (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when on in alarms only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the do not disturb tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when do not disturb changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connecting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the bluetooth tile in quick settings when connected (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the bluetooth is turned on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the alarm tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_alarm">قوڭغۇراق تەڭشەك <xliff:g id="TIME">%s</xliff:g>.</string>
+ <!-- Content description of quick settings detail panel close button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition plus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of zen mode time condition minus button (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the flashlight tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the flashlight state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the color inversion state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the hotspot state changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the display brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Title of dialog shown when 2G-3G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when 4G data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when mobile data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] -->
+ <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] -->
+ <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] -->
+ <!-- Text to display underneath the graphical signal strength meter when
+ no connection is available. [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_disconnected">ئىنتېرنېت باغلىنىشى يوق</string>
+ <!-- Text to display underneath the graphical signal strength meter when
+ it is displaying Wi-Fi status and Wi-Fi is connected to a network
+ whose SSID is not available.
+ [CHAR LIMIT=20] -->
+ <string name="status_bar_settings_signal_meter_wifi_nossid">Wi-Fi ئۇلاندى</string>
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_searching_text">GPS ئىزدەۋاتىدۇ</string>
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">GPS تە ئورۇن تەڭشەك</string>
+ <!-- Accessibility text describing the presence of active location requests by one or more apps -->
+ <string name="accessibility_location_active">ئورۇن ئۇچۇرى ئىلتىماسى ئاكتىپ</string>
+ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_clear_all">بارلىق ئۇقتۇرۇشلارنى تازىلا</string>
+ <!-- Content description of button in notification inspector for system settings relating to
+ notifications from this application [CHAR LIMIT=NONE] -->
+ <!-- Content description of button in notification inspetor for application-provided settings
+ for its own notifications [CHAR LIMIT=NONE] -->
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">ئېكران ئۆزلۈكىدىن ئايلىنىدۇ.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">ئېكران توغرىسىغا كۆز يۈگۈرتۈش ھالىتىگە قۇلۇپلاندى.</string>
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">ئېكران بويىغا كۆز يۈگۈرتۈش ھالىتىگە قۇلۇپلاندى.</string>
+ <!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Name of the K-release easter egg: a display case for all our tastiest desserts. [CHAR LIMIT=30] -->
+ <string name="dessert_case">تاتلىق تۈرۈم قۇتىسى</string>
+ <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
+ <string name="start_dreams">ئېكران قوغدىغۇچ</string>
+ <!-- Textual description of Ethernet connections -->
+ <string name="ethernet_label">دائىرىلىك تور</string>
+ <!-- QuickSettings: Do not disturb [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Priority only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Alarms only [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Do not disturb - Total silence [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Bluetooth [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_label">كۆكچىش</string>
+ <!-- QuickSettings: Bluetooth (Multiple) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_multiple_devices_label">كۆكچىش (<xliff:g id="NUMBER">%d</xliff:g> ئۈسكۈنە)</string>
+ <!-- QuickSettings: Bluetooth (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_bluetooth_off_label">كۆكچىش تاقاق</string>
+ <!-- QuickSettings: Bluetooth detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_label">يورۇقلۇق</string>
+ <!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Rotation Locked [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Portrait [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Locked to Landscape [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: IME [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_ime_label">كىرگۈزگۈچ</string>
+ <!-- QuickSettings: Location [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_label">ئورنى</string>
+ <!-- QuickSettings: Location (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_off_label">ئورۇن ئۇچۇرى تاقاق</string>
+ <!-- QuickSettings: Media device [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_media_device_label">ۋاستە ئۈسكۈنە</string>
+ <!-- QuickSettings: RSSI [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_label">RSSI</string>
+ <!-- QuickSettings: RSSI (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_rssi_emergency_only">جىددىي تېلېفونلا ئۇرغىلى بولىدۇ</string>
+ <!-- QuickSettings: Settings [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_settings_label">تەڭشەكلەر</string>
+ <!-- QuickSettings: Time [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_time_label">ۋاقىت</string>
+ <!-- QuickSettings: User [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_user_label">مەن</string>
+ <!-- QuickSettings: Title of the user detail panel [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label on the item for adding a new user [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Wifi (Not connected) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_not_connected">باغلانمىدى</string>
+ <!-- QuickSettings: Wifi (No network) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_no_network">تور يوق</string>
+ <!-- QuickSettings: Wifi (Off) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_wifi_off_label">Wi-Fi تاقاق</string>
+ <!-- QuickSettings: Wifi detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, status text when casting [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device name [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, default device description [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cast detail panel, text when there are no items [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Brightness dialog title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_title">يورۇقلۇق</string>
+ <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_brightness_dialog_auto_brightness_label">ئاپتوماتىك</string>
+ <!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connected device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Control panel: Label for connecting device. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Tethering. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Hotspot. [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Notifications [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Flashlight [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data usage title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, remaining data title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, over limit title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data used format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data limit format string [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Cellular detail panel, data warning format string [CHAR LIMIT=NONE] -->
+ <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Launch error string. [CHAR LIMIT=NONE] -->
+ <!-- Recents: Dismiss all button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] -->
+ <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] -->
+ <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, no known time [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Charging, showing time left until charged [CHAR LIMIT=40] -->
+ <!-- Expanded Status Bar Header: Not charging [CHAR LIMIT=40] -->
+ <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. -->
+ <string name="battery_meter_very_low_overlay_symbol">!</string>
+ <!-- Shows up when there is a user SSL CA Cert installed on the
+ device. Indicates to the user that SSL traffic can be intercepted.
+ If the text fits on one line (~14 chars), it should start with a
+ linebreak to position it correctly. [CHAR LIMIT=45] -->
+ <string name="ssl_ca_cert_warning">تور نازارەت قىلىنغان\nبولۇشى مۇمكىن</string>
+ <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
+ <!-- Zen mode: Priority only introduction message on first use -->
+ <!-- Zen mode: Priority only customization button label -->
+ <!-- Zen mode: Total silence introduction message on first use (voice capable devices) -->
+ <!-- Zen mode: Total silence introduction message on first use (non-voice capable devices) -->
+ <!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
+ <!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
+ <!-- Shows to explain the double tap interaction with notifications: After tapping a notification on Keyguard, this will explain users to tap again to launch a notification. [CHAR LIMIT=60] -->
+ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <!-- Accessibility content description for Interruption level: None. [CHAR LIMIT=NONE] -->
+ <!-- Interruption level: None. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
+ <!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
+ <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
+ <!-- Related to user switcher -->
+ <!-- Accessibility label for the button that opens the user switcher. -->
+ <!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <!-- Accessibility label for the button that opens the quick contact of the user. -->
+ <!-- Label for the adding a new user in the user switcher [CHAR LIMIT=35] -->
+ <!-- Name for a freshly added user [CHAR LIMIT=30] -->
+ <!-- Name for the guest user [CHAR LIMIT=35] -->
+ <!-- Label for adding a new guest in the user switcher [CHAR LIMIT=35] -->
+ <!-- Label for exiting and removing the guest session in the user switcher [CHAR LIMIT=35] -->
+ <!-- Title of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the confirmation dialog when exiting guest session [CHAR LIMIT=NONE] -->
+ <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
+ <!-- Title of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Message of the notification when resuming an existing guest session [CHAR LIMIT=NONE] -->
+ <!-- Notification when resuming an existing guest session: Action that starts a new session [CHAR LIMIT=35] -->
+ <!-- Notification when resuming an existing guest session: Action that continues with the current session [CHAR LIMIT=35] -->
+ <!-- Title of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Text of the notification shown to a new guest user [CHAR LIMIT=60] -->
+ <!-- Remove action in the notification shown to a new guest user [CHAR LIMIT=30] -->
+ <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
+ <!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
+ <!-- Battery saver notification title. [CHAR LIMIT=60]-->
+ <!-- Battery saver notification text. [CHAR LIMIT=60] -->
+ <!-- Battery saver notification action text. [CHAR LIMIT=60] -->
+ <!-- Text shown in place of notification contents when the notification is hidden on a secure lockscreen -->
+ <!-- Media projection permission dialog warning text. [CHAR LIMIT=NONE] -->
+ <!-- Media projection permission dialog permanent grant check box. [CHAR LIMIT=NONE] -->
+ <!-- The text to clear all notifications. [CHAR LIMIT=60] -->
+ <!-- Media projection permission dialog action text. [CHAR LIMIT=60] -->
+ <!-- Text which is shown in the notification shade when there are no notifications. [CHAR LIMIT=30] -->
+ <!-- Footer device owned text [CHAR LIMIT=50] -->
+ <!-- Footer profile owned text [CHAR LIMIT=50] -->
+ <!-- Footer vpn present text [CHAR LIMIT=50] -->
+ <!-- Monitoring dialog title for device owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for profile owned devices [CHAR LIMIT=35] -->
+ <!-- Monitoring dialog title for normal devices [CHAR LIMIT=35]-->
+ <!-- Monitoring dialog disable vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog disconnect vpn button [CHAR LIMIT=30] -->
+ <!-- Monitoring dialog device owner body text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with device owner text [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog VPN with profile owner text [CHAR LIMIT=400] -->
+ <!-- Name for a generic legacy VPN connection [CHAR LIMIT=20] -->
+ <!-- Monitoring dialog text for single app (no profile or device owner) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside personal profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (inside work profile) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for multiple apps (in personal and work profiles) [CHAR LIMIT=400] -->
+ <!-- Monitoring dialog text for single app (with device owner) [CHAR LIMIT=400] -->
+ <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
+ <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
+ <!-- Body of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=60] -->
+ <!-- Cancel action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
+ <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
+ <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
+ <!-- Button label for ending zen mode in the volume dialog -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <!-- Screen pinning dialog title. -->
+ <!-- Screen pinning dialog description. -->
+ <!-- Screen pinning dialog description when in accessibility mode. -->
+ <!-- Screen pinning positive response. -->
+ <!-- Screen pinning negative response. -->
+ <!-- Hide quick settings tile confirmation title -->
+ <!-- Hide quick settings tile confirmation message -->
+ <!-- Hide quick settings tile confirmation button -->
+ <!-- VolumeUI activation dialog: warning message -->
+ <!-- VolumeUI activation dialog: allow button label -->
+ <!-- VolumeUI activation dialog: deny button label -->
+ <!-- VolumeUI restoration notification: title -->
+ <!-- VolumeUI restoration notification: text -->
+ <!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
+ <!-- Name of special SystemUI debug settings -->
+ <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] -->
+ <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] -->
+ <!-- Name of quick settings -->
+ <!-- Name of status bar -->
+ <!-- Name of demo mode (mode with preset icons for screenshots) -->
+ <!-- Enable demo mode -->
+ <!-- Show demo mode icons -->
+ <!-- Name of the ethernet status bar icon. -->
+ <string name="status_bar_ethernet">دائىرىلىك تور</string>
+ <!-- Name of the alarm status bar icon. -->
+ <!-- Name of the work status bar icon. -->
+ <!-- Name of the airplane status bar icon. -->
+ <string name="status_bar_airplane">ئايروپىلان ھالىتى</string>
+ <!-- Description for adding a quick settings tile -->
+ <!-- Name of a quick settings tile controlled by broadcast -->
+ <!-- For preview release. DO NOT TRANSLATE -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
+ <!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
+ <!-- Alarm template for near alarms [CHAR LIMIT=25] -->
+ <!-- Alarm template for far alarms [CHAR LIMIT=25] -->
+ <!-- Accessibility label for Quick Settings detail screens [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for hotspot icon [CHAR LIMIT=NONE] -->
+ <!-- Accessibility label for managed profile icon (not shown on screen) [CHAR LIMIT=NONE] -->
+ <!-- Title of warning when entering System UI tuner for first time [CHAR LIMIT=NONE] -->
+ <!-- Warning for users entering the System UI tuner for the first time [CHAR LIMIT=NONE]-->
+ <!-- Warning for users entering the System UI tuner [CHAR LIMIT=NONE]-->
+ <!-- Generic "got it" acceptance of dialog or cling [CHAR LIMIT=NONE] -->
+ <!-- Toast describing tuner has been enabled [CHAR LIMIT=NONE] -->
+ <!-- Option to remove the tuner from settings [CHAR LIMIT=NONE] -->
+ <!-- Dialog asking if the tuner should really be removed from settings [CHAR LIMIT=NONE]-->
+ <!-- Dialog title asking if Bluetooth should be enabled [CHAR LIMIT=NONE] -->
+ <!-- Dialog message explaining why Bluetooth should be enabled when a packaged keyboard is
+ conncted to the device [CHAR LIMIT=NONE] -->
+ <!-- Bluetooth enablement ok text [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/SystemUI/res/values-uk/cm_arrays.xml b/packages/SystemUI/res/values-uk/cm_arrays.xml
new file mode 100644
index 0000000..6f9b23f
--- /dev/null
+++ b/packages/SystemUI/res/values-uk/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>Пн</item>
+ <!-- North -->
+ <item>ПнСх</item>
+ <!-- North east -->
+ <item>Сх</item>
+ <!-- East -->
+ <item>ПдСх</item>
+ <!-- South east -->
+ <item>Пд</item>
+ <!-- South -->
+ <item>ПдЗх</item>
+ <!-- South west -->
+ <item>Зх</item>
+ <!-- West -->
+ <item>ПнЗх</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-uk/cm_strings.xml b/packages/SystemUI/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..57b9cb5
--- /dev/null
+++ b/packages/SystemUI/res/values-uk/cm_strings.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Проведіть вправо для %1$s</string>
+ <string name="right_shortcut_hint">Проведіть вліво для %1$s</string>
+ <string name="lockscreen_message">Натисніть на іконку ліворуч або праворуч для зміни ярлика екрану блокування.</string>
+ <string name="lockscreen_default_target">За замовчуванням</string>
+ <string name="select_application">Вибрати програму</string>
+ <string name="lockscreen_choose_action_title">Виберіть дію</string>
+ <string name="lockscreen_none_target">НІчого</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Виберіть дію щоб призначити</string>
+ <string name="navbar_home_button">Кнопка Додому</string>
+ <string name="navbar_recent_button">Останні програми</string>
+ <string name="navbar_search_button">Кнопка Пошук</string>
+ <string name="navbar_back_button">Кнопка Назад</string>
+ <string name="navbar_empty_button">Пуста кнопка</string>
+ <string name="navbar_menu_conditional_button">Меню (якщо доступно)</string>
+ <string name="navbar_menu_always_button">Меню (завжди)</string>
+ <string name="navbar_menu_big_button">Кнопка Меню</string>
+ <string name="accessibility_dpad_left">Курсор ліворуч</string>
+ <string name="accessibility_dpad_right">Курсор праворуч</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Стерти дані програм</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Примусово зупинити</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Деінсталювати</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Яскравість</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Профілі вимкнено.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Профіль: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Профілі вимкнено.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Профіль змінено на <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Ініціалізація\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Індикатор подій</string>
+ <string name="led_notification_text">Світлодіод увімкнено параметрами</string>
+ <string name="qs_tile_edit_header_instruction">Натисніть і утримуйте плитку, щоб змінити</string>
+ <string name="quick_settings_edit_label">Редагувати плитки</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Не вдалося видалити кнопку редагування</string>
+ <string name="qs_tiles_reset_confirmation">Відновити налаштування плиток за замовчуванням?</string>
+ <string name="quick_settings_tile_reset_to_default">Відновити за замовчуванням</string>
+ <string name="quick_settings_title_header">Заголовок</string>
+ <string name="quick_settings_title_tiles">Плитки</string>
+ <string name="quick_settings_title_show_weather">Показати погоду</string>
+ <string name="quick_settings_title_enlarge_first_row">Збільшити перший рядок</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Триматиме це перед Вами, доки не відкріпите. Торкніться й утримуйте кнопку «Назад», щоб відкріпити.</string>
+ <string name="quick_settings_custom_tile_detail_title">Власна плитка</string>
+ <string name="quick_settings_remove">Видалити плитку</string>
+ <string name="quick_settings_network_adb_label">Налагодження по мережі</string>
+ <string name="quick_settings_compass_label">Компас</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Системні профілі</string>
+ <string name="quick_settings_profiles_off">Профілі вимкнуто</string>
+ <string name="quick_settings_heads_up_label">Спливаючі сповіщення</string>
+ <string name="quick_settings_battery_saver_label">Енергозбереження</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Синхронізацію вимкнено.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Синхронізацію увімкнено.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Синхронізацію вимкнено.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Синхронізація увімкнено.</string>
+ <string name="quick_settings_sync_label">Синхронізація</string>
+ <string name="quick_settings_volume_panel_label">Панель гучності</string>
+ <string name="quick_settings_usb_tether_label">USB-модем</string>
+ <string name="quick_settings_screen_timeout_detail_title">Тайм-аут екрану</string>
+ <string name="quick_settings_lockscreen_label">Заблокувати екран</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Блокування екрану ввімкнено</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Вимкнення екрана через: <xliff:g id="timeout" example="30 seconds">%s</xliff:g> секунд.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Вимкнення екрана відбувається через <xliff:g id="timeout" example="30 seconds">%s</xliff:g> секунд бездіяльності.</string>
+ <string name="qs_tile_performance">Енергоспоживання</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Режим батареї: збереження енергії.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Режим батареї: збалансований режим.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Режим батареї: висока продуктивність.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Енергоспоживання: енергоефективне.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Енергоспоживання: продуктивне.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Акумулятор тепер в режимі економії енергії.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Режим акумулятора змінено на збалансований.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Режим акумулятора змінено для високої продуктивності.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Енергоспоживання змінено на ефективне.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Енергоспоживання змінено на продуктивне.</string>
+ <string name="quick_settings_performance_profile_detail_title">Енергоспоживання</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Блокування екрана вимкнено.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Блокування екрана увімкнено.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Блокування екрана вимкнено.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Блокування екрана увімкнено.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display вимкнено.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display увімкнено.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient дисплей вимкнено.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display увімкнено.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Спливаючі сповіщення вимкнено.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Спливаючі сповіщення увімкнено.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Спливаючі сповіщення вимкнено.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Спливаючі сповіщення увімкнено.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Енергозбереження вимкнено.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Енергозбереження увімкнено.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Енергозбереження вимкнено.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Енергозбереження увімкнено.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Динамічні плитки</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Наступний сигнал</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Вибір способу вводу</string>
+ <string name="dynamic_qs_tile_su_label">Root доступ</string>
+ <string name="quick_settings_title_advanced_location">Параметри відправки геоданих</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Надсилання місця розташування: економія батареї.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Надсилання місця розташування: тільки датчики.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Надсилання місця розташування: висока точність.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Режим розташування</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Економія батареї</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">По датчиках пристрою</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Висока точність</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Визначення місцезнаходження у режимі економії батареї.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Визначення місцезнаходження тепер використовує лише датчики пристрою.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Визначення місцезнаходження у режимі високої точності.</string>
+ <string name="quick_settings_tiles_category_system">Системні плитки</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Додати плитку</string>
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Заряд батареї док-станції <xliff:g id="number">%d</xliff:g> процентів.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Показати чергу відтворення</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index b912678..1ac0ce1 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -152,7 +152,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим польоту."</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"Немає SIM-карти."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Змінення мережі оператора."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд акумулятора: <xliff:g id="NUMBER">%d</xliff:g>."</string>
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд акумулятора у відсотках: <xliff:g id="NUMBER">%d</xliff:g>."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Налаштування системи."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Сповіщення."</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"Очистити сповіщення."</string>
diff --git a/packages/SystemUI/res/values-ur-rPK/cm_arrays.xml b/packages/SystemUI/res/values-ur-rPK/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-ur-rPK/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-ur-rPK/cm_strings.xml b/packages/SystemUI/res/values-ur-rPK/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-ur-rPK/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/cm_arrays.xml b/packages/SystemUI/res/values-uz-rUZ/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-uz-rUZ/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/cm_strings.xml b/packages/SystemUI/res/values-uz-rUZ/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-uz-rUZ/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 54cb37d..f39c64f 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -29,7 +29,7 @@
<item quantity="other">Umumiy ma’lumot bo‘limida %d ta ekran bor</item>
<item quantity="one">Umumiy ma’lumot bo‘limida 1 ta ekran bor</item>
</plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Eslatmalar - yo‘q"</string>
+ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Bildirishnomalar yo‘q"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Joriy"</string>
<string name="status_bar_latest_events_title" msgid="6594767438577593172">"Eslatmalar"</string>
<string name="battery_low_title" msgid="6456385927409742437">"Batareya quvvati kam"</string>
@@ -145,10 +145,10 @@
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rouming"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
<string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM-karta yo‘q."</string>
+ <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM karta yo‘q."</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth modem"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Parvoz rejimi"</string>
- <string name="accessibility_no_sims" msgid="3957997018324995781">"Hech qanday SIM-karta yo‘q."</string>
+ <string name="accessibility_no_sims" msgid="3957997018324995781">"Hech qanday SIM karta yo‘q."</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Mobil tarmoqni o‘zgartirish"</string>
<string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> foiz."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Tizim sozlamalari."</string>
@@ -227,10 +227,10 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Barcha eslatmalarni tozalash."</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildirishnoma sozlamalari"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> sozlamalari"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik ravishda aylanadi."</string>
+ <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik buriladi."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran eniga holatida qulflandi."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran bo‘yiga holatida qulflandi."</string>
- <string name="accessibility_rotation_lock_off_changed" msgid="8134601071026305153">"Ekran endi avtomatik ravishda aylanadi."</string>
+ <string name="accessibility_rotation_lock_off_changed" msgid="8134601071026305153">"Ekran endi avtomatik buriladi."</string>
<string name="accessibility_rotation_lock_on_landscape_changed" msgid="3135965553707519743">"Ekran yotiq holatda aylanmaydigan qilindi."</string>
<string name="accessibility_rotation_lock_on_portrait_changed" msgid="8922481981834012126">"Ekran tik holatda aylanmaydigan qilindi."</string>
<string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
@@ -245,7 +245,7 @@
<string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth o‘chirilgan"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ulangan qurilmalar topilmadi"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Yorqinlik"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Auto-aylantirish"</string>
+ <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Avtomatik burish"</string>
<string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Aylanmaydigan qilingan"</string>
<string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Bo‘yiga"</string>
<string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Eniga"</string>
diff --git a/packages/SystemUI/res/values-vi/cm_arrays.xml b/packages/SystemUI/res/values-vi/cm_arrays.xml
new file mode 100644
index 0000000..073293f
--- /dev/null
+++ b/packages/SystemUI/res/values-vi/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>B</item>
+ <!-- North -->
+ <item>ĐB</item>
+ <!-- North east -->
+ <item>Đ</item>
+ <!-- East -->
+ <item>ĐN</item>
+ <!-- South east -->
+ <item>N</item>
+ <!-- South -->
+ <item>TN</item>
+ <!-- South west -->
+ <item>T</item>
+ <!-- West -->
+ <item>TB</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-vi/cm_strings.xml b/packages/SystemUI/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..e60cee2
--- /dev/null
+++ b/packages/SystemUI/res/values-vi/cm_strings.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA +</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4 G +</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Vuốt sang phải cho %1$s</string>
+ <string name="right_shortcut_hint">Vuốt sang trái cho %1$s</string>
+ <string name="lockscreen_message">Chạm vào một biểu tượng bên trái hoặc phải để tái chỉ định một lối tắt màn hình khóa.</string>
+ <string name="lockscreen_default_target">Mặc định</string>
+ <string name="select_application">Chọn ứng dụng</string>
+ <string name="lockscreen_choose_action_title">Chọn hành động</string>
+ <string name="lockscreen_none_target">Không</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Chọn hành động để gán</string>
+ <string name="navbar_home_button">Nút Home</string>
+ <string name="navbar_recent_button">Nút ứng dụng gần đây</string>
+ <string name="navbar_search_button">Nút tìm kiếm</string>
+ <string name="navbar_back_button">Nút quay lại</string>
+ <string name="navbar_empty_button">Nút trống</string>
+ <string name="navbar_menu_conditional_button">Phím trình đơn (tự ẩn)</string>
+ <string name="navbar_menu_always_button">Nút trình đơn (luôn hiện)</string>
+ <string name="navbar_menu_big_button">Nút trình đơn</string>
+ <string name="accessibility_dpad_left">Trỏ trái</string>
+ <string name="accessibility_dpad_right">Trỏ phải</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Xoá dữ liệu ứng dụng</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Buộc dừng</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Gỡ cài đặt</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Độ sáng đèn</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Hồ sơ tắt.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Hồ sơ: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Hồ sơ đã tắt.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Hồ sơ đã đổi thành <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+ <string name="quick_settings_compass_init">Đang khởi tạo\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Cài đặt đèn</string>
+ <string name="led_notification_text">Đèn LED được kích hoạt theo cài đặt</string>
+ <string name="qs_tile_edit_header_instruction">Bấm và giữ ô để sắp xếp lại</string>
+ <string name="quick_settings_edit_label">Chỉnh sửa ô</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Không thể xoá ô Chỉnh sửa</string>
+ <string name="qs_tiles_reset_confirmation">Đặt lại ô cài đặt nhanh về cấu hình mặc định?</string>
+ <string name="quick_settings_tile_reset_to_default">Đặt lại bố cục mặc định</string>
+ <string name="quick_settings_title_header">Tiêu đề</string>
+ <string name="quick_settings_title_tiles">Ô</string>
+ <string name="quick_settings_title_show_weather">Hiện thời tiết</string>
+ <string name="quick_settings_title_show_brightness_slider">Hiện thanh điều chỉnh độ sáng</string>
+ <string name="quick_settings_title_enlarge_first_row">Phóng lớn hàng đầu tiên</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">Điều này sẽ giúp nó hiển thị cho đến khi bạn bỏ ghim. Chạm và giữ nút Quay lại để bỏ ghim.</string>
+ <string name="quick_settings_custom_tile_detail_title">Kiểu xếp cạnh nhau tùy chỉnh</string>
+ <string name="quick_settings_remove">Gỡ kiểu xếp cạnh nhau</string>
+ <string name="quick_settings_network_adb_label">ADB qua mạng</string>
+ <string name="quick_settings_compass_label">La bàn</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">Cấu hình hệ thống</string>
+ <string name="quick_settings_profiles_off">Cấu hình bị vô hiệu hóa</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Trình tiết kiệm pin</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Trình tiết kiệm pin (đang sạc)</string>
+ <string name="quick_settings_caffeine_label">Cafein</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Tắt đồng bộ.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Bật đồng bộ.</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Đã tắt đồng bộ.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Đã bật đồng bộ.</string>
+ <string name="quick_settings_sync_label">Đồng bộ</string>
+ <string name="quick_settings_volume_panel_label">Bảng điều khiển âm lượng</string>
+ <string name="quick_settings_usb_tether_label">Kết nối mạng qua USB</string>
+ <string name="quick_settings_screen_timeout_detail_title">Thời gian sáng màn hình</string>
+ <string name="quick_settings_lockscreen_label">Màn hình khoá</string>
+ <string name="quick_settings_ambient_display_label">Hiển thị môi trường xung quanh</string>
+ <string name="quick_settings_lockscreen_label_enforced">Buộc khoá màn hình</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Bị vô hiệu theo cấu hình</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Thời gian chờ của màn hình: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Thời gian chờ của màn hình đã đổi thành <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Chế độ pin</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Chế độ pin: chế độ tiết kiệm năng lượng.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Chế độ pin: chế độ cân bằng.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Pin chế độ: chế độ hiệu suất.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Chế độ pin: chế độ hiệu quả.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Chế độ pin: chế độ nhanh.</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Chế độ pin đã đổi sang chế độ tiết kiệm năng lượng.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Chế độ pin đã đổi sang chế độ cân bằng.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Chế độ pin đã đổi sang chế độ hiệu suất.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Chế độ pin được chuyển sang hiệu quả.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Chế độ pin được chuyển sang nhanh.</string>
+ <string name="quick_settings_performance_profile_detail_title">Chế độ pin</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Màn hình khóa tắt.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Màn hình khóa bật.</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Màn hình khóa đã tắt.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Màn hình khóa đã bật.</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Tắt hiển thị môi trường xung quanh.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Hiển thị môi trường xung quanh bật.</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Hiển thị môi trường xung quanh đã tắt.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Hiển thị môi trường xung quanh đã bật.</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up tắt.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up bật.</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up đã tắt.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up đã bật.</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Đã tắt Cafein.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Đã bật Cafein.</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Trình tiết kiệm pin: Tắt.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Trình tiết kiệm pin: Bật.</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Đã tắt Trinh tiết kiệm pin.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Đã bật Trình tiết kiệm pin.</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Kiểu xếp cạnh nhau động</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Báo thức tiếp theo</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Trình chọn IME</string>
+ <string name="dynamic_qs_tile_su_label">Truy cập root</string>
+ <string name="quick_settings_title_advanced_location">Ba trạng thái cho cài đặt vị trí</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Báo cáo vị trí: chế độ tiết kiệm pin.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Báo cáo vị trí: chế độ chỉ cám biến.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Báo cáo vị trí: chế độ chính xác cao.</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Chế độ vị trí</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Tiết kiệm pin</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Chỉ thiết bị</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">Chính xác cao</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Báo cáo vị trí đã đổi sang chế độ tiết kiệm pin.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Báo cáo vị trí đã đổi sang chế độ chỉ cảm biến.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Báo cáo vị trí đã đổi sang chế độ chính xác cao.</string>
+ <string name="quick_settings_tiles_category_system">Ô hệ thống</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Thêm một ô</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Không thể kết nối với mạng di động khi đã kích hoạt chế độ trên Máy bay. Vô hiệu chế độ trên Máy bay và thử lại.</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Đã bật đèn pin</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Chạm vào để tắt</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d máy khách</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">Không có SIM dữ liệu</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Thanh pin <xliff:g id="number">%d</xliff:g> phần trăm.</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">Hiện danh sách chờ phát</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-xhdpi/cm_dimens.xml b/packages/SystemUI/res/values-xhdpi/cm_dimens.xml
new file mode 100644
index 0000000..eacf1d9
--- /dev/null
+++ b/packages/SystemUI/res/values-xhdpi/cm_dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="weather_text_size">12sp</dimen>
+</resources> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-xxhdpi/cm_dimens.xml b/packages/SystemUI/res/values-xxhdpi/cm_dimens.xml
new file mode 100644
index 0000000..eacf1d9
--- /dev/null
+++ b/packages/SystemUI/res/values-xxhdpi/cm_dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="weather_text_size">12sp</dimen>
+</resources> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-zh-rCN/cm_arrays.xml b/packages/SystemUI/res/values-zh-rCN/cm_arrays.xml
new file mode 100644
index 0000000..26094b4
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rCN/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>北</item>
+ <!-- North -->
+ <item>东北</item>
+ <!-- North east -->
+ <item>东</item>
+ <!-- East -->
+ <item>东南</item>
+ <!-- South east -->
+ <item>南</item>
+ <!-- South -->
+ <item>西南</item>
+ <!-- South west -->
+ <item>西</item>
+ <!-- West -->
+ <item>西北</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..525300b
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">向右滑动以%1$s</string>
+ <string name="right_shortcut_hint">向左滑动以%1$s</string>
+ <string name="lockscreen_message">轻触左边或右边的图标来重新分配锁屏快捷方式。</string>
+ <string name="lockscreen_default_target">默认</string>
+ <string name="select_application">选择应用</string>
+ <string name="lockscreen_choose_action_title">选择操作</string>
+ <string name="lockscreen_none_target">无</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">选择要分配的动作</string>
+ <string name="navbar_home_button">Home 键</string>
+ <string name="navbar_recent_button">任务键</string>
+ <string name="navbar_search_button">搜索键</string>
+ <string name="navbar_back_button">返回键</string>
+ <string name="navbar_empty_button">空白键</string>
+ <string name="navbar_menu_conditional_button">菜单键 (自动隐藏)</string>
+ <string name="navbar_menu_always_button">菜单键 (总是显示)</string>
+ <string name="navbar_menu_big_button">菜单键</string>
+ <string name="accessibility_dpad_left">光标左移</string>
+ <string name="accessibility_dpad_right">光标右移</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">擦除应用数据</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">强行停止</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">卸载</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">指示灯亮度</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">情景模式关闭。</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">情景模式:<xliff:g id="profile" example="Default">%s</xliff:g>。</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">情景模式已关闭。</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">情景模式已修改为<xliff:g id="profile" example="Default">%s</xliff:g>。</string>
+ <string name="quick_settings_compass_init">正在初始化\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">指示灯设置</string>
+ <string name="led_notification_text">LED 灯由设置启用</string>
+ <string name="qs_tile_edit_header_instruction">长按瓷块来重新排列</string>
+ <string name="quick_settings_edit_label">编辑瓷块</string>
+ <string name="quick_settings_cannot_delete_edit_tile">不能删除“编辑”瓷块</string>
+ <string name="qs_tiles_reset_confirmation">重置快速设置瓷块位置为默认配置?</string>
+ <string name="quick_settings_tile_reset_to_default">重置为默认布局</string>
+ <string name="quick_settings_title_header">标题</string>
+ <string name="quick_settings_title_tiles">瓷块</string>
+ <string name="quick_settings_title_show_weather">显示天气</string>
+ <string name="quick_settings_title_show_brightness_slider">显示亮度滑块</string>
+ <string name="quick_settings_title_enlarge_first_row">扩大第一行</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">这将会固定显示此屏幕,直到您取消固定为止。触摸并按住返回键即可取消固定。</string>
+ <string name="quick_settings_custom_tile_detail_title">自定义瓷片</string>
+ <string name="quick_settings_remove">移除瓷片</string>
+ <string name="quick_settings_network_adb_label">网络 ADB 调试</string>
+ <string name="quick_settings_compass_label">指南针</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">情景模式</string>
+ <string name="quick_settings_profiles_off">已禁用情景模式</string>
+ <string name="quick_settings_heads_up_label">浮动通知</string>
+ <string name="quick_settings_battery_saver_label">省电模式</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">省电模式(充电中)</string>
+ <string name="quick_settings_caffeine_label">保持亮屏</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">同步关闭。</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">同步开启。</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">同步已关闭。</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">同步已开启。</string>
+ <string name="quick_settings_sync_label">同步</string>
+ <string name="quick_settings_volume_panel_label">音量面板</string>
+ <string name="quick_settings_usb_tether_label">USB 共享网络</string>
+ <string name="quick_settings_screen_timeout_detail_title">屏幕超时</string>
+ <string name="quick_settings_lockscreen_label">锁屏</string>
+ <string name="quick_settings_ambient_display_label">环境显示</string>
+ <string name="quick_settings_lockscreen_label_enforced">强制锁屏</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">已在情景模式中禁用</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">屏幕超时:<xliff:g id="timeout" example="30 seconds">%s</xliff:g>。</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">屏幕超时已修改为<xliff:g id="timeout" example="30 seconds">%s</xliff:g>。</string>
+ <string name="qs_tile_performance">电池模式</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">电池模式:节电模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">电池模式:平衡模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">电池模式:性能模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">电池模式:效率模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">电池模式:快速模式。</string>
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">电池模式已更改为省电模式。</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">电池模式已修改为平衡模式。</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">电池模式已修改为性能模式。</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">电池模式已修改为效率模式。</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">电池模式已修改为快速模式。</string>
+ <string name="quick_settings_performance_profile_detail_title">电池模式</string>
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">锁屏关闭。</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">锁屏开启。</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">锁屏已关闭。</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">锁屏已开启。</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">关闭环境显示。</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">开启环境显示。</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">环境显示已关闭。</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">环境显示已开启。</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">浮动通知关。</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">浮动通知开。</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">浮动通知已关闭。</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">浮动通知已开启。</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">保持亮屏关闭。</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">保持亮屏开启。</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">省电模式关闭。</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">省电模式开启。</string>
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">已关闭省电模式。</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">已开启省电模式。</string>
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">动态按钮</string>
+ <string name="dynamic_qs_tile_next_alarm_label">下一个闹铃</string>
+ <string name="dynamic_qs_tile_ime_selector_label">输入法选择器</string>
+ <string name="dynamic_qs_tile_su_label">Root 授权</string>
+ <string name="dynamic_qs_tile_themes_label">主题</string>
+ <string name="quick_settings_title_advanced_location">三种状态的位置设置</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">位置报告:节电模式。</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">位置报告:仅传感器模式。</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">位置报告:高准确度模式。</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">位置信息模式</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">耗电量低</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">仅限设备</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">准确度高</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">地理位置报告已修改为节能模式。</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">位置报告已修改为仅使用传感器模式。</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">位置报告已修改为准确度高模式。</string>
+ <string name="quick_settings_tiles_category_system">系统磁块</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">添加磁块</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">飞行模式启用时无法连接到移动网络。请禁用飞行模式并重试。</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">手电筒已开</string>
+ <string name="quick_settings_tile_flashlight_not_summary">轻按以关闭</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d 台设备</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">没有数据 SIM 卡</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">底座电池百分之 <xliff:g id="number">%d</xliff:g>。</string>
+ <!-- Play queue -->
+ <string name="play_queue_extention">显示播放队列</string>
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+ <string name="expand_hint">向下滑动以展开</string>
+ <string name="swipe_left_hint">向左滑动以 <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">向右滑动以查看通知</string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 06acce2..980da9d 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -64,7 +64,7 @@
<string name="usb_debugging_message" msgid="2220143855912376496">"这台计算机的 RSA 密钥指纹如下:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="303335496705863070">"一律允许使用这台计算机进行调试"</string>
<string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"不允许使用 USB 调试功能"</string>
- <string name="usb_debugging_secondary_user_message" msgid="6011931347142270156">"目前已登录此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为主要用户“<xliff:g id="NAME">%s</xliff:g>”的帐户。"</string>
+ <string name="usb_debugging_secondary_user_message" msgid="6011931347142270156">"目前已登录此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为主要用户“<xliff:g id="NAME">%s</xliff:g>”的帐号。"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"缩放以填满屏幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"拉伸以填满屏幕"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"正在保存屏幕截图..."</string>
@@ -77,7 +77,7 @@
<string name="usb_preference_title" msgid="6551050377388882787">"USB文件传输选项"</string>
<string name="use_mtp_button_title" msgid="4333504413563023626">"作为媒体播放器(MTP)装载"</string>
<string name="use_ptp_button_title" msgid="7517127540301625751">"作为相机(PTP)装载"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"安装适用于Mac的Android文件传输应用"</string>
+ <string name="installer_cd_button_title" msgid="2312667578562201583">"安装适用于 Mac 的 Android 文件传输应用"</string>
<string name="accessibility_back" msgid="567011538994429120">"返回"</string>
<string name="accessibility_home" msgid="8217216074895377641">"主屏幕"</string>
<string name="accessibility_menu" msgid="316839303324695949">"菜单"</string>
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飞行模式。"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"没有 SIM 卡。"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"运营商网络正在更改。"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"电池电量为百分之 <xliff:g id="NUMBER">%d</xliff:g>。"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"系统设置。"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"通知。"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"清除通知。"</string>
@@ -327,8 +325,8 @@
<string name="interruption_level_priority_twoline" msgid="1564715335217164124">"仅限\n优先打扰"</string>
<string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"仅限\n闹钟"</string>
<string name="keyguard_indication_charging_time" msgid="1757251776872835768">"正在充电(还需<xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g>充满)"</string>
- <string name="keyguard_indication_charging_time_fast" msgid="9018981952053914986">"正在快速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g>才能充满)"</string>
- <string name="keyguard_indication_charging_time_slowly" msgid="955252797961724952">"正在慢速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g>才能充满)"</string>
+ <string name="keyguard_indication_charging_time_fast" msgid="9018981952053914986">"正在快速充电(还需<xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g>充满)"</string>
+ <string name="keyguard_indication_charging_time_slowly" msgid="955252797961724952">"正在慢速充电(还需<xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g>充满)"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="7305948938141024937">"切换用户"</string>
<string name="accessibility_multi_user_switch_switcher_with_current" msgid="8434880595284601601">"切换用户,当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string>
<string name="accessibility_multi_user_switch_inactive" msgid="1424081831468083402">"当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string>
@@ -405,7 +403,7 @@
<string name="system_ui_tuner" msgid="708224127392452018">"系统界面调谐器"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"嵌入式显示电池电量百分比 显示嵌入的电池电量百分比"</string>
<string name="show_battery_percentage_summary" msgid="3215025775576786037">"未充电时在状态栏图标内显示电池电量百分比"</string>
- <string name="quick_settings" msgid="10042998191725428">"快速设置"</string>
+ <string name="quick_settings" msgid="10042998191725428">"快捷设置"</string>
<string name="status_bar" msgid="4877645476959324760">"状态栏"</string>
<string name="demo_mode" msgid="2389163018533514619">"演示模式"</string>
<string name="enable_demo_mode" msgid="4844205668718636518">"启用演示模式"</string>
@@ -420,7 +418,7 @@
<string name="zen_alarm_warning" msgid="444533119582244293">"您在<xliff:g id="WHEN">%1$s</xliff:g>将不会听到下次闹钟响铃"</string>
<string name="alarm_template" msgid="3980063409350522735">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="4242179982586714810">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_detail" msgid="2579369091672902101">"快速设置,<xliff:g id="TITLE">%s</xliff:g>。"</string>
+ <string name="accessibility_quick_settings_detail" msgid="2579369091672902101">"快捷设置,<xliff:g id="TITLE">%s</xliff:g>。"</string>
<string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"热点"</string>
<string name="accessibility_managed_profile" msgid="6613641363112584120">"工作资料"</string>
<string name="tuner_warning_title" msgid="7094689930793031682">"是否有趣完全取决于个人感觉"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/cm_arrays.xml b/packages/SystemUI/res/values-zh-rHK/cm_arrays.xml
new file mode 100644
index 0000000..4280641
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rHK/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>北</item>
+ <!-- North -->
+ <item>東北</item>
+ <!-- North east -->
+ <item>東</item>
+ <!-- East -->
+ <item>東南</item>
+ <!-- South east -->
+ <item>南</item>
+ <!-- South -->
+ <item>西南</item>
+ <!-- South west -->
+ <item>西</item>
+ <!-- West -->
+ <item>西北</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/cm_strings.xml b/packages/SystemUI/res/values-zh-rHK/cm_strings.xml
new file mode 100644
index 0000000..ecd9d00
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rHK/cm_strings.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">向右滑動即可%1$s</string>
+ <string name="right_shortcut_hint">向左滑動即可%1$s</string>
+ <string name="select_application">選擇應用程式</string>
+ <string name="lockscreen_choose_action_title">選擇操作</string>
+ <string name="lockscreen_none_target">無</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_empty_button">清空按鈕</string>
+ <string name="navbar_menu_conditional_button">功能表(自動隱藏)按鈕</string>
+ <string name="navbar_menu_always_button">功能表(一律顯示)按鈕</string>
+ <string name="navbar_menu_big_button">功能表按鈕</string>
+ <string name="accessibility_dpad_left">游標向左</string>
+ <string name="accessibility_dpad_right">游標向右</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">擦除應用程式數據</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">強制停止</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">解除安裝</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">設定檔已關閉。</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">設定檔:<xliff:g id="profile" example="Default">%s</xliff:g>。</string>
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">設定檔已關閉。</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">設定檔已改為<xliff:g id="profile" example="Default">%s</xliff:g>。</string>
+ <string name="quick_settings_compass_init">正在初始化\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">這將保持畫面在視野範圍內,直至您解鎖畫面位置。觸摸并按住返回按鈕即可解鎖畫面。</string>
+ <string name="quick_settings_custom_tile_detail_title">自訂方塊</string>
+ <string name="quick_settings_remove">移除方塊</string>
+ <string name="quick_settings_network_adb_label">透過網絡連接 ADB</string>
+ <string name="quick_settings_compass_label">指南針</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">系統設定檔</string>
+ <string name="quick_settings_heads_up_label">浮動通知</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">已關閉同步。</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">已開啟同步。</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">同步已關閉。</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">同步已開啟。</string>
+ <string name="quick_settings_sync_label">同步</string>
+ <string name="quick_settings_volume_panel_label">音量區</string>
+ <string name="quick_settings_usb_tether_label">USB 網絡共享</string>
+ <string name="quick_settings_screen_timeout_detail_title">螢幕逾時</string>
+ <string name="quick_settings_ambient_display_label">環境顯示</string>
+ <string name="quick_settings_lockscreen_label_enforced">強制執行鎖定螢幕</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">螢幕逾時:<xliff:g id="timeout" example="30 seconds">%s</xliff:g>。</string>
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">螢幕逾時設定已改為<xliff:g id="timeout" example="30 seconds">%s</xliff:g>。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">電池模式:省電模式</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">電池模式:平衡模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">電池模式:性能模式。</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">電池模式已改為省電模式。</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">電池模式已改為平衡模式。</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">電池模式已改為性能模式。</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">已關閉鎖定螢幕功能。</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">已開啟鎖定螢幕功能。</string>
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">已關閉鎖定螢幕功能。</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">已開啟鎖定螢幕功能。</string>
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">已關閉浮動通知。</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">已開啟浮動通知。</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">已關閉浮動通知。</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">已開啟浮動通知。</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">動態方塊</string>
+ <string name="dynamic_qs_tile_next_alarm_label">下一個鬧鐘</string>
+ <string name="dynamic_qs_tile_ime_selector_label">輸入法選擇器</string>
+ <string name="dynamic_qs_tile_su_label">Root 權限</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">定位報告:省電模式。</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">定位報告:僅感應器模式。</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">定位報告:高精度模式。</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">定位模式</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">省電</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">僅限裝置</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">高精度</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">定位報告已改為省電模式。</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">定位報告已改為僅感應器模式。</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">定位報告已改為高精度模式。</string>
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">座架電池 <xliff:g id="number">%d</xliff:g>%%。</string>
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index ef5cd39..a1b7191 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飛航模式。"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"沒有 SIM 卡。"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"流動網絡供應商網絡正在變更。"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"電池電量為百分之 <xliff:g id="NUMBER">%d</xliff:g>。"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"系統設定"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"通知。"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"清除通知。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/cm_arrays.xml b/packages/SystemUI/res/values-zh-rTW/cm_arrays.xml
new file mode 100644
index 0000000..4280641
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rTW/cm_arrays.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>北</item>
+ <!-- North -->
+ <item>東北</item>
+ <!-- North east -->
+ <item>東</item>
+ <!-- East -->
+ <item>東南</item>
+ <!-- South east -->
+ <item>南</item>
+ <!-- South -->
+ <item>西南</item>
+ <!-- South west -->
+ <item>西</item>
+ <!-- West -->
+ <item>西北</item>
+ <!-- North west -->
+ </string-array>
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/cm_strings.xml b/packages/SystemUI/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..09770c6
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">向右滑動即可%1$s</string>
+ <string name="right_shortcut_hint">向左滑動即可%1$s</string>
+ <string name="lockscreen_message">輕觸左側或右側的圖示以設定鎖定畫面捷徑</string>
+ <string name="lockscreen_default_target">預設</string>
+ <string name="select_application">選取應用程式</string>
+ <string name="lockscreen_choose_action_title">選取操作</string>
+ <string name="lockscreen_none_target">無</string>
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">選擇要指定的操作</string>
+ <string name="navbar_home_button">主螢幕鍵</string>
+ <string name="navbar_recent_button">多工鍵</string>
+ <string name="navbar_search_button">搜尋鍵</string>
+ <string name="navbar_back_button">返回鍵</string>
+ <string name="navbar_empty_button">空鍵</string>
+ <string name="navbar_menu_conditional_button">選單鍵 (自動隱藏)</string>
+ <string name="navbar_menu_always_button">選單鍵 (一律顯示)</string>
+ <string name="navbar_menu_big_button">選單鍵</string>
+ <string name="accessibility_dpad_left">游標左移</string>
+ <string name="accessibility_dpad_right">游標右移</string>
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">清除應用程式資料</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">強制停止</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">解除安裝</string>
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">亮度</string>
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_compass_init">正在初始化\u2026</string>
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">指示燈設定</string>
+ <string name="led_notification_text">已透過設定啟用 LED 指示燈</string>
+ <string name="qs_tile_edit_header_instruction">按住瓷磚以重新排列</string>
+ <string name="quick_settings_edit_label">編輯瓷磚</string>
+ <string name="quick_settings_cannot_delete_edit_tile">無法刪除編輯瓷磚</string>
+ <string name="qs_tiles_reset_confirmation">將快速設定瓷磚還原至預設配置?</string>
+ <string name="quick_settings_tile_reset_to_default">還原至預設布局</string>
+ <string name="quick_settings_title_header">標題</string>
+ <string name="quick_settings_title_tiles">瓷磚</string>
+ <string name="quick_settings_title_show_weather">顯示天氣資訊</string>
+ <string name="quick_settings_title_show_brightness_slider">顯示亮度滑桿</string>
+ <string name="quick_settings_title_enlarge_first_row">擴大首行</string>
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="quick_settings_custom_tile_detail_title">自訂瓷磚</string>
+ <string name="quick_settings_remove">移除瓷磚</string>
+ <string name="quick_settings_network_adb_label">網路 ADB</string>
+ <string name="quick_settings_compass_label">指南針</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">系統設定檔</string>
+ <string name="quick_settings_profiles_off">已停用設定檔</string>
+ <string name="quick_settings_heads_up_label">浮動通知</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">省電模式(充電中)</string>
+ <string name="quick_settings_caffeine_label">暫停休眠</string>
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">同步關閉</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">同步開啟</string>
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">同步已關閉</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">同步已開啟</string>
+ <string name="quick_settings_sync_label">同步</string>
+ <string name="quick_settings_usb_tether_label">USB 網路共用</string>
+ <string name="quick_settings_screen_timeout_detail_title">螢幕閒置時間</string>
+ <string name="quick_settings_lockscreen_label">鎖定畫面</string>
+ <string name="quick_settings_ambient_display_label">環境顯示</string>
+ <string name="quick_settings_lockscreen_label_enforced">強制執行鎖定畫面</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">已由設定檔禁用</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">環境顯示關閉</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">環境顯示開啟</string>
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">環境顯示已關閉</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">環境顯示已開啟</string>
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">浮動通知關閉</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">浮動通知開啟</string>
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">浮動通知已關閉</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">浮動通知已開啟</string>
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">暫停休眠關閉</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">暫停休眠開啟</string>
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">動態磚</string>
+ <string name="dynamic_qs_tile_next_alarm_label">下一個鬧鐘</string>
+ <string name="dynamic_qs_tile_ime_selector_label">輸入法選擇器</string>
+ <string name="dynamic_qs_tile_su_label">Root 權限</string>
+ <string name="quick_settings_title_advanced_location">定位模式</string>
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">位置回報:節約耗電量</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">位置回報:僅限裝置</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">位置回報:高精確度</string>
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">定位模式</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">節約耗電量</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">僅限裝置</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">高精確度</string>
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_tiles_category_system">系統瓷磚</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">新增瓷磚</string>
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">飛航模式啟用時無法連接行動網路,請停用飛航模式後再嘗試。</string>
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">手電筒已經開啟</string>
+ <string name="quick_settings_tile_flashlight_not_summary">點擊關閉</string>
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="other">%1$d 用戶</item>
+ </plurals>
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">沒有數據資料傳輸的 SIM 卡</string>
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 4ace18e..46bf52d 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -150,9 +150,7 @@
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飛行模式。"</string>
<string name="accessibility_no_sims" msgid="3957997018324995781">"沒有 SIM 卡。"</string>
<string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"行動通訊業者網路正在變更。"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
+ <string name="accessibility_battery_level" msgid="7451474187113371965">"電池電量為百分之 <xliff:g id="NUMBER">%d</xliff:g>。"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"系統設定"</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"通知。"</string>
<string name="accessibility_remove_notification" msgid="3603099514902182350">"清除通知。"</string>
diff --git a/packages/SystemUI/res/values-zu/cm_arrays.xml b/packages/SystemUI/res/values-zu/cm_arrays.xml
new file mode 100644
index 0000000..44e4c6a
--- /dev/null
+++ b/packages/SystemUI/res/values-zu/cm_arrays.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Cardinal directions for the compass tile -->
+ <!-- Performance profiles description-->
+ <!-- Performance profiles announcement-->
+ <!-- Dynamic tiles -->
+</resources>
diff --git a/packages/SystemUI/res/values-zu/cm_strings.xml b/packages/SystemUI/res/values-zu/cm_strings.xml
new file mode 100644
index 0000000..b75332c
--- /dev/null
+++ b/packages/SystemUI/res/values-zu/cm_strings.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Weather string format in expanded statusbar header -->
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <!-- Strings for lockscreen shortcut hints -->
+ <!-- Dialog title for navigation bar button selection -->
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <!-- Title shown in recents popup for force stopping the application -->
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Lights settings, LED notification -->
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Dynamic tiles -->
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- detail header when adding a tile -->
+ <!-- Hotspot dialog message -->
+ <!-- Notification which notifies user flashlight is enabled -->
+ <!-- Wi-Fi hotspot label when enabled -->
+ <!-- CellularTile data sim not configured state string -->
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <!-- Play queue -->
+ <!-- Path data for portrait battery -->
+ <!-- Path data for landscape battery -->
+ <!-- Path data for circle battery -->
+ <!-- Weather string format in keyguard -->
+</resources>
diff --git a/packages/SystemUI/res/values/arrays.xml b/packages/SystemUI/res/values/arrays.xml
index 6102aa6..79a4649 100644
--- a/packages/SystemUI/res/values/arrays.xml
+++ b/packages/SystemUI/res/values/arrays.xml
@@ -26,7 +26,7 @@
</array>
<array name="batterymeter_color_values">
<item>@*android:color/battery_saver_mode_color</item>
- <item>#FFFFFFFF</item>
+ <item>@color/batterymeter_base_color</item>
</array>
<array name="batterymeter_bolt_points">
<item>73</item> <item>0</item>
diff --git a/packages/SystemUI/res/values/cm_arrays.xml b/packages/SystemUI/res/values/cm_arrays.xml
new file mode 100644
index 0000000..d4be9d5
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_arrays.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <array name="batterymeter_inverted_bolt_points" translatable="false">
+ <item>743</item><item>73</item>
+ <item>743</item><item>292</item>
+ <item>442</item><item>201</item>
+ <item>442</item><item>400</item>
+ <item>0</item><item>20</item>
+ <item>369</item><item>157</item>
+ <item>369</item><item>0</item>
+ </array>
+
+ <!-- Cardinal directions for the compass tile -->
+ <string-array name="cardinal_directions">
+ <item>N</item> <!-- North -->
+ <item>NE</item> <!-- North east -->
+ <item>E</item> <!-- East -->
+ <item>SE</item> <!-- South east -->
+ <item>S</item> <!-- South -->
+ <item>SW</item> <!-- South west -->
+ <item>W</item> <!-- West -->
+ <item>NW</item> <!-- North west -->
+ </string-array>
+
+ <!-- Performance profiles description-->
+ <string-array name="perf_profile_description" translatable="false">
+ <item>@string/accessibility_quick_settings_perf_profile_pwrsv</item>
+ <item>@string/accessibility_quick_settings_perf_profile_bias_power</item>
+ <item>@string/accessibility_quick_settings_perf_profile_bal</item>
+ <item>@string/accessibility_quick_settings_perf_profile_bias_perf</item>
+ <item>@string/accessibility_quick_settings_perf_profile_perf</item>
+ </string-array>
+
+ <!-- Performance profiles announcement-->
+ <string-array name="perf_profile_announcement" translatable="false">
+ <item>@string/accessibility_quick_settings_perf_profile_changed_pwrsv</item>
+ <item>@string/accessibility_quick_settings_perf_profile_changed_bias_power</item>
+ <item>@string/accessibility_quick_settings_perf_profile_changed_bal</item>
+ <item>@string/accessibility_quick_settings_perf_profile_changed_bias_perf</item>
+ <item>@string/accessibility_quick_settings_perf_profile_changed_perf</item>
+ </string-array>
+
+ <!-- Dynamic tiles -->
+ <string-array name="dynamic_qs_tiles_labels" translatable="false">
+ <item>@string/dynamic_qs_tile_next_alarm_label</item>
+ <item>@string/dynamic_qs_tile_ime_selector_label</item>
+ <item>@string/dynamic_qs_tile_su_label</item>
+ <item>@string/dynamic_qs_tile_adb_label</item>
+ <item>@string/dynamic_qs_tile_live_display_label</item>
+ <item>@string/dynamic_qs_tile_themes_label</item>
+ </string-array>
+ <string-array name="dynamic_qs_tiles_icons_resources_ids" translatable="false">
+ <item>ic_dynamic_qs_next_alarm</item>
+ <item>ic_dynamic_qs_ime_selector</item>
+ <item>ic_dynamic_qs_su</item>
+ <item>ic_dynamic_qs_adb</item>
+ <item>ic_dynamic_qs_live_display</item>
+ <item>ic_dynamic_qs_themes</item>
+ </string-array>
+ <string-array name="dynamic_qs_tiles_values" translatable="false">
+ <item>next_alarm</item>
+ <item>ime_selector</item>
+ <item>su</item>
+ <item>adb</item>
+ <item>live_display</item>
+ <item>themes</item>
+ </string-array>
+
+ <array name="dockbatterymeter_bolt_points" translatable="false">
+ <item>129</item><item>0</item>
+ <item>199</item><item>0</item>
+ <item>199</item><item>168</item>
+ <item>240</item><item>168</item>
+ <item>240</item><item>0</item>
+ <item>312</item><item>0</item>
+ <item>312</item><item>168</item>
+ <item>441</item><item>168</item>
+ <item>441</item><item>252</item>
+ <item>312</item><item>400</item>
+ <item>286</item><item>400</item>
+ <item>286</item><item>702</item>
+ <item>157</item><item>702</item>
+ <item>154</item><item>400</item>
+ <item>129</item><item>400</item>
+ <item>0</item><item>251</item>
+ <item>0</item><item>168</item>
+ <item>129</item><item>168</item>
+ </array>
+
+ <array name="dockbatterymeter_inverted_bolt_points" translatable="false">
+ <item>0</item><item>154</item>
+ <item>302</item><item>154</item>
+ <item>302</item><item>129</item>
+ <item>451</item><item>0</item>
+ <item>534</item><item>0</item>
+ <item>534</item><item>129</item>
+ <item>702</item><item>129</item>
+ <item>702</item><item>199</item>
+ <item>534</item><item>199</item>
+ <item>534</item><item>265</item>
+ <item>702</item><item>265</item>
+ <item>702</item><item>312</item>
+ <item>534</item><item>312</item>
+ <item>534</item><item>441</item>
+ <item>451</item><item>441</item>
+ <item>302</item><item>312</item>
+ <item>302</item><item>286</item>
+ <item>0</item><item>286</item>
+ </array>
+</resources>
diff --git a/packages/SystemUI/res/values/cm_attrs.xml b/packages/SystemUI/res/values/cm_attrs.xml
new file mode 100644
index 0000000..36edac0
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_attrs.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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>
+ <declare-styleable name="QuickSettingsRow">
+ <attr name="table" format="enum">
+ <enum name="system" value="0"/>
+ <enum name="global" value="1"/>
+ <enum name="secure" value="2"/>
+
+ <enum name="cm_system" value="3"/>
+ <enum name="cm_global" value="4"/>
+ <enum name="cm_secure" value="5"/>
+ </attr>
+
+ <attr name="android:key"/>
+ <attr name="android:title" />
+ <attr name="defaultValue" format="integer"/>
+ </declare-styleable>
+
+ <declare-styleable name="BatteryMeterViewDrawable">
+ <attr name="android:gravity"/>
+ <!-- Blending mode used for drawing charging bolt and percentage text -->
+ <attr name="blendMode">
+ <!-- [0, 0] -->
+ <enum name="clear" value="0" />
+ <!-- [Sa, Sc] -->
+ <enum name="src" value="1" />
+ <!-- [Da, Dc] -->
+ <enum name="dst" value="2" />
+ <!-- [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
+ <enum name="src_over" value="3" />
+ <!-- [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] -->
+ <enum name="dst_over" value="4" />
+ <!-- [Sa * Da, Sc * Da] -->
+ <enum name="src_in" value="5" />
+ <!-- [Sa * Da, Sa * Dc] -->
+ <enum name="dst_in" value="6" />
+ <!-- [Sa * (1 - Da), Sc * (1 - Da)] -->
+ <enum name="src_out" value="7" />
+ <!-- [Da * (1 - Sa), Dc * (1 - Sa)] -->
+ <enum name="dst_out" value="8" />
+ <!-- [Da, Sc * Da + (1 - Sa) * Dc] -->
+ <enum name="src_atop" value="9" />
+ <!-- [Sa, Sa * Dc + Sc * (1 - Da)] -->
+ <enum name="dst_atop" value="10" />
+ <!-- [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] -->
+ <enum name="xor" value="11" />
+ <!-- Saturate(S + D) -->
+ <enum name="add" value="12" />
+ <!-- [Sa * Da, Sc * Dc] -->
+ <enum name="multiply" value="13" />
+ <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
+ <enum name="screen" value="14" />
+ <!-- Draw on top without any blending operations performed -->
+ <enum name="overlay" value="15" />
+ <!-- [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] -->
+ <enum name="darken" value="16" />
+ </attr>
+ </declare-styleable>
+</resources>
+
diff --git a/packages/SystemUI/res/values/cm_colors.xml b/packages/SystemUI/res/values/cm_colors.xml
new file mode 100644
index 0000000..5b6e2c0
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_colors.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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>
+
+ <!-- Color for the "No recent apps" text in the recent apps list. -->
+ <color name="no_recent_apps">#bebebe</color>
+
+ <!-- Colors for the system bars -->
+ <color name="status_bar_background_opaque">@color/system_bar_background_opaque</color>
+ <color name="status_bar_background_semi_transparent">
+ @color/system_bar_background_semi_transparent
+ </color>
+ <color name="status_bar_background_transparent">@color/system_bar_background_transparent</color>
+ <color name="navigation_bar_background_opaque">@color/system_bar_background_opaque</color>
+ <color name="navigation_bar_background_semi_transparent">
+ @color/system_bar_background_semi_transparent
+ </color>
+ <color name="navigation_bar_background_transparent">
+ @color/system_bar_background_transparent
+ </color>
+
+ <!-- Expanded Status Bar Weather Text Colors -->
+ <color name="status_bar_temperature_text_color">#FFFFFFFF</color>
+ <color name="status_bar_temperature_location_text_color">#FFFFFFFF</color>
+
+ <!-- tint of the Visualizer tile -->
+ <color name="visualizer_fill_color">#96FFFFFF</color>
+
+ <!-- Background of the volume panel. See also: volume_dialog_background -->
+ <color name="volume_panel_background_color">@color/system_secondary_color</color>
+
+ <!-- Battery base color -->
+ <color name="batterymeter_base_color">#FFFFFFFF</color>
+
+ <!-- Color for notification icons -->
+ <color name="notification_icon_color">#FFFFFFFF</color>
+
+ <!-- Navigation button ripple color -->
+ <color name="navbutton_ripple_color">#FFFFFFFF</color>
+
+ <!-- Expanded Status Bar Weather Text Colors -->
+ <color name="status_bar_temperature_text_color">#FFFFFFFF</color>
+ <color name="status_bar_temperature_location_text_color">#FFFFFFFF</color>
+
+ <!-- Expanded Status Bar Alarm Status Text Color -->
+ <color name="status_bar_alarm_status_text_color">#64ffffff</color>
+
+ <!-- Expanded Status Bar Battery Level Text Color -->
+ <color name="status_bar_battery_level_text_color">#ffffff</color>
+
+ <!-- QS Toast Text color -->
+ <color name="quick_settings_toast_color">#ffbe1b</color>
+
+ <!-- SystemUI Tuner Icon Tint Color -->
+ <color name="tuner_icon_tint">#4dffffff</color>
+
+ <!-- QS Settings Text Colors -->
+ <color name="qs_tile_reset_to_default_text_color">@android:color/white</color>
+ <color name="qs_title_text_color">#80cbc4</color>
+ <color name="qs_edit_header_instruction_text_color">@android:color/white</color>
+ <color name="qs_row_text_color">@android:color/white</color>
+
+ <!-- natural color of the trash can -->
+ <color name="qs_tile_trash_normal_tint">@android:color/transparent</color>
+ <!-- tint to color trash can when tile is hovering over it -->
+ <color name="qs_tile_trash_delete_tint">#EF5350</color>
+ <!-- Tint to color trash can when hovering edit tile, user cannot delete it.
+ Transparent because we have an animation by default. -->
+ <color name="qs_tile_trash_delete_tint_warning">@android:color/transparent</color>
+
+ <!-- More exposed hard coded colors -->
+ <color name="toggle_slider_text_color">#666666</color>
+ <color name="no_recent_apps_text_color">@android:color/holo_blue_light</color>
+ <color name="no_notifications_text_color">#ffffff</color>
+ <color name="keyguard_overflow_number_text_color">#ff686868</color>
+ <color name="keyguard_carrier_text_color">#ffffff</color>
+ <color name="screen_pinning_description_text_color">@android:color/white</color>
+ <color name="screen_pinning_cancel_button_text_color">@android:color/white</color>
+ <color name="recents_empty_message_text_color">#ffffffff</color>
+ <color name="task_view_header_text_color">#ffffffff</color>
+ <color name="recents_search_bar_label_text_color">#99ffffff</color>
+ <color name="recents_empty_background_color">#80000000</color>
+ <color name="qs_tile_edit_header_instruction_text_color">@android:color/white</color>
+ <color name="mland_scorefield_text_color">#FFAAAAAA</color>
+ <color name="keyguard_indication_text_color">#ffffff</color>
+ <color name="speedbump_line_divider">#6fdddddd</color>
+ <color name="quick_settings_panel_background">#0000</color>
+ <color name="lockscreen_message_text_color">#424242</color>
+ <color name="lockscreen_middle_button_tint_color">#666666</color>
+ <color name="play_button_image_tint_color">#000000</color>
+ <color name="play_button_text_color">#000000</color>
+ <color name="zen_ic_close_tint_color">@android:color/white</color>
+ <color name="header_debug_info_text_color">#00A040</color>
+
+ <!-- QS Detailed View Text and Icon Colors -->
+ <color name="qs_detailed_default_text_color">@android:color/white</color>
+ <color name="qs_detailed_expansion_indicator_color">@color/qs_title_text_color</color>
+ <color name="qs_detailed_title_text_color">@color/qs_title_text_color</color>
+ <color name="qs_detailed_icon_tint_color">@color/qs_title_text_color</color>
+
+ <!-- Quick tile text color when the tile is disabled -->
+ <color name="qs_tile_text_disabled">#ff747474</color>
+
+ <!-- Active color for volume slider -->
+ <color name="volume_slider_active">@color/system_accent_color</color>
+
+ <!-- Play Queue -->
+ <color name="notification_guts_media_bg_color">#ff606060</color>
+ <color name="queue_background">#ff303030</color>
+ <color name="queue_background_pressed">#ff606060</color>
+
+ <color name="live_lockscreen_gradient_start">#00000000</color>
+ <color name="live_lockscreen_gradient_end">#66000000</color>
+</resources>
diff --git a/packages/SystemUI/res/values/cm_dimens.xml b/packages/SystemUI/res/values/cm_dimens.xml
new file mode 100644
index 0000000..60774cd
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_dimens.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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="detail_radio_group_padding_left">16dp</dimen>
+ <dimen name="detail_radio_group_padding">8dp</dimen>
+
+ <!-- Themes: radius of the corners of the notification dropshadow
+ See also: notification_material_rounded_rect_radius
+ -->
+ <dimen name="notification_material_shadow_rounded_rect_radius">0dp</dimen>
+
+ <dimen name="zen_mode_panel_radius">@dimen/notification_material_rounded_rect_radius</dimen>
+
+ <dimen name="status_bar_expanded_header_elevation">4dp</dimen>
+
+ <dimen name="volume_panel_z">4dp</dimen>
+
+ <!-- Side padding for the status bar header -->
+ <dimen name="notification_header_side_padding">@dimen/notification_side_padding</dimen>
+
+ <!-- Side padding for the Quick Settings panel -->
+ <dimen name="qs_panel_side_padding">@dimen/notification_side_padding</dimen>
+
+ <!-- Padding end for weather text -->
+ <dimen name="status_bar_weather_padding_end">16dp</dimen>
+
+ <!-- height of the qs page indicator -->
+ <dimen name="qs_panel_page_indicator_height">8dp</dimen>
+
+ <dimen name="lockscreen_icon_side_padding">10dp</dimen>
+ <dimen name="lockscreen_icon_size">35dp</dimen>
+ <dimen name="phone_side_padding">10dp</dimen>
+ <dimen name="phone_bottom_padding">40dp</dimen>
+ <dimen name="phone_width">320dp</dimen>
+ <dimen name="phone_height">420dp</dimen>
+
+ <dimen name="qs_detail_item_height_twoline">72dp</dimen>
+
+ <dimen name="detail_exterior_padding">8dp</dimen>
+
+ <dimen name="queue_row_height">52dp</dimen>
+ <dimen name="queue_top_shadow">3dp</dimen>
+</resources>
diff --git a/packages/SystemUI/res/values/cm_strings.xml b/packages/SystemUI/res/values/cm_strings.xml
new file mode 100644
index 0000000..2996d21
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2015 The CyanogenMod 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Content description of the data connection type HSPA+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_hspap">HSPA+</string>
+ <!-- Content description of the data connection type 4G+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_4g_plus">4G+</string>
+
+ <!-- Weather string format in expanded statusbar header -->
+ <string name="status_bar_expanded_header_weather_format"><xliff:g id="temp">%1$s</xliff:g> - <xliff:g id="condition">%2$s</xliff:g></string>
+
+ <!-- Text to use when the number in a notification info is too large
+ (greater than status_bar_notification_info_maxnum, defined in
+ values/config.xml) and must be truncated.
+ [CHAR LIMIT=4] -->
+ <string name="status_bar_notification_info_overflow" translatable="false">\u221E</string>
+
+ <!-- Strings for lockscreen shortcut hints -->
+ <string name="left_shortcut_hint">Swipe right for %1$s</string>
+ <string name="right_shortcut_hint">Swipe left for %1$s</string>
+
+ <string name="lockscreen_message">Tap an icon on the left or right to reassign a lock screen shortcut.</string>
+ <string name="lockscreen_default_target">Default</string>
+ <string name="select_application">Select application</string>
+ <string name="lockscreen_choose_action_title">Choose action</string>
+ <string name="lockscreen_none_target">None</string>
+
+ <!-- Dialog title for navigation bar button selection -->
+ <string name="navbar_dialog_title">Choose action to assign</string>
+ <string name="navbar_home_button">Home button</string>
+ <string name="navbar_recent_button">Recent button</string>
+ <string name="navbar_search_button">Search button</string>
+ <string name="navbar_back_button">Back button</string>
+ <string name="navbar_empty_button">Empty button</string>
+ <string name="navbar_menu_conditional_button">Menu (autoHide) button</string>
+ <string name="navbar_menu_always_button">Menu (alwaysShow) button</string>
+ <string name="navbar_menu_big_button">Menu button</string>
+ <string name="accessibility_dpad_left">Cursor left</string>
+ <string name="accessibility_dpad_right">Cursor right</string>
+
+ <!-- Development shortcuts -->
+ <!-- Title shown in recents popup for wiping application's data -->
+ <string name="advanced_dev_option_wipe_app">Wipe app data</string>
+ <!-- Title shown in recents popup for force stopping the application -->
+ <string name="advanced_dev_option_force_stop">Force stop</string>
+ <!-- Title shown in recents popup for uninstalling the application -->
+ <string name="advanced_dev_option_uninstall">Uninstall</string>
+
+ <!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_notification_brightness">Light brightness</string>
+
+ <!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_off">Profiles off.</string>
+ <!-- Content description of the profiles tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles">Profile: <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+
+ <!-- Announcement made when the profiles tile changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed_off">Profiles turned off.</string>
+ <!-- Announcement made when the profiles tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_profiles_changed">Profile changed to <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
+
+ <string name="quick_settings_compass_value" translatable="false"><xliff:g id="degrees">%1$.0f</xliff:g>\u00b0 <xliff:g id="direction">%2$s</xliff:g></string>
+ <string name="quick_settings_compass_init">Initializing\u2026</string>
+
+ <!-- Lights settings, LED notification -->
+ <string name="led_notification_title">Light settings</string>
+ <string name="led_notification_text">LED light enabled by settings</string>
+
+ <string name="qs_tile_edit_header_instruction">Press and hold tiles to rearrange</string>
+ <string name="quick_settings_edit_label">Edit tiles</string>
+ <string name="quick_settings_cannot_delete_edit_tile">Cannot delete the Edit tile</string>
+ <string name="qs_tiles_reset_confirmation">Reset quick settings tiles to default configuration?</string>
+ <string name="quick_settings_tile_reset_to_default">Reset to default layout</string>
+ <string name="quick_settings_title_header">Header</string>
+ <string name="quick_settings_title_tiles">Tiles</string>
+ <string name="quick_settings_title_show_weather">Show weather</string>
+ <string name="quick_settings_title_show_brightness_slider">Show brightness slider</string>
+ <string name="quick_settings_title_enlarge_first_row">Enlarge first row</string>
+
+ <!-- Screen pinning dialog description (for devices without navbar) -->
+ <string name="screen_pinning_description_no_navbar">This keeps it in view until you unpin. Touch and hold the Back button to unpin.</string>
+
+ <string name="quick_settings_custom_tile_detail_title">Custom tile</string>
+ <string name="quick_settings_remove">Remove tile</string>
+ <string name="quick_settings_network_adb_label">ADB over network</string>
+ <string name="quick_settings_compass_label">Compass</string>
+ <string name="quick_settings_nfc_label">NFC</string>
+ <string name="quick_settings_profiles">System profiles</string>
+ <string name="quick_settings_profiles_off">Profiles disabled</string>
+ <string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_battery_saver_label">Battery saver</string>
+ <!-- quick settings battery saver label to show when device is charging and tile is disabled -->
+ <string name="quick_settings_battery_saver_label_charging">Battery saver (charging)</string>
+ <string name="quick_settings_caffeine_label">Caffeine</string>
+
+ <!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_off">Sync off.</string>
+ <!-- Content description of the sync tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_on">Sync on.</string>
+
+ <!-- Announcement made when sync changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_off">Sync turned off.</string>
+ <!-- Announcement made when sync changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_sync_changed_on">Sync turned on.</string>
+ <string name="quick_settings_sync_label">Sync</string>
+ <string name="quick_settings_volume_panel_label">Volume panel</string>
+ <string name="quick_settings_usb_tether_label">USB tethering</string>
+ <string name="quick_settings_screen_timeout_detail_title">Screen timeout</string>
+ <string name="quick_settings_lockscreen_label">Lock screen</string>
+ <string name="quick_settings_ambient_display_label">Ambient display</string>
+ <string name="quick_settings_lockscreen_label_enforced">Lock screen enforced</string>
+ <string name="quick_settings_lockscreen_label_locked_by_profile">Disabled by profile</string>
+ <!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout">Screen timeout: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+
+ <!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_screen_timeout_changed">Screen timeout changed to <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="qs_tile_performance">Battery mode</string>
+
+ <!-- Content description of the battery mode tile in quick settings when on, power save mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_pwrsv">Battery mode: power save mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, balanced mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bal">Battery mode: balanced mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, performance mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_perf">Battery mode: performance mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, efficiency mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_power">Battery mode: efficiency mode.</string>
+ <!-- Content description of the battery mode tile in quick settings when on, quick mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_bias_perf">Battery mode: quick mode.</string>
+
+ <!-- Announcement made when the battery mode tile changes to power save (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_pwrsv">Battery mode changed to power save mode.</string>
+ <!-- Announcement made when the battery mode tile changes to balanced (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bal">Battery mode changed to balanced mode.</string>
+ <!-- Announcement made when the battery mode tile changes to performance (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_perf">Battery mode changed to performance mode.</string>
+ <!-- Announcement made when the battery mode tile changes to efficiency (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_power">Battery mode changed to efficiency mode.</string>
+ <!-- Announcement made when the battery mode tile changes to quick (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_perf_profile_changed_bias_perf">Battery mode changed to quick mode.</string>
+ <string name="quick_settings_performance_profile_detail_title">Battery mode</string>
+
+ <!-- Content description of the lock screen tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_off">Lock screen off.</string>
+ <!-- Content description of the lock screen tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_on">Lock screen on.</string>
+
+ <!-- Announcement made when lock screen changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_off">Lock screen turned off.</string>
+ <!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_lock_screen_changed_on">Lock screen turned on.</string>
+
+ <!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_off">Ambient display off.</string>
+ <!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_on">Ambient display on.</string>
+
+ <!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_off">Ambient display turned off.</string>
+ <!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_ambient_display_changed_on">Ambient display turned on.</string>
+
+ <!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_off">Heads up off.</string>
+ <!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_on">Heads up on.</string>
+
+ <!-- Announcement made when heads up changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_off">Heads up turned off.</string>
+ <!-- Announcement made when heads up changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_heads_up_changed_on">Heads up turned on.</string>
+
+ <!-- Content description of the caffeine tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_off">Caffeine off.</string>
+ <!-- Content description of the caffeine tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_caffeine_on">Caffeine on.</string>
+
+ <!-- Content description of the battery saver tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_off">Battery saver off.</string>
+ <!-- Content description of the battery saver tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_on">Battery saver on.</string>
+
+ <!-- Announcement made when battery saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_off">Battery saver turned off.</string>
+ <!-- Announcement made when battery saver changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_battery_saver_changed_on">Battery saver turned on.</string>
+
+ <!-- Dynamic tiles -->
+ <string name="quick_settings_dynamic_tile_detail_title">Dynamic tile</string>
+ <string name="dynamic_qs_tile_next_alarm_label">Next alarm</string>
+ <string name="dynamic_qs_tile_ime_selector_label">IME selector</string>
+ <string name="dynamic_qs_tile_su_label">Root access</string>
+ <string name="dynamic_qs_tile_adb_label" translatable="false">ADB</string>
+ <string name="dynamic_qs_tile_live_display_label" translatable="false">LiveDisplay</string>
+ <string name="dynamic_qs_tile_themes_label">Themes</string>
+
+ <string name="quick_settings_title_advanced_location">Tri-state location</string>
+
+ <!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_battery_saving">Location reporting: battery saving mode.</string>
+ <!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_gps_only">Location reporting: sensors only mode.</string>
+ <!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_high_accuracy">Location reporting: high accuracy mode.</string>
+
+ <!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_detail_title">Location mode</string>
+ <!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_battery_saving_label">Battery saving</string>
+ <!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_gps_only_label">Device only</string>
+ <!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_location_high_accuracy_label">High accuracy</string>
+
+ <!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_battery_saving">Location reporting changed to battery saving mode.</string>
+ <!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_gps_only">Location reporting changed to sensors only mode.</string>
+ <!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_quick_settings_location_changed_high_accuracy">Location reporting changed to high accuracy mode.</string>
+
+ <string name="quick_settings_tiles_category_system">System tiles</string>
+ <!-- detail header when adding a tile -->
+ <string name="quick_settings_tiles_add_tiles">Add a tile</string>
+
+ <!-- Hotspot dialog message -->
+ <string name="hotspot_apm_message">Unable to connect to cellular networks while Airplane mode is enabled. Disable Airplane mode and try again.</string>
+
+ <!-- Notification which notifies user flashlight is enabled -->
+ <string name="quick_settings_tile_flashlight_not_title">Flashlight is on</string>
+ <string name="quick_settings_tile_flashlight_not_summary">Tap to turn off</string>
+
+ <!-- Wi-Fi hotspot label when enabled -->
+ <plurals name="wifi_hotspot_connected_clients_label">
+ <item quantity="one">%1$d client</item>
+ <item quantity="other">%1$d clients</item>
+ </plurals>
+
+ <!-- CellularTile data sim not configured state string -->
+ <string name="data_sim_not_configured">No data SIM</string>
+
+ <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_dock_battery_level">Dock battery <xliff:g id="number">%d</xliff:g> percent.</string>
+
+ <!-- Play queue -->
+ <string name="play_queue_extention">Show play queue</string>
+
+ <!-- Path data for portrait battery -->
+ <string name="battery_portrait_path_full" translatable="false">M 5 2 H 19 V 21 H 5 V 2 Z</string>
+ <string name="battery_portrait_path_empty" translatable="false">M 5 21 H 19 V 21 H 5 V 21 Z</string>
+ <string name="battery_portrait_clip_path" translatable="false">M6,21V4h3V2h6v2h3v17H6z</string>
+
+ <!-- Path data for landscape battery -->
+ <string name="battery_landscape_path_full" translatable="false">M 1 4 H 25 V 20 H 1 V 4 Z</string>
+ <string name="battery_landscape_path_empty" translatable="false">M 1 4 H 1 V 20 H 1 V 4 Z</string>
+ <string name="battery_landscape_clip_path" translatable="false">M25,16h-2v4H1V4h22v4h2V16z</string>
+
+ <!-- Path data for circle battery -->
+ <string name="battery_circle_path" translatable="false">M 12 3.5 C 16.6944203736 3.5 20.5 7.30557962644 20.5 12 C 20.5 16.6944203736 16.6944203736 20.5 12 20.5 C 7.30557962644 20.5 3.5 16.6944203736 3.5 12 C 3.5 7.30557962644 7.30557962644 3.5 12 3.5 Z</string>
+
+ <!-- Weather string format in keyguard -->
+ <string name="keyguard_status_view_weather_format"><xliff:g id="temp">%1$s</xliff:g> <xliff:g id="condition">%2$s</xliff:g></string>
+
+ <string name="expand_hint">Swipe down to expand</string>
+ <string name="swipe_left_hint">Swipe left to <xliff:g id="app_name">%1$s</xliff:g></string>
+ <string name="swipe_right_hint">Swipe right to notifications</string>
+
+</resources>
diff --git a/packages/SystemUI/res/values/cm_styles.xml b/packages/SystemUI/res/values/cm_styles.xml
new file mode 100644
index 0000000..1e63418
--- /dev/null
+++ b/packages/SystemUI/res/values/cm_styles.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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>
+
+ <style name="SettingRow">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">48dp</item>
+ <item name="android:paddingLeft">16dp</item>
+ <item name="android:paddingRight">16dp</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ <item name="android:clickable">true</item>
+ </style>
+
+ <style name="TextAppearance.StatusBar.Expanded.WeatherTemp">
+ <item name="android:textSize">12sp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">@color/status_bar_temperature_text_color</item>
+ </style>
+
+ <style name="TextAppearance.StatusBar.Expanded.WeatherLocation">
+ <item name="android:textSize">12sp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">@color/status_bar_temperature_location_text_color</item>
+ </style>
+
+ <style name="TextAppearance.QS.DetailItemSub">
+ <item name="android:textSize">@dimen/qs_detail_item_secondary_text_size</item>
+ </style>
+
+ <!-- Base battery metter drawable style -->
+ <style name="BatteryMeterViewDrawable">
+ <!-- gravity used for positioning text within the battery meter -->
+ <item name="android:gravity">center</item>
+ <item name="blendMode">clear</item>
+ </style>
+ <!-- Battery meter drawable styles -->
+ <style name="BatteryMeterViewDrawable.Portrait"/>
+ <style name="BatteryMeterViewDrawable.Landscape"/>
+ <style name="BatteryMeterViewDrawable.Circle">
+ <item name="blendMode">overlay</item>
+ </style>
+
+</resources>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 0dcbe88..f116f05 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -17,7 +17,7 @@
*/
-->
<resources>
- <drawable name="notification_number_text_color">#ffffffff</drawable>
+ <drawable name="notification_number_text_color">#ff000000</drawable>
<drawable name="ticker_background_color">#ff1d1d1d</drawable>
<drawable name="system_bar_background">@color/system_bar_background_opaque</drawable>
<color name="system_bar_background_opaque">#ff000000</color>
@@ -35,6 +35,7 @@
<color name="batterymeter_bolt_color">#FFFFFFFF</color>
<color name="qs_batterymeter_frame_color">#FF404040</color>
<color name="system_primary_color">#ff263238</color><!-- blue grey 900 -->
+ <color name="system_primary_color_translucent">#90aaaaaa</color><!-- blue grey 900 -->
<color name="system_secondary_color">#ff384248</color>
<color name="system_accent_color">#ff80CBC4</color><!-- deep teal 200 -->
<color name="system_warning_color">#fff4511e</color><!-- deep orange 600 -->
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 5d06768..8ca58ba 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -117,11 +117,6 @@
<!-- The number of columns that the top level tiles span in the QuickSettings -->
<integer name="quick_settings_user_time_settings_tile_span">1</integer>
- <!-- The default tiles to display in QuickSettings -->
- <string name="quick_settings_tiles_default" translatable="false">
- wifi,bt,inversion,dnd,cell,airplane,rotation,flashlight,location,cast,hotspot
- </string>
-
<!-- The tiles to display in QuickSettings -->
<string name="quick_settings_tiles" translatable="false">default</string>
@@ -138,6 +133,9 @@
<!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
<bool name="config_show4GForLTE">true</bool>
+ <!-- Whether or not we also show rsrp level for LTE. -->
+ <bool name="config_showRsrpSignalLevelforLTE">false</bool>
+
<!-- milliseconds before the heads up notification auto-dismisses. -->
<integer name="heads_up_notification_decay">5000</integer>
@@ -239,6 +237,9 @@
<!-- Doze: check proximity sensor before pulsing? -->
<bool name="doze_proximity_check_before_pulse">true</bool>
+ <!-- Doze: check proximity sensor before pulsing from intent? -->
+ <bool name="doze_proximity_check_before_pulse_intent">false</bool>
+
<!-- Doze: should notifications be used as a pulse signal? -->
<bool name="doze_pulse_on_notifications">true</bool>
@@ -260,6 +261,12 @@
<!-- Doze: pulse parameter - how long does it take to fade in after a pickup? -->
<integer name="doze_pulse_duration_in_pickup">300</integer>
+ <!-- Doze: pulse parameter - how long does it take to fade in after an intent? -->
+ <integer name="doze_pulse_duration_in_intent">300</integer>
+
+ <!-- Doze: pulse parameter - delay to wait for the screen to wake up after an intent -->
+ <integer name="doze_pulse_delay_in_intent">200</integer>
+
<!-- Doze: pulse parameter - once faded in, how long does it stay visible? -->
<integer name="doze_pulse_duration_visible">3000</integer>
@@ -290,5 +297,11 @@
<!-- Duration of the expansion animation in the volume dialog -->
<item name="volume_expand_animation_duration" type="integer">300</item>
+ <!-- Allow Flashlight service to use wakelock -->
+ <bool name="flashlight_use_wakelock">false</bool>
+
+ <!-- Allow device to be configured to show screen on hints on the lock screen -->
+ <bool name="config_showScreenOnLockScreenHints">false</bool>
+
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 03ea73c..a7efccd 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -531,7 +531,7 @@
<dimen name="fake_shadow_size">8dp</dimen>
<!-- Padding between signal cluster and battery icon -->
- <dimen name="signal_cluster_battery_padding">7dp</dimen>
+ <dimen name="signal_cluster_battery_padding">3dp</dimen>
<!-- Padding for signal cluster and battery icon when there are not icons in signal cluster -->
<dimen name="no_signal_cluster_battery_padding">3dp</dimen>
diff --git a/packages/SystemUI/res/values/vpi__attrs.xml b/packages/SystemUI/res/values/vpi__attrs.xml
new file mode 100644
index 0000000..911df54
--- /dev/null
+++ b/packages/SystemUI/res/values/vpi__attrs.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 Jake Wharton
+ Copyright (C) 2011 Patrik Åkerfeldt
+
+ 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>
+ <attr name="centered" format="boolean" />
+ <attr name="selectedColor" format="color" />
+ <attr name="strokeWidth" format="dimension" />
+ <attr name="unselectedColor" format="color" />
+
+ <declare-styleable name="CirclePageIndicator">
+ <!-- Whether or not the indicators should be centered. -->
+ <attr name="centered" />
+ <!-- Color of the filled circle that represents the current page. -->
+ <attr name="indicatorFillColor" format="color" />
+ <!-- Color of the filled circles that represents pages. -->
+ <attr name="pageColor" format="color" />
+ <!-- Orientation of the indicator. -->
+ <attr name="android:orientation"/>
+ <!-- Radius of the circles. This is also the spacing between circles. -->
+ <attr name="radius" format="dimension" />
+ <!-- Whether or not the selected indicator snaps to the circles. -->
+ <attr name="snap" format="boolean" />
+ <!-- Color of the open circles. -->
+ <attr name="strokeColor" format="color" />
+ <!-- Width of the stroke used to draw the circles. -->
+ <attr name="strokeWidth" />
+ <!-- View background -->
+ <attr name="android:background"/>
+ </declare-styleable>
+</resources>
diff --git a/packages/SystemUI/res/values/vpi__defaults.xml b/packages/SystemUI/res/values/vpi__defaults.xml
new file mode 100644
index 0000000..7aabee4
--- /dev/null
+++ b/packages/SystemUI/res/values/vpi__defaults.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 Jake Wharton
+
+ 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>
+ <bool name="default_circle_indicator_centered">true</bool>
+ <color name="default_circle_indicator_fill_color">#ffFFFFFF</color>
+ <color name="default_circle_indicator_page_color">#ffcccccc</color>
+ <integer name="default_circle_indicator_orientation">0</integer>
+ <dimen name="default_circle_indicator_radius">3dp</dimen>
+ <bool name="default_circle_indicator_snap">false</bool>
+ <color name="default_circle_indicator_stroke_color">#ffcccccc</color>
+ <dimen name="default_circle_indicator_stroke_width">0dp</dimen>
+</resources>
diff --git a/packages/SystemUI/res/xml/tuner_prefs.xml b/packages/SystemUI/res/xml/tuner_prefs.xml
index 3a41c3c..2d70faa 100644
--- a/packages/SystemUI/res/xml/tuner_prefs.xml
+++ b/packages/SystemUI/res/xml/tuner_prefs.xml
@@ -18,59 +18,8 @@
android:title="@string/system_ui_tuner">
<Preference
- android:key="qs_tuner"
- android:title="@string/quick_settings" />
-
- <PreferenceScreen
- android:title="@string/status_bar" >
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="cast"
- android:title="@string/quick_settings_cast_title" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="hotspot"
- android:title="@string/quick_settings_hotspot_label" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="bluetooth"
- android:title="@string/quick_settings_bluetooth_label" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="zen"
- android:title="@string/quick_settings_dnd_label" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="alarm_clock"
- android:title="@string/status_bar_alarm" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="managed_profile"
- android:title="@string/status_bar_work" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="wifi"
- android:title="@string/quick_settings_wifi_label" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="ethernet"
- android:title="@string/status_bar_ethernet" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="mobile"
- android:title="@string/quick_settings_cellular_detail_title" />
-
- <com.android.systemui.tuner.StatusBarSwitch
- android:key="airplane"
- android:title="@string/status_bar_airplane" />
-
- </PreferenceScreen>
-
- <SwitchPreference
- android:key="battery_pct"
- android:title="@string/show_battery_percentage"
- android:summary="@string/show_battery_percentage_summary"
- android:persistent="false" />
+ android:key="statusbar_icon_blacklist"
+ android:title="@string/status_bar" />
<Preference
android:key="demo_mode"
diff --git a/packages/SystemUI/res/xml/tuner_statusbar_icons.xml b/packages/SystemUI/res/xml/tuner_statusbar_icons.xml
new file mode 100644
index 0000000..863c8b0
--- /dev/null
+++ b/packages/SystemUI/res/xml/tuner_statusbar_icons.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The CyanogenMod 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/status_bar">
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="cast"
+ android:title="@string/quick_settings_cast_title"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="hotspot"
+ android:title="@string/quick_settings_hotspot_label"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="bluetooth"
+ android:title="@string/quick_settings_bluetooth_label"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="zen"
+ android:title="@string/quick_settings_dnd_label"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="alarm_clock"
+ android:title="@string/status_bar_alarm"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="managed_profile"
+ android:title="@string/status_bar_work"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="wifi"
+ android:title="@string/quick_settings_wifi_label"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="ethernet"
+ android:title="@string/status_bar_ethernet"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="mobile"
+ android:title="@string/quick_settings_cellular_detail_title"/>
+
+ <com.android.systemui.tuner.StatusBarSwitch
+ android:key="airplane"
+ android:title="@string/status_bar_airplane"/>
+
+</PreferenceScreen>
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryLevelTextView.java b/packages/SystemUI/src/com/android/systemui/BatteryLevelTextView.java
new file mode 100644
index 0000000..247e965
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/BatteryLevelTextView.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui;
+
+import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.BatteryStateRegistar;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.widget.TextView;
+
+import java.text.NumberFormat;
+
+public class BatteryLevelTextView extends TextView implements
+ BatteryController.BatteryStateChangeCallback{
+
+ private BatteryStateRegistar mBatteryStateRegistar;
+ private boolean mBatteryPresent;
+
+ private boolean mBatteryCharging;
+ private boolean mForceShow;
+ private boolean mAttached;
+ private int mRequestedVisibility;
+ private int mStyle;
+ private int mPercentMode;
+
+ public BatteryLevelTextView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ // setBatteryStateRegistar (if called) will made the view visible and ready to be hidden
+ // if the view shouldn't be displayed. Otherwise this view should be hidden from start.
+ mRequestedVisibility = GONE;
+ }
+
+ public void setForceShown(boolean forceShow) {
+ mForceShow = forceShow;
+ updateVisibility();
+ }
+
+ public void setBatteryStateRegistar(BatteryStateRegistar batteryStateRegistar) {
+ mRequestedVisibility = VISIBLE;
+ mBatteryStateRegistar = batteryStateRegistar;
+ if (mAttached) {
+ mBatteryStateRegistar.addStateChangedCallback(this);
+ }
+ }
+
+ @Override
+ public void setVisibility(int visibility) {
+ mRequestedVisibility = visibility;
+ updateVisibility();
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+
+ // Respect font size setting.
+ setTextSize(TypedValue.COMPLEX_UNIT_PX,
+ getResources().getDimensionPixelSize(R.dimen.battery_level_text_size));
+ }
+
+ @Override
+ public void onBatteryLevelChanged(boolean present, int level, boolean pluggedIn,
+ boolean charging) {
+ String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);
+ setText(percentage);
+ if (mBatteryPresent != present || mBatteryCharging != charging) {
+ mBatteryPresent = present;
+ mBatteryCharging = charging;
+ updateVisibility();
+ }
+ }
+
+ @Override
+ public void onPowerSaveChanged() {
+ // Not used
+ }
+
+ @Override
+ public void onBatteryStyleChanged(int style, int percentMode) {
+ mStyle = style;
+ mPercentMode = percentMode;
+ updateVisibility();
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ if (mBatteryStateRegistar != null) {
+ mBatteryStateRegistar.addStateChangedCallback(this);
+ }
+
+ mAttached = true;
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mAttached = false;
+
+ if (mBatteryStateRegistar != null) {
+ mBatteryStateRegistar.removeStateChangedCallback(this);
+ }
+ }
+
+ private void updateVisibility() {
+ boolean showNextPercent = mBatteryPresent && (
+ mPercentMode == BatteryController.PERCENTAGE_MODE_OUTSIDE
+ || (mBatteryCharging && mPercentMode == BatteryController.PERCENTAGE_MODE_INSIDE));
+ if (mStyle == BatteryController.STYLE_GONE) {
+ showNextPercent = false;
+ } else if (mStyle == BatteryController.STYLE_TEXT) {
+ showNextPercent = true;
+ }
+
+ if (mBatteryStateRegistar != null && (showNextPercent || mForceShow)) {
+ super.setVisibility(mRequestedVisibility);
+ } else {
+ super.setVisibility(GONE);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
index 95b58e5..06c2957 100755
--- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
@@ -1,5 +1,6 @@
/*
- * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2013-14 The Android Open Source Project
+ * Copyright (C) 2016 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,63 +22,59 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.content.res.Resources;
+import android.content.res.ThemeConfig;
import android.content.res.TypedArray;
-import android.database.ContentObserver;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.RectF;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
import android.graphics.Typeface;
-import android.net.Uri;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
import android.os.BatteryManager;
import android.os.Bundle;
-import android.os.Handler;
-import android.provider.Settings;
import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Gravity;
import android.view.View;
import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.BatteryStateRegistar;
+
+import org.cyanogenmod.graphics.drawable.StopMotionVectorDrawable;
public class BatteryMeterView extends View implements DemoMode,
BatteryController.BatteryStateChangeCallback {
public static final String TAG = BatteryMeterView.class.getSimpleName();
public static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST";
- public static final String SHOW_PERCENT_SETTING = "status_bar_show_battery_percent";
-
- private static final boolean SINGLE_DIGIT_PERCENT = false;
-
- private static final int FULL = 96;
-
- private static final float BOLT_LEVEL_THRESHOLD = 0.3f; // opaque bolt below this fraction
private final int[] mColors;
- private boolean mShowPercent;
- private float mButtonHeightFraction;
- private float mSubpixelSmoothingLeft;
- private float mSubpixelSmoothingRight;
- private final Paint mFramePaint, mBatteryPaint, mWarningTextPaint, mTextPaint, mBoltPaint;
- private float mTextHeight, mWarningTextHeight;
- private int mIconTint = Color.WHITE;
+ protected boolean mShowPercent = true;
+
+ public enum BatteryMeterMode {
+ BATTERY_METER_GONE,
+ BATTERY_METER_ICON_PORTRAIT,
+ BATTERY_METER_ICON_LANDSCAPE,
+ BATTERY_METER_CIRCLE,
+ BATTERY_METER_TEXT
+ }
private int mHeight;
private int mWidth;
private String mWarningString;
private final int mCriticalLevel;
- private int mChargeColor;
- private final float[] mBoltPoints;
- private final Path mBoltPath = new Path();
-
- private final RectF mFrame = new RectF();
- private final RectF mButtonFrame = new RectF();
- private final RectF mBoltFrame = new RectF();
- private final Path mShapePath = new Path();
- private final Path mClipPath = new Path();
- private final Path mTextPath = new Path();
+ private boolean mAnimationsEnabled;
+ private BatteryStateRegistar mBatteryStateRegistar;
private BatteryController mBatteryController;
private boolean mPowerSaveEnabled;
@@ -87,8 +84,135 @@ public class BatteryMeterView extends View implements DemoMode,
private int mLightModeBackgroundColor;
private int mLightModeFillColor;
- private BatteryTracker mTracker = new BatteryTracker();
- private final SettingObserver mSettingObserver = new SettingObserver();
+ protected BatteryMeterMode mMeterMode = null;
+
+ protected boolean mAttached;
+
+ private boolean mDemoMode;
+ protected BatteryTracker mDemoTracker = new BatteryTracker();
+ protected BatteryTracker mTracker = new BatteryTracker();
+ private BatteryMeterDrawable mBatteryMeterDrawable;
+ private int mIconTint = Color.WHITE;
+
+ private int mCurrentBackgroundColor = 0;
+ private int mCurrentFillColor = 0;
+
+ protected class BatteryTracker extends BroadcastReceiver {
+ public static final int UNKNOWN_LEVEL = -1;
+
+ // current battery status
+ boolean present = true;
+ int level = UNKNOWN_LEVEL;
+ String percentStr;
+ int plugType;
+ boolean plugged;
+ int health;
+ int status;
+ String technology;
+ int voltage;
+ int temperature;
+ boolean testmode = false;
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
+ if (testmode && ! intent.getBooleanExtra("testmode", false)) return;
+
+ level = (int)(100f
+ * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
+ / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100));
+
+ present = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
+ plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
+ plugged = plugType != 0;
+ health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH,
+ BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
+ technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
+ voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0);
+ temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
+ setContentDescription(
+ context.getString(R.string.accessibility_battery_level, level));
+ if (mBatteryMeterDrawable != null) {
+ setVisibility(View.VISIBLE);
+ invalidate();
+ }
+ } else if (action.equals(ACTION_LEVEL_TEST)) {
+ testmode = true;
+ post(new Runnable() {
+ int curLevel = 0;
+ int incr = 1;
+ int saveLevel = level;
+ int savePlugged = plugType;
+ Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED);
+ @Override
+ public void run() {
+ if (curLevel < 0) {
+ testmode = false;
+ dummy.putExtra("level", saveLevel);
+ dummy.putExtra("plugged", savePlugged);
+ dummy.putExtra("testmode", false);
+ } else {
+ dummy.putExtra("level", curLevel);
+ dummy.putExtra("plugged", incr > 0
+ ? BatteryManager.BATTERY_PLUGGED_AC : 0);
+ dummy.putExtra("testmode", true);
+ }
+ getContext().sendBroadcast(dummy);
+
+ if (!testmode) return;
+
+ curLevel += incr;
+ if (curLevel == 100) {
+ incr *= -1;
+ }
+ postDelayed(this, 200);
+ }
+ });
+ }
+ }
+
+ protected boolean shouldIndicateCharging() {
+ if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
+ return true;
+ }
+ if (plugged) {
+ return status == BatteryManager.BATTERY_STATUS_FULL;
+ }
+ return false;
+ }
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ filter.addAction(ACTION_LEVEL_TEST);
+ final Intent sticky = getContext().registerReceiver(mTracker, filter);
+ if (sticky != null) {
+ // preload the battery level
+ mTracker.onReceive(getContext(), sticky);
+ }
+ if (mBatteryStateRegistar != null) {
+ mBatteryStateRegistar.addStateChangedCallback(this);
+ }
+ mAttached = true;
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ mAttached = false;
+ getContext().unregisterReceiver(mTracker);
+ if (mBatteryStateRegistar != null) {
+ mBatteryStateRegistar.removeStateChangedCallback(this);
+ }
+ }
public BatteryMeterView(Context context) {
this(context, null, 0);
@@ -104,8 +228,6 @@ public class BatteryMeterView extends View implements DemoMode,
final Resources res = context.getResources();
TypedArray atts = context.obtainStyledAttributes(attrs, R.styleable.BatteryMeterView,
defStyle, 0);
- final int frameColor = atts.getColor(R.styleable.BatteryMeterView_frameColor,
- context.getColor(R.color.batterymeter_frame_color));
TypedArray levels = res.obtainTypedArray(R.array.batterymeter_color_levels);
TypedArray colors = res.obtainTypedArray(R.array.batterymeter_color_values);
@@ -118,44 +240,9 @@ public class BatteryMeterView extends View implements DemoMode,
levels.recycle();
colors.recycle();
atts.recycle();
- updateShowPercent();
mWarningString = context.getString(R.string.battery_meter_very_low_overlay_symbol);
- mCriticalLevel = mContext.getResources().getInteger(
+ mCriticalLevel = getContext().getResources().getInteger(
com.android.internal.R.integer.config_criticalBatteryWarningLevel);
- mButtonHeightFraction = context.getResources().getFraction(
- R.fraction.battery_button_height_fraction, 1, 1);
- mSubpixelSmoothingLeft = context.getResources().getFraction(
- R.fraction.battery_subpixel_smoothing_left, 1, 1);
- mSubpixelSmoothingRight = context.getResources().getFraction(
- R.fraction.battery_subpixel_smoothing_right, 1, 1);
-
- mFramePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mFramePaint.setColor(frameColor);
- mFramePaint.setDither(true);
- mFramePaint.setStrokeWidth(0);
- mFramePaint.setStyle(Paint.Style.FILL_AND_STROKE);
-
- mBatteryPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mBatteryPaint.setDither(true);
- mBatteryPaint.setStrokeWidth(0);
- mBatteryPaint.setStyle(Paint.Style.FILL_AND_STROKE);
-
- mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- Typeface font = Typeface.create("sans-serif-condensed", Typeface.BOLD);
- mTextPaint.setTypeface(font);
- mTextPaint.setTextAlign(Paint.Align.CENTER);
-
- mWarningTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mWarningTextPaint.setColor(mColors[1]);
- font = Typeface.create("sans-serif", Typeface.BOLD);
- mWarningTextPaint.setTypeface(font);
- mWarningTextPaint.setTextAlign(Paint.Align.CENTER);
-
- mChargeColor = context.getColor(R.color.batterymeter_charge_color);
-
- mBoltPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mBoltPaint.setColor(context.getColor(R.color.batterymeter_bolt_color));
- mBoltPoints = loadBoltPoints(res);
mDarkModeBackgroundColor =
context.getColor(R.color.dark_mode_icon_color_dual_tone_background);
@@ -163,32 +250,38 @@ public class BatteryMeterView extends View implements DemoMode,
mLightModeBackgroundColor =
context.getColor(R.color.light_mode_icon_color_dual_tone_background);
mLightModeFillColor = context.getColor(R.color.light_mode_icon_color_dual_tone_fill);
- }
- @Override
- public void onAttachedToWindow() {
- super.onAttachedToWindow();
+ setAnimationsEnabled(true);
+ }
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_BATTERY_CHANGED);
- filter.addAction(ACTION_LEVEL_TEST);
- final Intent sticky = getContext().registerReceiver(mTracker, filter);
- if (sticky != null) {
- // preload the battery level
- mTracker.onReceive(getContext(), sticky);
+ protected BatteryMeterDrawable createBatteryMeterDrawable(BatteryMeterMode mode) {
+ Resources res = getResources();
+ switch (mode) {
+ case BATTERY_METER_TEXT:
+ case BATTERY_METER_GONE:
+ return null;
+ default:
+ return new AllInOneBatteryMeterDrawable(res, mode);
}
- mBatteryController.addStateChangedCallback(this);
- getContext().getContentResolver().registerContentObserver(
- Settings.System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver);
}
@Override
- public void onDetachedFromWindow() {
- super.onDetachedFromWindow();
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ int width = MeasureSpec.getSize(widthMeasureSpec);
+ int height = MeasureSpec.getSize(heightMeasureSpec);
- getContext().unregisterReceiver(mTracker);
- mBatteryController.removeStateChangedCallback(this);
- getContext().getContentResolver().unregisterContentObserver(mSettingObserver);
+ if (mMeterMode == BatteryMeterMode.BATTERY_METER_TEXT) {
+ onSizeChanged(width, height, 0, 0); // Force a size changed event
+ }
+
+ setMeasuredDimension(width, height);
+ }
+
+ public void setBatteryStateRegistar(BatteryStateRegistar batteryStateRegistar) {
+ mBatteryStateRegistar = batteryStateRegistar;
+ if (!mAttached) {
+ mBatteryStateRegistar.addStateChangedCallback(this);
+ }
}
public void setBatteryController(BatteryController batteryController) {
@@ -197,7 +290,8 @@ public class BatteryMeterView extends View implements DemoMode,
}
@Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
+ public void onBatteryLevelChanged(boolean present, int level, boolean pluggedIn,
+ boolean charging) {
// TODO: Use this callback instead of own broadcast receiver.
}
@@ -207,36 +301,80 @@ public class BatteryMeterView extends View implements DemoMode,
invalidate();
}
- private static float[] loadBoltPoints(Resources res) {
- final int[] pts = res.getIntArray(R.array.batterymeter_bolt_points);
- int maxX = 0, maxY = 0;
- for (int i = 0; i < pts.length; i += 2) {
- maxX = Math.max(maxX, pts[i]);
- maxY = Math.max(maxY, pts[i + 1]);
+ public void setAnimationsEnabled(boolean enabled) {
+ if (mAnimationsEnabled != enabled) {
+ mAnimationsEnabled = enabled;
+ setLayerType(mAnimationsEnabled ? LAYER_TYPE_HARDWARE : LAYER_TYPE_NONE, null);
+ invalidate();
}
- final float[] ptsF = new float[pts.length];
- for (int i = 0; i < pts.length; i += 2) {
- ptsF[i] = (float)pts[i] / maxX;
- ptsF[i + 1] = (float)pts[i + 1] / maxY;
+ }
+
+ @Override
+ public void onBatteryStyleChanged(int style, int percentMode) {
+ boolean showInsidePercent = percentMode == BatteryController.PERCENTAGE_MODE_INSIDE;
+ BatteryMeterMode meterMode = BatteryMeterMode.BATTERY_METER_ICON_PORTRAIT;
+
+ switch (style) {
+ case BatteryController.STYLE_CIRCLE:
+ meterMode = BatteryMeterMode.BATTERY_METER_CIRCLE;
+ break;
+ case BatteryController.STYLE_GONE:
+ meterMode = BatteryMeterMode.BATTERY_METER_GONE;
+ showInsidePercent = false;
+ break;
+ case BatteryController.STYLE_ICON_LANDSCAPE:
+ meterMode = BatteryMeterMode.BATTERY_METER_ICON_LANDSCAPE;
+ break;
+ case BatteryController.STYLE_TEXT:
+ meterMode = BatteryMeterMode.BATTERY_METER_TEXT;
+ showInsidePercent = false;
+ break;
+ default:
+ break;
}
- return ptsF;
+
+ setMode(meterMode);
+ mShowPercent = showInsidePercent;
+ invalidate();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
mHeight = h;
mWidth = w;
- mWarningTextPaint.setTextSize(h * 0.75f);
- mWarningTextHeight = -mWarningTextPaint.getFontMetrics().ascent;
+ if (mBatteryMeterDrawable != null) {
+ mBatteryMeterDrawable.onSizeChanged(w, h, oldw, oldh);
+ }
}
- private void updateShowPercent() {
- mShowPercent = 0 != Settings.System.getInt(getContext().getContentResolver(),
- SHOW_PERCENT_SETTING, 0);
- }
+ public void setMode(BatteryMeterMode mode) {
+ if (mMeterMode == mode) {
+ return;
+ }
- private int getColorForLevel(int percent) {
+ mMeterMode = mode;
+ BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker;
+ if (mode == BatteryMeterMode.BATTERY_METER_GONE ||
+ mode == BatteryMeterMode.BATTERY_METER_TEXT) {
+ setVisibility(View.GONE);
+ mBatteryMeterDrawable = null;
+ } else {
+ if (mBatteryMeterDrawable != null) {
+ mBatteryMeterDrawable.onDispose();
+ }
+ mBatteryMeterDrawable = createBatteryMeterDrawable(mode);
+ if (tracker.present) {
+ setVisibility(View.VISIBLE);
+ requestLayout();
+ invalidate();
+ } else {
+ setVisibility(View.GONE);
+ }
+ }
+ }
+ public int getColorForLevel(int percent) {
// If we are in power save mode, always use the normal color.
if (mPowerSaveEnabled) {
return mColors[mColors.length-1];
@@ -259,13 +397,11 @@ public class BatteryMeterView extends View implements DemoMode,
}
public void setDarkIntensity(float darkIntensity) {
- int backgroundColor = getBackgroundColor(darkIntensity);
- int fillColor = getFillColor(darkIntensity);
- mIconTint = fillColor;
- mFramePaint.setColor(backgroundColor);
- mBoltPaint.setColor(fillColor);
- mChargeColor = fillColor;
- invalidate();
+ if (mBatteryMeterDrawable != null) {
+ mCurrentBackgroundColor = getBackgroundColor(darkIntensity);
+ mCurrentFillColor = getFillColor(darkIntensity);
+ mBatteryMeterDrawable.setDarkIntensity(mCurrentBackgroundColor, mCurrentFillColor);
+ }
}
private int getBackgroundColor(float darkIntensity) {
@@ -283,261 +419,425 @@ public class BatteryMeterView extends View implements DemoMode,
}
@Override
- public void draw(Canvas c) {
- BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker;
- final int level = tracker.level;
-
- if (level == BatteryTracker.UNKNOWN_LEVEL) return;
-
- float drawFrac = (float) level / 100f;
- final int pt = getPaddingTop();
- final int pl = getPaddingLeft();
- final int pr = getPaddingRight();
- final int pb = getPaddingBottom();
- final int height = mHeight - pt - pb;
- final int width = mWidth - pl - pr;
-
- final int buttonHeight = (int) (height * mButtonHeightFraction);
-
- mFrame.set(0, 0, width, height);
- mFrame.offset(pl, pt);
-
- // button-frame: area above the battery body
- mButtonFrame.set(
- mFrame.left + Math.round(width * 0.25f),
- mFrame.top,
- mFrame.right - Math.round(width * 0.25f),
- mFrame.top + buttonHeight);
-
- mButtonFrame.top += mSubpixelSmoothingLeft;
- mButtonFrame.left += mSubpixelSmoothingLeft;
- mButtonFrame.right -= mSubpixelSmoothingRight;
-
- // frame: battery body area
- mFrame.top += buttonHeight;
- mFrame.left += mSubpixelSmoothingLeft;
- mFrame.top += mSubpixelSmoothingLeft;
- mFrame.right -= mSubpixelSmoothingRight;
- mFrame.bottom -= mSubpixelSmoothingRight;
-
- // set the battery charging color
- mBatteryPaint.setColor(tracker.plugged ? mChargeColor : getColorForLevel(level));
-
- if (level >= FULL) {
- drawFrac = 1f;
- } else if (level <= mCriticalLevel) {
- drawFrac = 0f;
- }
-
- final float levelTop = drawFrac == 1f ? mButtonFrame.top
- : (mFrame.top + (mFrame.height() * (1f - drawFrac)));
-
- // define the battery shape
- mShapePath.reset();
- mShapePath.moveTo(mButtonFrame.left, mButtonFrame.top);
- mShapePath.lineTo(mButtonFrame.right, mButtonFrame.top);
- mShapePath.lineTo(mButtonFrame.right, mFrame.top);
- mShapePath.lineTo(mFrame.right, mFrame.top);
- mShapePath.lineTo(mFrame.right, mFrame.bottom);
- mShapePath.lineTo(mFrame.left, mFrame.bottom);
- mShapePath.lineTo(mFrame.left, mFrame.top);
- mShapePath.lineTo(mButtonFrame.left, mFrame.top);
- mShapePath.lineTo(mButtonFrame.left, mButtonFrame.top);
-
- if (tracker.plugged) {
- // define the bolt shape
- final float bl = mFrame.left + mFrame.width() / 4.5f;
- final float bt = mFrame.top + mFrame.height() / 6f;
- final float br = mFrame.right - mFrame.width() / 7f;
- final float bb = mFrame.bottom - mFrame.height() / 10f;
- if (mBoltFrame.left != bl || mBoltFrame.top != bt
- || mBoltFrame.right != br || mBoltFrame.bottom != bb) {
- mBoltFrame.set(bl, bt, br, bb);
- mBoltPath.reset();
- mBoltPath.moveTo(
- mBoltFrame.left + mBoltPoints[0] * mBoltFrame.width(),
- mBoltFrame.top + mBoltPoints[1] * mBoltFrame.height());
- for (int i = 2; i < mBoltPoints.length; i += 2) {
- mBoltPath.lineTo(
- mBoltFrame.left + mBoltPoints[i] * mBoltFrame.width(),
- mBoltFrame.top + mBoltPoints[i + 1] * mBoltFrame.height());
+ protected void onDraw(Canvas canvas) {
+ if (mBatteryMeterDrawable != null) {
+ BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker;
+ mBatteryMeterDrawable.onDraw(canvas, tracker);
+ }
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return false;
+ }
+
+ @Override
+ public void dispatchDemoCommand(String command, Bundle args) {
+ if (getVisibility() == View.VISIBLE) {
+ if (!mDemoMode && command.equals(COMMAND_ENTER)) {
+ mDemoMode = true;
+ mDemoTracker.level = mTracker.level;
+ mDemoTracker.plugged = mTracker.plugged;
+ } else if (mDemoMode && command.equals(COMMAND_EXIT)) {
+ mDemoMode = false;
+ postInvalidate();
+ } else if (mDemoMode && command.equals(COMMAND_BATTERY)) {
+ String level = args.getString("level");
+ String plugged = args.getString("plugged");
+ if (level != null) {
+ mDemoTracker.level = Math.min(Math.max(Integer.parseInt(level), 0), 100);
+ }
+ if (plugged != null) {
+ mDemoTracker.plugged = Boolean.parseBoolean(plugged);
}
- mBoltPath.lineTo(
- mBoltFrame.left + mBoltPoints[0] * mBoltFrame.width(),
- mBoltFrame.top + mBoltPoints[1] * mBoltFrame.height());
+ postInvalidate();
}
+ }
+ }
+
+ protected interface BatteryMeterDrawable {
+ void onDraw(Canvas c, BatteryTracker tracker);
+ void onSizeChanged(int w, int h, int oldw, int oldh);
+ void onDispose();
+ void setDarkIntensity(int backgroundColor, int fillColor);
+ }
+
+ protected class AllInOneBatteryMeterDrawable implements BatteryMeterDrawable {
+ private static final boolean SINGLE_DIGIT_PERCENT = false;
+ private static final boolean SHOW_100_PERCENT = false;
+
+ private boolean mDisposed;
- float boltPct = (mBoltFrame.bottom - levelTop) / (mBoltFrame.bottom - mBoltFrame.top);
- boltPct = Math.min(Math.max(boltPct, 0), 1);
- if (boltPct <= BOLT_LEVEL_THRESHOLD) {
- // draw the bolt if opaque
- c.drawPath(mBoltPath, mBoltPaint);
+ private boolean mIsAnimating; // stores charge-animation status to remove callbacks
+
+ private float mTextX, mTextY; // precalculated position for drawText() to appear centered
+
+ private boolean mInitialized;
+
+ private Paint mTextAndBoltPaint;
+ private Paint mWarningTextPaint;
+ private Paint mClearPaint;
+
+ private LayerDrawable mBatteryDrawable;
+ private Drawable mFrameDrawable;
+ private StopMotionVectorDrawable mLevelDrawable;
+ private Drawable mBoltDrawable;
+
+ private BatteryMeterMode mMode;
+ private int mTextGravity;
+
+ public AllInOneBatteryMeterDrawable(Resources res, BatteryMeterMode mode) {
+ super();
+
+ loadBatteryDrawables(res, mode);
+
+ mMode = mode;
+ mDisposed = false;
+
+ // load text gravity and blend mode
+ int[] attrs = new int[] {android.R.attr.gravity, R.attr.blendMode};
+ int resId = getBatteryDrawableStyleResourceForMode(mode);
+ PorterDuff.Mode xferMode = PorterDuff.Mode.XOR;
+ if (resId != 0) {
+ TypedArray a = getContext().obtainStyledAttributes(
+ getBatteryDrawableStyleResourceForMode(mode), attrs);
+ mTextGravity = a.getInt(0, Gravity.CENTER);
+ xferMode = PorterDuff.intToMode(a.getInt(1,
+ PorterDuff.modeToInt(PorterDuff.Mode.XOR)));
} else {
- // otherwise cut the bolt out of the overall shape
- mShapePath.op(mBoltPath, Path.Op.DIFFERENCE);
+ mTextGravity = Gravity.CENTER;
}
+ Log.d(TAG, "mTextGravity=" + mTextGravity);
+
+ mTextAndBoltPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ Typeface font = Typeface.create("sans-serif-condensed", Typeface.BOLD);
+ mTextAndBoltPaint.setTypeface(font);
+ mTextAndBoltPaint.setTextAlign(getPaintAlignmentFromGravity(mTextGravity));
+ mTextAndBoltPaint.setXfermode(new PorterDuffXfermode(xferMode));
+ mTextAndBoltPaint.setColor(mCurrentFillColor != 0
+ ? mCurrentFillColor
+ : res.getColor(R.color.batterymeter_bolt_color));
+
+ mWarningTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ mWarningTextPaint.setColor(mColors[1]);
+ font = Typeface.create("sans-serif", Typeface.BOLD);
+ mWarningTextPaint.setTypeface(font);
+ mWarningTextPaint.setTextAlign(getPaintAlignmentFromGravity(mTextGravity));
+
+ mClearPaint = new Paint();
+ mClearPaint.setColor(0);
}
- // compute percentage text
- boolean pctOpaque = false;
- float pctX = 0, pctY = 0;
- String pctText = null;
- if (!tracker.plugged && level > mCriticalLevel && mShowPercent) {
- mTextPaint.setColor(getColorForLevel(level));
- mTextPaint.setTextSize(height *
- (SINGLE_DIGIT_PERCENT ? 0.75f
- : (tracker.level == 100 ? 0.38f : 0.5f)));
- mTextHeight = -mTextPaint.getFontMetrics().ascent;
- pctText = String.valueOf(SINGLE_DIGIT_PERCENT ? (level/10) : level);
- pctX = mWidth * 0.5f;
- pctY = (mHeight + mTextHeight) * 0.47f;
- pctOpaque = levelTop > pctY;
- if (!pctOpaque) {
- mTextPath.reset();
- mTextPaint.getTextPath(pctText, 0, pctText.length(), pctX, pctY, mTextPath);
- // cut the percentage text out of the overall shape
- mShapePath.op(mTextPath, Path.Op.DIFFERENCE);
+ @Override
+ public void onDraw(Canvas c, BatteryTracker tracker) {
+ if (mDisposed) return;
+
+ if (!mInitialized) {
+ init();
+ }
+
+ drawBattery(c, tracker);
+ if (mAnimationsEnabled) {
+ // TODO: Allow custom animations to be used
}
}
- // draw the battery shape background
- c.drawPath(mShapePath, mFramePaint);
+ @Override
+ public void onDispose() {
+ mDisposed = true;
+ }
- // draw the battery shape, clipped to charging level
- mFrame.top = levelTop;
- mClipPath.reset();
- mClipPath.addRect(mFrame, Path.Direction.CCW);
- mShapePath.op(mClipPath, Path.Op.INTERSECT);
- c.drawPath(mShapePath, mBatteryPaint);
+ @Override
+ public void setDarkIntensity(int backgroundColor, int fillColor) {
+ mIconTint = fillColor;
+ // Make bolt fully opaque for increased visibility
+ mBoltDrawable.setTint(0xff000000 | fillColor);
+ mFrameDrawable.setTint(backgroundColor);
+ updateBoltDrawableLayer(mBatteryDrawable, mBoltDrawable);
+ invalidate();
+ }
- if (!tracker.plugged) {
- if (level <= mCriticalLevel) {
- // draw the warning text
- final float x = mWidth * 0.5f;
- final float y = (mHeight + mWarningTextHeight) * 0.48f;
- c.drawText(mWarningString, x, y, mWarningTextPaint);
- } else if (pctOpaque) {
- // draw the percentage text
- c.drawText(pctText, pctX, pctY, mTextPaint);
+ @Override
+ public void onSizeChanged(int w, int h, int oldw, int oldh) {
+ init();
+ }
+
+ private boolean isThemeApplied() {
+ ThemeConfig themeConfig = ThemeConfig.getBootTheme(getContext().getContentResolver());
+ return themeConfig != null &&
+ !ThemeConfig.SYSTEM_DEFAULT.equals(themeConfig.getOverlayForStatusBar());
+ }
+
+ private void checkBatteryMeterDrawableValid(Resources res, BatteryMeterMode mode) {
+ final int resId = getBatteryDrawableResourceForMode(mode);
+ final Drawable batteryDrawable;
+ try {
+ batteryDrawable = res.getDrawable(resId);
+ } catch (Resources.NotFoundException e) {
+ throw new BatteryMeterDrawableException(res.getResourceName(resId) + " is an " +
+ "invalid drawable", e);
+ }
+
+ // check that the drawable is a LayerDrawable
+ if (!(batteryDrawable instanceof LayerDrawable)) {
+ throw new BatteryMeterDrawableException("Expected a LayerDrawable but received a " +
+ batteryDrawable.getClass().getSimpleName());
+ }
+
+ final LayerDrawable layerDrawable = (LayerDrawable) batteryDrawable;
+ final Drawable frame = layerDrawable.findDrawableByLayerId(R.id.battery_frame);
+ final Drawable level = layerDrawable.findDrawableByLayerId(R.id.battery_fill);
+ final Drawable bolt = layerDrawable.findDrawableByLayerId(
+ R.id.battery_charge_indicator);
+ // now check that the required layers exist and are of the correct type
+ if (frame == null) {
+ throw new BatteryMeterDrawableException("Missing battery_frame drawble");
+ }
+ if (bolt == null) {
+ throw new BatteryMeterDrawableException(
+ "Missing battery_charge_indicator drawable");
+ }
+ if (level != null) {
+ // check that the level drawable is an AnimatedVectorDrawable
+ if (!(level instanceof AnimatedVectorDrawable)) {
+ throw new BatteryMeterDrawableException("Expected a AnimatedVectorDrawable " +
+ "but received a " + level.getClass().getSimpleName());
+ }
+ // make sure we can stop motion animate the level drawable
+ try {
+ StopMotionVectorDrawable smvd = new StopMotionVectorDrawable(level);
+ smvd.setCurrentFraction(0.5f);
+ } catch (Exception e) {
+ throw new BatteryMeterDrawableException("Unable to perform stop motion on " +
+ "battery_fill drawable", e);
+ }
+ } else {
+ throw new BatteryMeterDrawableException("Missing battery_fill drawable");
}
}
- }
- @Override
- public boolean hasOverlappingRendering() {
- return false;
- }
+ private void loadBatteryDrawables(Resources res, BatteryMeterMode mode) {
+ if (isThemeApplied()) {
+ try {
+ checkBatteryMeterDrawableValid(res, mode);
+ } catch (BatteryMeterDrawableException e) {
+ Log.w(TAG, "Invalid themed battery meter drawable, falling back to system", e);
+ final Context context = getContext();
+ PackageManager pm = getContext().getPackageManager();
+ try {
+ res = pm.getThemedResourcesForApplication(context.getPackageName(),
+ ThemeConfig.SYSTEM_DEFAULT);
+ } catch (PackageManager.NameNotFoundException nnfe) {
+ /* ignore, this should not happen */
+ }
+ }
+ }
- private boolean mDemoMode;
- private BatteryTracker mDemoTracker = new BatteryTracker();
+ int drawableResId = getBatteryDrawableResourceForMode(mode);
+ mBatteryDrawable = (LayerDrawable) res.getDrawable(drawableResId);
+ mFrameDrawable = mBatteryDrawable.findDrawableByLayerId(R.id.battery_frame);
+ mFrameDrawable.setTint(mCurrentBackgroundColor != 0
+ ? mCurrentBackgroundColor
+ : res.getColor(R.color.batterymeter_frame_color));
+ // set the animated vector drawable we will be stop animating
+ Drawable levelDrawable = mBatteryDrawable.findDrawableByLayerId(R.id.battery_fill);
+ mLevelDrawable = new StopMotionVectorDrawable(levelDrawable);
+ mBoltDrawable = mBatteryDrawable.findDrawableByLayerId(R.id.battery_charge_indicator);
+ }
- @Override
- public void dispatchDemoCommand(String command, Bundle args) {
- if (!mDemoMode && command.equals(COMMAND_ENTER)) {
- mDemoMode = true;
- mDemoTracker.level = mTracker.level;
- mDemoTracker.plugged = mTracker.plugged;
- } else if (mDemoMode && command.equals(COMMAND_EXIT)) {
- mDemoMode = false;
- postInvalidate();
- } else if (mDemoMode && command.equals(COMMAND_BATTERY)) {
- String level = args.getString("level");
- String plugged = args.getString("plugged");
- if (level != null) {
- mDemoTracker.level = Math.min(Math.max(Integer.parseInt(level), 0), 100);
- }
- if (plugged != null) {
- mDemoTracker.plugged = Boolean.parseBoolean(plugged);
- }
- postInvalidate();
+ private void drawBattery(Canvas canvas, BatteryTracker tracker) {
+ boolean unknownStatus = tracker.status == BatteryManager.BATTERY_STATUS_UNKNOWN;
+ int level = tracker.level;
+
+ if (unknownStatus || tracker.status == BatteryManager.BATTERY_STATUS_FULL) {
+ level = 100;
+ }
+
+ mTextAndBoltPaint.setColor(getColorForLevel(level));
+
+ // Make sure we don't draw the charge indicator if not plugged in
+ Drawable d = mBatteryDrawable.findDrawableByLayerId(R.id.battery_charge_indicator);
+ if (d instanceof BitmapDrawable) {
+ // In case we are using a BitmapDrawable, which we should be unless something bad
+ // happened, we need to change the paint rather than the alpha in case the blendMode
+ // has been set to clear. Clear always clears regardless of alpha level ;)
+ BitmapDrawable bd = (BitmapDrawable) d;
+ bd.getPaint().set(tracker.plugged ? mTextAndBoltPaint : mClearPaint);
+ } else {
+ d.setAlpha(tracker.plugged ? 255 : 0);
+ }
+
+ // Now draw the level indicator
+ // set the level and tint color of the fill drawable
+ mLevelDrawable.setCurrentFraction(level / 100f);
+ mLevelDrawable.setTint(getColorForLevel(level));
+ mBatteryDrawable.draw(canvas);
+
+ // if chosen by options, draw percentage text in the middle
+ // always skip percentage when 100, so layout doesnt break
+ if (unknownStatus) {
+ mTextAndBoltPaint.setColor(getContext().getColor(R.color.batterymeter_frame_color));
+ canvas.drawText("?", mTextX, mTextY, mTextAndBoltPaint);
+
+ } else if (!tracker.plugged) {
+ drawPercentageText(canvas, tracker);
+ }
}
- }
- private final class BatteryTracker extends BroadcastReceiver {
- public static final int UNKNOWN_LEVEL = -1;
+ private void drawPercentageText(Canvas canvas, BatteryTracker tracker) {
+ final int level = tracker.level;
+ if (level > mCriticalLevel
+ && (mShowPercent && !(level == 100 && !SHOW_100_PERCENT))) {
+ // draw the percentage text
+ String pctText = String.valueOf(SINGLE_DIGIT_PERCENT ? (level/10) : level);
+ mTextAndBoltPaint.setColor(getColorForLevel(level));
+ canvas.drawText(pctText, mTextX, mTextY, mTextAndBoltPaint);
+ } else if (level <= mCriticalLevel) {
+ // draw the warning text
+ canvas.drawText(mWarningString, mTextX, mTextY, mWarningTextPaint);
+ }
+ }
- // current battery status
- int level = UNKNOWN_LEVEL;
- String percentStr;
- int plugType;
- boolean plugged;
- int health;
- int status;
- String technology;
- int voltage;
- int temperature;
- boolean testmode = false;
+ /**
+ * initializes all size dependent variables
+ */
+ private void init() {
+ // not much we can do with zero width or height, we'll get another pass later
+ if (mWidth <= 0 || mHeight <=0) return;
+
+ final float widthDiv2 = mWidth / 2f;
+ // text size is width / 2 - 2dp for wiggle room
+ final float textSize = widthDiv2 - getResources().getDisplayMetrics().density * 2;
+ mTextAndBoltPaint.setTextSize(textSize);
+ mWarningTextPaint.setTextSize(textSize);
+
+ int pLeft = getPaddingLeft();
+ Rect iconBounds = new Rect(pLeft, 0, pLeft + mWidth, mHeight);
+ mBatteryDrawable.setBounds(iconBounds);
+
+ // calculate text position
+ Rect bounds = new Rect();
+ mTextAndBoltPaint.getTextBounds("99", 0, "99".length(), bounds);
+ boolean isRtl = isLayoutRtl();
+
+ // compute mTextX based on text gravity
+ if ((mTextGravity & Gravity.START) == Gravity.START) {
+ mTextX = isRtl ? mWidth : 0;
+ } else if ((mTextGravity & Gravity.END) == Gravity.END) {
+ mTextX = isRtl ? 0 : mWidth;
+ } else if ((mTextGravity & Gravity.LEFT) == Gravity.LEFT) {
+ mTextX = 0;
+ }else if ((mTextGravity & Gravity.RIGHT) == Gravity.RIGHT) {
+ mTextX = mWidth;
+ } else {
+ mTextX = widthDiv2 + pLeft;
+ }
- @Override
- public void onReceive(Context context, Intent intent) {
- final String action = intent.getAction();
- if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
- if (testmode && ! intent.getBooleanExtra("testmode", false)) return;
+ // compute mTextY based on text gravity
+ if ((mTextGravity & Gravity.TOP) == Gravity.TOP) {
+ mTextY = bounds.height();
+ } else if ((mTextGravity & Gravity.BOTTOM) == Gravity.BOTTOM) {
+ mTextY = mHeight;
+ } else {
+ mTextY = widthDiv2 + bounds.height() / 2.0f;
+ }
- level = (int)(100f
- * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
- / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100));
+ updateBoltDrawableLayer(mBatteryDrawable, mBoltDrawable);
- plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
- plugged = plugType != 0;
- health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH,
- BatteryManager.BATTERY_HEALTH_UNKNOWN);
- status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
- BatteryManager.BATTERY_STATUS_UNKNOWN);
- technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
- voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0);
- temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
+ mInitialized = true;
+ }
- setContentDescription(
- context.getString(R.string.accessibility_battery_level, level));
- postInvalidate();
- } else if (action.equals(ACTION_LEVEL_TEST)) {
- testmode = true;
- post(new Runnable() {
- int curLevel = 0;
- int incr = 1;
- int saveLevel = level;
- int savePlugged = plugType;
- Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED);
- @Override
- public void run() {
- if (curLevel < 0) {
- testmode = false;
- dummy.putExtra("level", saveLevel);
- dummy.putExtra("plugged", savePlugged);
- dummy.putExtra("testmode", false);
- } else {
- dummy.putExtra("level", curLevel);
- dummy.putExtra("plugged", incr > 0 ? BatteryManager.BATTERY_PLUGGED_AC
- : 0);
- dummy.putExtra("testmode", true);
- }
- getContext().sendBroadcast(dummy);
+ private int getBatteryDrawableResourceForMode(BatteryMeterMode mode) {
+ switch (mode) {
+ case BATTERY_METER_ICON_LANDSCAPE:
+ return R.drawable.ic_battery_landscape;
+ case BATTERY_METER_CIRCLE:
+ return R.drawable.ic_battery_circle;
+ case BATTERY_METER_ICON_PORTRAIT:
+ return R.drawable.ic_battery_portrait;
+ default:
+ return 0;
+ }
+ }
- if (!testmode) return;
+ private int getBatteryDrawableStyleResourceForMode(BatteryMeterMode mode) {
+ switch (mode) {
+ case BATTERY_METER_ICON_LANDSCAPE:
+ return R.style.BatteryMeterViewDrawable_Landscape;
+ case BATTERY_METER_CIRCLE:
+ return R.style.BatteryMeterViewDrawable_Circle;
+ case BATTERY_METER_ICON_PORTRAIT:
+ return R.style.BatteryMeterViewDrawable_Portrait;
+ default:
+ return R.style.BatteryMeterViewDrawable;
+ }
+ }
- curLevel += incr;
- if (curLevel == 100) {
- incr *= -1;
- }
- postDelayed(this, 200);
- }
- });
+ private Paint.Align getPaintAlignmentFromGravity(int gravity) {
+ boolean isRtl = isLayoutRtl();
+ if ((gravity & Gravity.START) == Gravity.START) {
+ return isRtl ? Paint.Align.RIGHT : Paint.Align.LEFT;
+ }
+ if ((gravity & Gravity.END) == Gravity.END) {
+ return isRtl ? Paint.Align.LEFT : Paint.Align.RIGHT;
}
+ if ((gravity & Gravity.LEFT) == Gravity.LEFT) return Paint.Align.LEFT;
+ if ((gravity & Gravity.RIGHT) == Gravity.RIGHT) return Paint.Align.RIGHT;
+
+ // default to center
+ return Paint.Align.CENTER;
}
- }
- private final class SettingObserver extends ContentObserver {
- public SettingObserver() {
- super(new Handler());
+ // Creates a BitmapDrawable of the bolt so we can make use of the XOR xfer mode with vector
+ // based drawables
+ private void updateBoltDrawableLayer(LayerDrawable batteryDrawable, Drawable boltDrawable) {
+ BitmapDrawable newBoltDrawable;
+ if (boltDrawable instanceof BitmapDrawable) {
+ newBoltDrawable = (BitmapDrawable) boltDrawable.mutate();
+ } else {
+ Bitmap boltBitmap = createBoltBitmap(boltDrawable);
+ if (boltBitmap == null) {
+ // not much to do with a null bitmap so keep original bolt for now
+ return;
+ }
+ Rect bounds = boltDrawable.getBounds();
+ newBoltDrawable = new BitmapDrawable(getResources(), boltBitmap);
+ newBoltDrawable.setBounds(bounds);
+ }
+ newBoltDrawable.getPaint().set(mTextAndBoltPaint);
+ batteryDrawable.setDrawableByLayerId(R.id.battery_charge_indicator, newBoltDrawable);
}
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- super.onChange(selfChange, uri);
- updateShowPercent();
- postInvalidate();
+ private Bitmap createBoltBitmap(Drawable boltDrawable) {
+ // not much we can do with zero width or height, we'll get another pass later
+ if (mWidth <= 0 || mHeight <= 0) return null;
+
+ Bitmap bolt;
+ if (!(boltDrawable instanceof BitmapDrawable)) {
+ int pLeft = getPaddingLeft();
+ Rect iconBounds = new Rect(pLeft, 0, pLeft + mWidth, mHeight);
+ bolt = Bitmap.createBitmap(iconBounds.width(), iconBounds.height(),
+ Bitmap.Config.ARGB_8888);
+ if (bolt != null) {
+ Canvas c = new Canvas(bolt);
+ c.drawColor(-1, PorterDuff.Mode.CLEAR);
+ boltDrawable.draw(c);
+ }
+ } else {
+ bolt = ((BitmapDrawable) boltDrawable).getBitmap();
+ }
+
+ return bolt;
}
- }
+ private class BatteryMeterDrawableException extends RuntimeException {
+ public BatteryMeterDrawableException(String detailMessage) {
+ super(detailMessage);
+ }
+
+ public BatteryMeterDrawableException(String detailMessage, Throwable throwable) {
+ super(detailMessage, throwable);
+ }
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/DockBatteryLevelTextView.java b/packages/SystemUI/src/com/android/systemui/DockBatteryLevelTextView.java
new file mode 100644
index 0000000..1678e94
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/DockBatteryLevelTextView.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui;
+
+import android.content.Context;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+
+public class DockBatteryLevelTextView extends BatteryLevelTextView {
+
+ public DockBatteryLevelTextView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setPaintFlags(getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/DockBatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/DockBatteryMeterView.java
new file mode 100755
index 0000000..a29b16c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/DockBatteryMeterView.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.BatteryManager;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class DockBatteryMeterView extends BatteryMeterView {
+
+ private BatteryManager mBatteryService;
+ private final boolean mSupported;
+
+ private class DockBatteryTracker extends BatteryTracker {
+
+ public DockBatteryTracker() {
+ super();
+ present = false;
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
+ if (testmode && ! intent.getBooleanExtra("testmode", false)) return;
+
+ if (mSupported) {
+ level = (int)(100f
+ * intent.getIntExtra(BatteryManager.EXTRA_DOCK_LEVEL, 0)
+ / intent.getIntExtra(BatteryManager.EXTRA_DOCK_SCALE, 100));
+
+ present = intent.getBooleanExtra(BatteryManager.EXTRA_DOCK_PRESENT, false);
+ plugType = intent.getIntExtra(BatteryManager.EXTRA_DOCK_PLUGGED, 0);
+ // We need to add a extra check over the status because of dock batteries
+ // PlugType doesn't means that the dock battery is charging (some devices
+ // doesn't charge under dock usb)
+ plugged = plugType != 0 && (status == BatteryManager.BATTERY_STATUS_CHARGING ||
+ status == BatteryManager.BATTERY_STATUS_FULL);
+ health = intent.getIntExtra(BatteryManager.EXTRA_DOCK_HEALTH,
+ BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ status = intent.getIntExtra(BatteryManager.EXTRA_DOCK_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
+ technology = intent.getStringExtra(BatteryManager.EXTRA_DOCK_TECHNOLOGY);
+ voltage = intent.getIntExtra(BatteryManager.EXTRA_DOCK_VOLTAGE, 0);
+ temperature = intent.getIntExtra(BatteryManager.EXTRA_DOCK_TEMPERATURE, 0);
+
+
+ if (present && (mMeterMode != BatteryMeterMode.BATTERY_METER_GONE &&
+ mMeterMode != BatteryMeterMode.BATTERY_METER_TEXT)) {
+ setContentDescription(context.getString(
+ R.string.accessibility_dock_battery_level, level));
+ setVisibility(View.VISIBLE);
+ invalidate();
+ } else {
+ setContentDescription(null);
+ setVisibility(View.GONE);
+ }
+ } else {
+ setContentDescription(null);
+ setVisibility(View.GONE);
+
+ // If dock is not supported then we don't need this receiver anymore
+ getContext().unregisterReceiver(this);
+ }
+ } else if (action.equals(ACTION_LEVEL_TEST)) {
+ testmode = true;
+ post(new Runnable() {
+ int curLevel = 0;
+ int incr = 1;
+ int saveLevel = level;
+ int savePlugged = plugType;
+ Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED);
+ @Override
+ public void run() {
+ if (curLevel < 0) {
+ testmode = false;
+ dummy.putExtra("level", saveLevel);
+ dummy.putExtra("plugged", savePlugged);
+ dummy.putExtra("testmode", false);
+ } else {
+ dummy.putExtra("level", curLevel);
+ dummy.putExtra("plugged", incr > 0
+ ? BatteryManager.BATTERY_DOCK_PLUGGED_AC : 0);
+ dummy.putExtra("testmode", true);
+ }
+ getContext().sendBroadcast(dummy);
+
+ if (!testmode) return;
+
+ curLevel += incr;
+ if (curLevel == 100) {
+ incr *= -1;
+ }
+ postDelayed(this, 200);
+ }
+ });
+ }
+ }
+ }
+
+ public DockBatteryMeterView(Context context) {
+ this(context, null, 0);
+ }
+
+ public DockBatteryMeterView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public DockBatteryMeterView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ mBatteryService = ((BatteryManager) context.getSystemService(Context.BATTERY_SERVICE));
+ mSupported = mBatteryService.isDockBatterySupported();
+ mDemoTracker = new DockBatteryTracker();
+ mTracker = new DockBatteryTracker();
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ // We already unregistered the listener once when we decided
+ // support was absent. Don't do it again.
+ if (mSupported) {
+ super.onDetachedFromWindow();
+ }
+ }
+
+ @Override
+ public void setMode(BatteryMeterMode mode) {
+ super.setMode(mode);
+ int visibility = getVisibility();
+ if (visibility == View.VISIBLE && !mSupported) {
+ setVisibility(View.GONE);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags b/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags
index a584cf6..a08d4b7 100644
--- a/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags
+++ b/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags
@@ -51,3 +51,28 @@ option java_package com.android.systemui;
# SearchPanelView.java
# ---------------------------
36050 sysui_searchpanel_touch (type|1),(x|1),(y|1)
+
+# ---------------------------
+# LiveLockScreenController.java
+# ---------------------------
+# sysui_lls_keyguard_showing
+## screenOn: 0:screen turned off
+## 1:screen turned on
+36060 sysui_lls_keyguard_showing (screenOn|1)
+# sysui_lls_keyguard_dismissed: Logged when user unlocks the device
+## onLls: 0:dismissed while showing notifications
+## 1:dismissed while user interacting with LLS
+36061 sysui_lls_keyguard_dismissed (onLls|1)
+# sysui_lls_notification_panel_shown: Logged when the notification panel is swiped in and out
+## shown: 0:panel is hidden
+## 1:panel is visible
+36062 sysui_lls_notification_panel_shown (shown|1)
+
+# ---------------------------
+# RecentsView.java
+# ---------------------------
+36070 sysui_recents_event (what|1)
+## what: 1: OPEN
+## 2: CLOSE
+## 3: CHOSE_TASK
+## 4: CLOSE_ALL_TASKS
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 1dca149..5911916 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -36,6 +36,7 @@ import android.view.ViewConfiguration;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.ExpandableView;
import com.android.systemui.statusbar.FlingAnimationUtils;
+import com.android.systemui.statusbar.MediaExpandableNotificationRow;
import com.android.systemui.statusbar.policy.ScrollAdapter;
public class ExpandHelper implements Gefingerpoken {
@@ -96,7 +97,7 @@ public class ExpandHelper implements Gefingerpoken {
private float mCurrentHeight;
private int mSmallSize;
- private int mLargeSize;
+ private int mLargeSize, mInitialLargeSize;
private float mMaximumStretch;
private boolean mOnlyMovements;
@@ -161,6 +162,7 @@ public class ExpandHelper implements Gefingerpoken {
mSmallSize = small;
mMaximumStretch = mSmallSize * STRETCH_INTERVAL;
mLargeSize = large;
+ mInitialLargeSize = large;
mContext = context;
mCallback = callback;
mScaler = new ViewScaler();
@@ -511,7 +513,14 @@ public class ExpandHelper implements Gefingerpoken {
mCurrentHeight = mOldHeight;
if (mCallback.canChildBeExpanded(v)) {
if (DEBUG) Log.d(TAG, "working on an expandable child");
- mNaturalHeight = mScaler.getNaturalHeight(mLargeSize);
+ if (v instanceof MediaExpandableNotificationRow) {
+ final int maxHeight = ((MediaExpandableNotificationRow) v).getMaxContentHeight();
+ mLargeSize = maxHeight;
+ mNaturalHeight = maxHeight;
+ } else {
+ mLargeSize = mInitialLargeSize;
+ mNaturalHeight = mScaler.getNaturalHeight(mLargeSize);
+ }
} else {
if (DEBUG) Log.d(TAG, "working on a non-expandable child");
mNaturalHeight = mOldHeight;
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index 8556afc..5a6f3c9 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -236,7 +236,9 @@ public class ImageWallpaper extends WallpaperService {
Log.d(TAG, "Visibility changed to visible=" + visible);
}
mVisible = visible;
- drawFrame();
+ if (visible) {
+ drawFrame();
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index 33f6564..c3e5043 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -45,9 +45,15 @@ public class SwipeHelper implements Gefingerpoken {
public static final int X = 0;
public static final int Y = 1;
+ public static final int SWIPE_ZONE_LEFT = 0x1;
+ public static final int SWIPE_ZONE_RIGHT = 0x2;
+ public static final int SWIPE_ZONE_TOP = 0x4;
+ public static final int SWIPE_ZONE_BOTTOM = 0x8;
private static LinearInterpolator sLinearInterpolator = new LinearInterpolator();
private final Interpolator mFastOutLinearInInterpolator;
+ private final int mTouchSlop;
+ private int mSwipeZone;
private float SWIPE_ESCAPE_VELOCITY = 100f; // dp/sec
private int DEFAULT_ESCAPE_ANIMATION_DURATION = 200; // ms
@@ -69,6 +75,7 @@ public class SwipeHelper implements Gefingerpoken {
private VelocityTracker mVelocityTracker;
private float mInitialTouchPos;
+ private float mPerpendicularInitialTouchPos;
private boolean mDragging;
private View mCurrView;
private View mCurrAnimView;
@@ -84,6 +91,8 @@ public class SwipeHelper implements Gefingerpoken {
private int mFalsingThreshold;
private boolean mTouchAboveFalsingThreshold;
+ private float mSwipeProgressFadeEnd;
+
public SwipeHelper(int swipeDirection, Callback callback, Context context) {
mCallback = callback;
mHandler = new Handler();
@@ -91,12 +100,28 @@ public class SwipeHelper implements Gefingerpoken {
mVelocityTracker = VelocityTracker.obtain();
mDensityScale = context.getResources().getDisplayMetrics().density;
mPagingTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
+ mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
mLongPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); // extra long-press!
mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context,
android.R.interpolator.fast_out_linear_in);
mFalsingThreshold = context.getResources().getDimensionPixelSize(
R.dimen.swipe_helper_falsing_threshold);
+ if (swipeDirection == X) {
+ mSwipeZone = SWIPE_ZONE_LEFT | SWIPE_ZONE_RIGHT;
+ } else {
+ mSwipeZone = SWIPE_ZONE_TOP | SWIPE_ZONE_BOTTOM;
+ }
+ mSwipeProgressFadeEnd = SWIPE_PROGRESS_FADE_END;
+ }
+
+ public SwipeHelper(int swipeDirection, int swipeZone, Callback callback, Context context) {
+ this(swipeDirection, callback, context);
+ mSwipeZone = swipeZone;
+ }
+
+ public boolean isDragging() {
+ return mDragging;
}
public void setLongPressListener(LongPressListener listener) {
@@ -115,6 +140,10 @@ public class SwipeHelper implements Gefingerpoken {
return mSwipeDirection == X ? ev.getX() : ev.getY();
}
+ private float getPerpendicularPos(MotionEvent ev) {
+ return mSwipeDirection == X ? ev.getY() : ev.getX();
+ }
+
private float getTranslation(View v) {
return mSwipeDirection == X ? v.getTranslationX() : v.getTranslationY();
}
@@ -158,7 +187,7 @@ public class SwipeHelper implements Gefingerpoken {
private float getSwipeProgressForOffset(View view) {
float viewSize = getSize(view);
- final float fadeSize = SWIPE_PROGRESS_FADE_END * viewSize;
+ final float fadeSize = mSwipeProgressFadeEnd * viewSize;
float result = 1.0f;
float pos = getTranslation(view);
if (pos >= viewSize * SWIPE_PROGRESS_FADE_START) {
@@ -236,6 +265,7 @@ public class SwipeHelper implements Gefingerpoken {
mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
mVelocityTracker.addMovement(ev);
mInitialTouchPos = getPos(ev);
+ mPerpendicularInitialTouchPos = getPerpendicularPos(ev);
if (mLongPressListener != null) {
if (mWatchLongPress == null) {
@@ -413,11 +443,30 @@ public class SwipeHelper implements Gefingerpoken {
case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_MOVE:
if (mCurrView != null) {
+ float pos = getPos(ev);
+ float altPos = getPerpendicularPos(ev);
float delta = getPos(ev) - mInitialTouchPos;
float absDelta = Math.abs(delta);
if (absDelta >= getFalsingThreshold()) {
mTouchAboveFalsingThreshold = true;
}
+
+ boolean touchBeyondZoneLimit = true;
+ if (mSwipeDirection == X) {
+ if ((mSwipeZone & SWIPE_ZONE_RIGHT) == 0 && pos > mInitialTouchPos) {
+ touchBeyondZoneLimit = false;
+ } else if ((mSwipeZone & SWIPE_ZONE_LEFT) == 0 && pos < mInitialTouchPos) {
+ touchBeyondZoneLimit = false;
+ }
+ } else {
+ if ((mSwipeZone & SWIPE_ZONE_TOP) == 0 && altPos < mPerpendicularInitialTouchPos) {
+ touchBeyondZoneLimit = false;
+ } else if ((mSwipeZone & SWIPE_ZONE_BOTTOM) == 0 && pos > mInitialTouchPos) {
+ touchBeyondZoneLimit = false;
+ }
+ }
+ if (!touchBeyondZoneLimit) return false;
+
// don't let items that can't be dismissed be dragged more than
// maxScrollDistance
if (CONSTRAIN_SWIPE && !mCallback.canChildBeDismissed(mCurrView)) {
@@ -470,6 +519,10 @@ public class SwipeHelper implements Gefingerpoken {
return true;
}
+ public void setSwipeProgressFadeEnd(float end) {
+ mSwipeProgressFadeEnd = end;
+ }
+
private int getFalsingThreshold() {
float factor = mCallback.getFalsingThresholdFactor();
return (int) (mFalsingThreshold * factor);
@@ -505,6 +558,49 @@ public class SwipeHelper implements Gefingerpoken {
float getFalsingThresholdFactor();
}
+ public static abstract class SimpleCallback implements Callback {
+ public abstract View getChildAtPosition(MotionEvent ev);
+ public abstract View getChildContentView(View v);
+
+ @Override
+ public boolean canChildBeDismissed(View v) {
+ return false;
+ }
+
+ @Override
+ public boolean isAntiFalsingNeeded() {
+ return false;
+ }
+
+ @Override
+ public void onBeginDrag(View v) {
+ }
+
+ @Override
+ public void onChildDismissed(View v) {
+ }
+
+ @Override
+ public void onDragCancelled(View v) {
+ }
+
+ @Override
+ public void onChildSnappedBack(View animView) {
+ }
+
+ @Override
+ public boolean updateSwipeProgress(View animView,
+ boolean dismissable,
+ float swipeProgress) {
+ return false;
+ }
+
+ @Override
+ public float getFalsingThresholdFactor() {
+ return 0;
+ }
+ }
+
/**
* Equivalent to View.OnLongClickListener with coordinates
*/
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 0b066af..565fbd7 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
+import android.content.res.ThemeConfig;
import android.os.SystemProperties;
import android.util.Log;
@@ -58,6 +59,7 @@ public class SystemUIApplication extends Application {
private boolean mServicesStarted;
private boolean mBootCompleted;
private final Map<Class<?>, Object> mComponents = new HashMap<Class<?>, Object>();
+ private Configuration mConfig;
@Override
public void onCreate() {
@@ -85,6 +87,7 @@ public class SystemUIApplication extends Application {
}
}
}, filter);
+ mConfig = new Configuration(getResources().getConfiguration());
}
/**
@@ -134,6 +137,12 @@ public class SystemUIApplication extends Application {
@Override
public void onConfigurationChanged(Configuration newConfig) {
+ if (isThemeChange(mConfig, newConfig)) {
+ // theme resource changed so recreate styles and attributes
+ recreateTheme();
+ }
+
+ mConfig.setTo(newConfig);
if (mServicesStarted) {
int len = mServices.length;
for (int i = 0; i < len; i++) {
@@ -150,4 +159,11 @@ public class SystemUIApplication extends Application {
public SystemUI[] getServices() {
return mServices;
}
+
+ private static boolean isThemeChange(Configuration oldConfig, Configuration newConfig) {
+ final ThemeConfig oldThemeConfig = oldConfig != null ? oldConfig.themeConfig : null;
+ final ThemeConfig newThemeConfig = newConfig != null ? newConfig.themeConfig : null;
+
+ return newThemeConfig != null && !newThemeConfig.equals(oldThemeConfig);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/cm/GlowBackground.java b/packages/SystemUI/src/com/android/systemui/cm/GlowBackground.java
new file mode 100644
index 0000000..8b4bf06
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/GlowBackground.java
@@ -0,0 +1,83 @@
+package com.android.systemui.cm;
+
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.drawable.Drawable;
+import android.view.animation.AnticipateOvershootInterpolator;
+
+public class GlowBackground extends Drawable implements ValueAnimator.AnimatorUpdateListener {
+
+ private static final int MAX_CIRCLE_SIZE = 150;
+
+ private final Paint mPaint;
+ private Animator mAnimator;
+ private float mCircleSize;
+
+ public GlowBackground(int color) {
+ mPaint = new Paint();
+ mPaint.setColor(color);
+ }
+
+ private void startAnimation(boolean hide) {
+ if (mAnimator != null) {
+ mAnimator.cancel();
+ }
+ if (hide && mCircleSize == 0f) {
+ return;
+ } else if (!hide && mCircleSize == MAX_CIRCLE_SIZE) {
+ return;
+ }
+ mAnimator = getAnimator(hide);
+ mAnimator.start();
+ }
+
+ private Animator getAnimator(boolean hide) {
+ float start = mCircleSize;
+ float end = MAX_CIRCLE_SIZE;
+ if (hide) {
+ end = 0f;
+ }
+ ValueAnimator animator = ObjectAnimator.ofFloat(start, end);
+ animator.setInterpolator(new AnticipateOvershootInterpolator());
+ animator.setDuration(300);
+ animator.addUpdateListener(this);
+ return animator;
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ canvas.drawCircle(getBounds().width() / 2, getBounds().height() / 2, mCircleSize, mPaint);
+ }
+
+ @Override
+ public void setAlpha(int i) {
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter colorFilter) {
+ }
+
+ @Override
+ public int getOpacity() {
+ return 0;
+ }
+
+ @Override
+ public void onAnimationUpdate(ValueAnimator valueAnimator) {
+ mCircleSize = (Float) valueAnimator.getAnimatedValue();
+ invalidateSelf();
+ }
+
+ public void hideGlow() {
+ startAnimation(true);
+ }
+
+ public void showGlow() {
+ startAnimation(false);
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsActivity.java b/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsActivity.java
new file mode 100644
index 0000000..3cd86fe
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsActivity.java
@@ -0,0 +1,265 @@
+package com.android.systemui.cm;
+
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.cm.ShortcutPickHelper;
+import com.android.systemui.R;
+import com.android.systemui.cm.LockscreenShortcutsHelper.Shortcuts;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import java.util.ArrayList;
+
+public class LockscreenShortcutsActivity extends Activity implements View.OnClickListener,
+ ShortcutPickHelper.OnPickListener, View.OnTouchListener, LockscreenShortcutsHelper.OnChangeListener {
+
+ private static final int[] sIconIds = new int[]{R.id.left_button, R.id.right_button};
+ private static final String ACTION_APP = "action_app";
+
+ private ActionHolder mActions;
+ private ShortcutPickHelper mPicker;
+ private LockscreenShortcutsHelper mShortcutHelper;
+ private View mSelectedView;
+ private ColorMatrixColorFilter mFilter;
+ private ColorStateList mDefaultTintList;
+ private AssistUtils mAssistUtils;
+
+ @Override
+ public void shortcutPicked(String uri, String friendlyName, boolean isApplication) {
+ onTargetChange(uri);
+ }
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ GlowBackground background = (GlowBackground) v.getBackground();
+ background.showGlow();
+ break;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ background = (GlowBackground) v.getBackground();
+ background.hideGlow();
+ break;
+ }
+ return false;
+ }
+
+ @Override
+ public void onChange() {
+ updateDrawables();
+ }
+
+ private class ActionHolder {
+ private ArrayList<CharSequence> mAvailableEntries = new ArrayList<CharSequence>();
+ private ArrayList<String> mAvailableValues = new ArrayList<String>();
+
+ public void addAction(String action, int entryResId) {
+ mAvailableEntries.add(getString(entryResId));
+ mAvailableValues.add(action);
+ }
+
+ public int getActionIndex(String action) {
+ int count = mAvailableValues.size();
+ for (int i = 0; i < count; i++) {
+ if (TextUtils.equals(mAvailableValues.get(i), action)) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+
+ public String getAction(int index) {
+ if (index > mAvailableValues.size()) {
+ return null;
+ }
+
+ return mAvailableValues.get(index);
+ }
+
+ public CharSequence[] getEntries() {
+ return mAvailableEntries.toArray(new CharSequence[mAvailableEntries.size()]);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.lockscreen_shortcuts);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ mPicker = new ShortcutPickHelper(this, this);
+ mShortcutHelper = new LockscreenShortcutsHelper(this, this);
+ ColorMatrix cm = new ColorMatrix();
+ cm.setSaturation(0);
+ mFilter = new ColorMatrixColorFilter(cm);
+ ImageView unlockButton = (ImageView) findViewById(R.id.middle_button);
+ mDefaultTintList = unlockButton.getImageTintList();
+ mAssistUtils = new AssistUtils(this);
+ createActionList();
+ initiateViews();
+ updateDrawables();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void initiateViews() {
+ int size = getResources().getDimensionPixelSize(R.dimen.lockscreen_icon_size);
+ for (int id : sIconIds) {
+ View v = findViewById(id);
+ v.setOnClickListener(this);
+ v.setOnTouchListener(this);
+ GlowBackground background = new GlowBackground(Color.WHITE);
+ background.setBounds(0, 0, size, size);
+ v.setBackground(background);
+ }
+ }
+
+ private void updateDrawables() {
+ for (int i = 0; i < sIconIds.length; i++) {
+ int id = sIconIds[i];
+ ImageView v = (ImageView) findViewById(id);
+ v.setImageTintList(null);
+ v.setColorFilter(null);
+ Shortcuts shortcut = Shortcuts.values()[i];
+ v.setTag(mShortcutHelper.getUriForTarget(shortcut));
+ Drawable drawable;
+ if (mShortcutHelper.isTargetEmpty(shortcut)) {
+ drawable = getResources().getDrawable(R.drawable.ic_lockscreen_shortcuts_blank);
+ } else {
+ if (shortcut == Shortcuts.LEFT_SHORTCUT &&
+ !mShortcutHelper.isTargetCustom(shortcut)) {
+ drawable = getLeftAffordanceDrawable();
+ v.setImageTintList(mDefaultTintList);
+ } else {
+ drawable = mShortcutHelper.getDrawableForTarget(shortcut);
+ if (drawable == null) {
+ drawable = (shortcut == Shortcuts.LEFT_SHORTCUT) ?
+ getLeftAffordanceDrawable()
+ : getResources().getDrawable(R.drawable.ic_camera_alt_24dp);
+ v.setImageTintList(mDefaultTintList);
+ } else {
+ v.setColorFilter(mFilter);
+ }
+ }
+ }
+ v.setImageDrawable(drawable);
+ }
+ }
+
+ private Drawable getLeftAffordanceDrawable() {
+ Drawable drawable;
+ if (canLaunchVoiceAssist()) {
+ drawable = getResources().getDrawable(R.drawable.ic_mic_26dp);
+ } else {
+ drawable = getResources().getDrawable(R.drawable.ic_phone_24dp);
+ }
+ return drawable;
+ }
+
+ private boolean canLaunchVoiceAssist() {
+ return mAssistUtils.activeServiceSupportsLaunchFromKeyguard();
+ }
+
+ private void createActionList() {
+ mActions = new ActionHolder();
+ mActions.addAction(LockscreenShortcutsHelper.NONE, R.string.lockscreen_none_target);
+ mActions.addAction(LockscreenShortcutsHelper.DEFAULT, R.string.lockscreen_default_target);
+ mActions.addAction(ACTION_APP, R.string.select_application);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ mPicker.onActivityResult(requestCode, resultCode, data);
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
+ @Override
+ public void onClick(View v) {
+ mSelectedView = v;
+
+ final GlowBackground background = (GlowBackground) mSelectedView.getBackground();
+
+ mSelectedView.postOnAnimation(new Runnable() {
+ @Override
+ public void run() {
+ background.showGlow();
+ }
+ });
+
+ final DialogInterface.OnClickListener l = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int item) {
+ onTargetChange(mActions.getAction(item));
+ dialog.dismiss();
+ }
+ };
+
+ final DialogInterface.OnCancelListener cancel = new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ onTargetChange(null);
+ }
+ };
+
+ final AlertDialog dialog = new AlertDialog.Builder(this)
+ .setTitle(R.string.lockscreen_choose_action_title)
+ .setItems(mActions.getEntries(), l)
+ .setOnCancelListener(cancel)
+ .create();
+
+ dialog.show();
+ }
+
+ private void onTargetChange(String uri) {
+ if (uri == null) {
+ if (mSelectedView != null) {
+ final GlowBackground background = (GlowBackground) mSelectedView.getBackground();
+ background.hideGlow();
+ }
+ return;
+ }
+
+ if (uri.equals(ACTION_APP)) {
+ mPicker.pickShortcut(null, null, 0, false);
+ } else {
+ mSelectedView.setTag(uri);
+ saveCustomActions();
+ GlowBackground background = (GlowBackground) mSelectedView.getBackground();
+ background.hideGlow();
+ }
+ }
+
+ private void saveCustomActions() {
+ ArrayList<String> targets = new ArrayList<String>();
+ for (int id : sIconIds) {
+ View v = findViewById(id);
+ String uri = (String) v.getTag();
+ targets.add(uri);
+ }
+ mShortcutHelper.saveTargets(targets);
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsHelper.java b/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsHelper.java
new file mode 100644
index 0000000..b47b69f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/LockscreenShortcutsHelper.java
@@ -0,0 +1,201 @@
+package com.android.systemui.cm;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.graphics.Bitmap;
+import android.graphics.ColorFilter;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.android.systemui.R;
+import cyanogenmod.providers.CMSettings;
+
+public class LockscreenShortcutsHelper {
+
+ private Handler mHandler;
+
+ public enum Shortcuts {
+ LEFT_SHORTCUT(0),
+ RIGHT_SHORTCUT(1);
+
+ private final int index;
+
+ Shortcuts(int index) {
+ this.index = index;
+ }
+ }
+
+ public static final String DEFAULT = "default";
+ public static final String NONE = "none";
+ private static final String DELIMITER = "|";
+
+ private final Context mContext;
+ private OnChangeListener mListener;
+ private List<String> mTargetActivities;
+
+ public interface OnChangeListener {
+ void onChange();
+ }
+
+ public LockscreenShortcutsHelper(Context context, OnChangeListener listener) {
+ mContext = context;
+ if (listener != null) {
+ mListener = listener;
+ mHandler = new Handler(Looper.getMainLooper());
+ registerAndFetchTargets();
+ } else {
+ fetchTargets();
+ }
+ }
+
+ public void registerAndFetchTargets() {
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.LOCKSCREEN_TARGETS), false, mObserver);
+ fetchTargets();
+ }
+
+ private ContentObserver mObserver = new ContentObserver(null) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ fetchTargets();
+ if (mListener != null && mHandler != null) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mListener.onChange();
+ }
+ });
+ }
+ }
+ };
+
+ public void cleanup() {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ }
+
+ public static class TargetInfo {
+ public Drawable icon;
+ public ColorFilter colorFilter;
+ public String uri;
+ public TargetInfo(Drawable icon, ColorFilter colorFilter, String uri) {
+ this.icon = icon;
+ this.colorFilter = colorFilter;
+ this.uri = uri;
+ }
+ }
+
+ private void fetchTargets() {
+ mTargetActivities = CMSettings.Secure.getDelimitedStringAsList(mContext.getContentResolver(),
+ CMSettings.Secure.LOCKSCREEN_TARGETS, DELIMITER);
+ int itemsToPad = Shortcuts.values().length - mTargetActivities.size();
+ if (itemsToPad > 0) {
+ for (int i = 0; i < itemsToPad; i++) {
+ mTargetActivities.add(DEFAULT);
+ }
+ }
+ }
+
+ public Drawable getDrawableForTarget(Shortcuts shortcut) {
+ Intent intent = getIntent(shortcut);
+ if (intent != null) {
+ PackageManager pm = mContext.getPackageManager();
+ ActivityInfo info = intent.resolveActivityInfo(pm, PackageManager.GET_ACTIVITIES);
+ if (info != null) {
+ return getScaledDrawable(info.loadIcon(pm));
+ }
+ }
+ return null;
+ }
+
+ public String getUriForTarget(Shortcuts shortcuts) {
+ return mTargetActivities.get(shortcuts.index);
+ }
+
+ private Drawable getScaledDrawable(Drawable drawable) {
+ if (drawable instanceof BitmapDrawable) {
+ Resources res = mContext.getResources();
+ int width = res.getDimensionPixelSize(R.dimen.keyguard_affordance_icon_width);
+ int height = res.getDimensionPixelSize(R.dimen.keyguard_affordance_icon_height);
+ return new BitmapDrawable(mContext.getResources(),
+ Bitmap.createScaledBitmap(((BitmapDrawable) drawable).getBitmap(),
+ width, height, true));
+ } else {
+ return drawable;
+ }
+ }
+
+ private String getFriendlyActivityName(Intent intent, boolean labelOnly) {
+ PackageManager pm = mContext.getPackageManager();
+ ActivityInfo ai = intent.resolveActivityInfo(pm, PackageManager.GET_ACTIVITIES);
+ String friendlyName = null;
+ if (ai != null) {
+ friendlyName = ai.loadLabel(pm).toString();
+ if (friendlyName == null && !labelOnly) {
+ friendlyName = ai.name;
+ }
+ }
+ return friendlyName != null || labelOnly ? friendlyName : intent.toUri(0);
+ }
+
+ private String getFriendlyShortcutName(Intent intent) {
+ String activityName = getFriendlyActivityName(intent, true);
+ String name = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
+
+ if (activityName != null && name != null) {
+ return activityName + ": " + name;
+ }
+ return name != null ? name : intent.toUri(0);
+ }
+
+ public String getFriendlyNameForUri(Shortcuts shortcut) {
+ Intent intent = getIntent(shortcut);
+ if (Intent.ACTION_MAIN.equals(intent.getAction())) {
+ return getFriendlyActivityName(intent, false);
+ }
+ return getFriendlyShortcutName(intent);
+ }
+
+ public boolean isTargetCustom(Shortcuts shortcut) {
+ if (mTargetActivities == null || mTargetActivities.isEmpty()) {
+ return false;
+ }
+ String action = mTargetActivities.get(shortcut.index);
+ if (DEFAULT.equals(action)) {
+ return false;
+ }
+
+ return NONE.equals(action) || getIntent(shortcut) != null;
+ }
+
+ public boolean isTargetEmpty(Shortcuts shortcut) {
+ return mTargetActivities != null &&
+ !mTargetActivities.isEmpty() &&
+ mTargetActivities.get(shortcut.index).equals(NONE);
+ }
+
+ public Intent getIntent(Shortcuts shortcut) {
+ Intent intent = null;
+ try {
+ intent = Intent.parseUri(mTargetActivities.get(shortcut.index), 0);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ return intent;
+ }
+
+ public void saveTargets(ArrayList<String> targets) {
+ CMSettings.Secure.putListAsDelimitedString(mContext.getContentResolver(),
+ CMSettings.Secure.LOCKSCREEN_TARGETS, DELIMITER, targets);
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/cm/SpamMessageProvider.java b/packages/SystemUI/src/com/android/systemui/cm/SpamMessageProvider.java
new file mode 100644
index 0000000..7afa04d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/SpamMessageProvider.java
@@ -0,0 +1,204 @@
+package com.android.systemui.cm;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteQueryBuilder;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import com.android.internal.util.cm.SpamFilter;
+import com.android.internal.util.cm.SpamFilter.SpamContract.PackageTable;
+import com.android.internal.util.cm.SpamFilter.SpamContract.NotificationTable;
+
+public class SpamMessageProvider extends ContentProvider {
+ public static final String AUTHORITY = SpamFilter.AUTHORITY;
+
+ private static final String UPDATE_COUNT_QUERY =
+ "UPDATE " + NotificationTable.TABLE_NAME +
+ " SET " + NotificationTable.LAST_BLOCKED + "=%d," +
+ NotificationTable.COUNT + "=" + NotificationTable.COUNT + "+1 " +
+ " WHERE " + NotificationTable.ID + "='%s'";
+
+ private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+ private static final int PACKAGES = 0;
+ private static final int MESSAGES = 1;
+ private static final int PACKAGE_FOR_ID = 2;
+ private static final int MESSAGE_UPDATE_COUNT = 3;
+ private static final int MESSAGE_FOR_ID = 4;
+ static {
+ sURIMatcher.addURI(AUTHORITY, "packages", PACKAGES);
+ sURIMatcher.addURI(AUTHORITY, "messages", MESSAGES);
+ sURIMatcher.addURI(AUTHORITY, "message/#", MESSAGE_FOR_ID);
+ sURIMatcher.addURI(AUTHORITY, "message/inc_count/#", MESSAGE_UPDATE_COUNT);
+ }
+
+ private SpamOpenHelper mDbHelper;
+
+ @Override
+ public boolean onCreate() {
+ mDbHelper = new SpamOpenHelper(getContext());
+ return true;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection,
+ String[] selectionArgs, String sortOrder) {
+ int match = sURIMatcher.match(uri);
+ switch (match) {
+ case PACKAGE_FOR_ID:
+ return mDbHelper.getReadableDatabase().query(PackageTable.TABLE_NAME,
+ new String[]{NotificationTable.ID}, PackageTable.PACKAGE_NAME + "=?",
+ new String[]{uri.getLastPathSegment()}, null, null, null);
+ case PACKAGES:
+ return mDbHelper.getReadableDatabase().query(PackageTable.TABLE_NAME,
+ projection, selection, selectionArgs, null, null, sortOrder);
+ case MESSAGES:
+ SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
+ qb.setTables(NotificationTable.TABLE_NAME + " LEFT OUTER JOIN " + PackageTable.TABLE_NAME +
+ " ON (" + NotificationTable.TABLE_NAME + "." + NotificationTable.PACKAGE_ID + " = "
+ + PackageTable.TABLE_NAME + "." + PackageTable.ID + ")");
+ SQLiteDatabase db = mDbHelper.getReadableDatabase();
+ return qb.query(db, projection, selection, selectionArgs,
+ null, null, null);
+ case MESSAGE_FOR_ID:
+ qb = new SQLiteQueryBuilder();
+ qb.setTables(NotificationTable.TABLE_NAME + " LEFT OUTER JOIN " + PackageTable.TABLE_NAME +
+ " ON (" + NotificationTable.TABLE_NAME + "." + NotificationTable.PACKAGE_ID + " = "
+ + PackageTable.TABLE_NAME + "." + PackageTable.ID + ")");
+ qb.appendWhere(NotificationTable.TABLE_NAME + "." + NotificationTable.ID + "="
+ + uri.getLastPathSegment());
+ return qb.query(mDbHelper.getReadableDatabase(),
+ null, null, null, null,
+ null, null);
+ default:
+ return null;
+ }
+ }
+
+ private long getPackageId(String pkg) {
+ long rowId = -1;
+ Cursor idCursor = mDbHelper.getReadableDatabase().query(PackageTable.TABLE_NAME,
+ new String[]{NotificationTable.ID}, PackageTable.PACKAGE_NAME + "=?",
+ new String[]{pkg}, null, null, null);
+ if (idCursor != null) {
+ if (idCursor.moveToFirst()) {
+ rowId = idCursor.getLong(0);
+ }
+ idCursor.close();
+ }
+ return rowId;
+ }
+
+ @Override
+ public String getType(Uri uri) {
+ return null;
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ if (values == null) {
+ return null;
+ }
+ int match = sURIMatcher.match(uri);
+ switch (match) {
+ case MESSAGES:
+ String msgText = values.getAsString(NotificationTable.MESSAGE_TEXT);
+ String packageName = values.getAsString(PackageTable.PACKAGE_NAME);
+ if (TextUtils.isEmpty(msgText) || TextUtils.isEmpty(packageName)) {
+ return null;
+ }
+ values.clear();
+ values.put(PackageTable.PACKAGE_NAME, packageName);
+ long packageId = getPackageId(packageName);
+ if (packageId == -1) {
+ SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
+ packageId = writableDb.insert(
+ PackageTable.TABLE_NAME, null, values);
+ }
+ if (packageId != -1) {
+ values.clear();
+ values.put(NotificationTable.MESSAGE_TEXT, msgText);
+ values.put(NotificationTable.NORMALIZED_TEXT,
+ SpamFilter.getNormalizedContent(msgText));
+ values.put(NotificationTable.PACKAGE_ID, packageId);
+ values.put(NotificationTable.LAST_BLOCKED, System.currentTimeMillis());
+ long id = mDbHelper.getReadableDatabase().insert(NotificationTable.TABLE_NAME,
+ null, values);
+ if (id != -1) {
+ notifyChange(String.valueOf(id));
+ }
+ }
+ return null;
+ default:
+ return null;
+ }
+ }
+
+ private void notifyChange(String id) {
+ Uri uri = Uri.withAppendedPath(SpamFilter.NOTIFICATION_URI,
+ id);
+ getContext().getContentResolver().notifyChange(uri, null);
+ }
+
+ private void removePackageIfNecessary(int packageId) {
+ long numEntries = DatabaseUtils.queryNumEntries(mDbHelper.getReadableDatabase(),
+ NotificationTable.TABLE_NAME, NotificationTable.PACKAGE_ID + "=?",
+ new String[]{String.valueOf(packageId)});
+ if (numEntries == 0) {
+ SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
+ writableDb.delete(PackageTable.TABLE_NAME, PackageTable.ID + "=?",
+ new String[]{String.valueOf(packageId)});
+ }
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ int match = sURIMatcher.match(uri);
+ switch (match) {
+ case MESSAGE_FOR_ID:
+ int packageId = -1;
+ Cursor idCursor = mDbHelper.getReadableDatabase().query(NotificationTable.TABLE_NAME,
+ new String[]{NotificationTable.PACKAGE_ID}, NotificationTable.ID + "=?",
+ new String[]{uri.getLastPathSegment()}, null, null, null);
+ if (idCursor != null) {
+ if (idCursor.moveToFirst()) {
+ packageId = idCursor.getInt(0);
+ }
+ idCursor.close();
+ }
+ SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
+ String id = uri.getLastPathSegment();
+ int result = writableDb.delete(NotificationTable.TABLE_NAME,
+ NotificationTable.ID + "=?", new String[]{id});
+ removePackageIfNecessary(packageId);
+ if (result > 0) {
+ notifyChange(id);
+ }
+ return result;
+ default:
+ return 0;
+ }
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ int match = sURIMatcher.match(uri);
+ switch (match) {
+ case MESSAGE_UPDATE_COUNT:
+ String id = uri.getLastPathSegment();
+ String formattedQuery = String.format(UPDATE_COUNT_QUERY,
+ System.currentTimeMillis(), id);
+ SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
+ writableDb.execSQL(formattedQuery);
+ notifyChange(id);
+ return 0;
+ default:
+ return 0;
+ }
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/cm/SpamOpenHelper.java b/packages/SystemUI/src/com/android/systemui/cm/SpamOpenHelper.java
new file mode 100644
index 0000000..45dc91c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/SpamOpenHelper.java
@@ -0,0 +1,46 @@
+package com.android.systemui.cm;
+
+import com.android.internal.util.cm.SpamFilter.SpamContract.NotificationTable;
+import com.android.internal.util.cm.SpamFilter.SpamContract.PackageTable;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+public class SpamOpenHelper extends SQLiteOpenHelper {
+
+ private static final String DATABASE_NAME = "spam.db";
+ private static final int VERSION = 4;
+ private static final String CREATE_PACKAGES_TABLE =
+ "create table " + PackageTable.TABLE_NAME + "(" +
+ PackageTable.ID + " INTEGER PRIMARY KEY," +
+ PackageTable.PACKAGE_NAME + " TEXT UNIQUE);";
+ private static final String CREATE_NOTIFICATIONS_TABLE =
+ "create table " + NotificationTable.TABLE_NAME + "(" +
+ NotificationTable.ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
+ NotificationTable.PACKAGE_ID + " INTEGER," +
+ NotificationTable.MESSAGE_TEXT + " STRING," +
+ NotificationTable.LAST_BLOCKED + " INTEGER," +
+ NotificationTable.NORMALIZED_TEXT + " STRING," +
+ NotificationTable.COUNT + " INTEGER DEFAULT 0);";
+
+ private Context mContext;
+
+ public SpamOpenHelper(Context context) {
+ super(context, DATABASE_NAME, null, VERSION);
+ mContext = context;
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL(CREATE_PACKAGES_TABLE);
+ db.execSQL(CREATE_NOTIFICATIONS_TABLE);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ mContext.deleteDatabase(DATABASE_NAME);
+ onCreate(db);
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/cm/UserContentObserver.java b/packages/SystemUI/src/com/android/systemui/cm/UserContentObserver.java
new file mode 100644
index 0000000..5ece744
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/cm/UserContentObserver.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.cm;
+
+import android.app.ActivityManagerNative;
+import android.app.IUserSwitchObserver;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.IRemoteCallback;
+import android.os.RemoteException;
+import android.util.Log;
+
+/**
+ * Simple extension of ContentObserver that also listens for user switch events to call update
+ */
+public abstract class UserContentObserver extends ContentObserver {
+ private static final String TAG = "UserContentObserver";
+
+ private Runnable mUpdateRunnable;
+
+ private IUserSwitchObserver mUserSwitchObserver = new IUserSwitchObserver.Stub() {
+ @Override
+ public void onUserSwitching(int newUserId, IRemoteCallback reply) {
+ }
+ @Override
+ public void onUserSwitchComplete(int newUserId) throws RemoteException {
+ mHandler.post(mUpdateRunnable);
+ }
+ @Override
+ public void onForegroundProfileSwitch(int newProfileId) {
+ }
+ };
+
+ private Handler mHandler;
+
+ public UserContentObserver(Handler handler) {
+ super(handler);
+ mHandler = handler;
+ mUpdateRunnable = new Runnable() {
+ @Override
+ public void run() {
+ update();
+ }
+ };
+ }
+
+ protected void observe() {
+ try {
+ ActivityManagerNative.getDefault().registerUserSwitchObserver(mUserSwitchObserver);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Unable to register user switch observer!", e);
+ }
+ }
+
+ protected void unobserve() {
+ try {
+ mHandler.removeCallbacks(mUpdateRunnable);
+ ActivityManagerNative.getDefault().unregisterUserSwitchObserver(mUserSwitchObserver);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Unable to unregister user switch observer!", e);
+ }
+ }
+
+ protected abstract void update();
+
+ @Override
+ public void onChange(boolean selfChange) {
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 39423f2..f223400 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -218,7 +218,7 @@ public class DozeService extends DreamService {
// Here we need a wakelock to stay awake until the pulse is finished.
mWakeLock.acquire();
mPulsing = true;
- if (!mDozeParameters.getProxCheckBeforePulse()) {
+ if (!mDozeParameters.getProxCheckBeforePulse(reason)) {
// skip proximity check
continuePulsing(reason);
return;
@@ -265,6 +265,7 @@ public class DozeService extends DreamService {
@Override
public void onPulseStarted() {
if (mPulsing && mDreaming) {
+ mContext.sendBroadcast(new Intent(Intent.ACTION_DOZE_PULSE_STARTING));
turnDisplayOn();
}
}
@@ -356,7 +357,7 @@ public class DozeService extends DreamService {
if (DEBUG) Log.d(mTag, "No more schedule resets remaining");
return;
}
- final long pulseDuration = mDozeParameters.getPulseDuration(false /*pickup*/);
+ final long pulseDuration = mDozeParameters.getPulseDuration(DozeLog.PULSE_REASON_NOTIFICATION);
boolean pulseImmediately = System.currentTimeMillis() >= notificationTimeMs;
if ((notificationTimeMs - mLastScheduleResetTime) >= pulseDuration) {
mScheduleResetsRemaining--;
diff --git a/packages/SystemUI/src/com/android/systemui/egg/CMLand.java b/packages/SystemUI/src/com/android/systemui/egg/CMLand.java
new file mode 100644
index 0000000..6020b45
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/egg/CMLand.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2014-2015 The CyanogenMod 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.systemui.egg;
+
+import com.android.systemui.R;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+public class CMLand extends MLand {
+ public static final String TAG = "CMLand";
+
+ public CMLand(Context context) {
+ this(context, null);
+ }
+
+ public CMLand(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CMLand(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected int getEggPlayer() {
+ return R.drawable.cid;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/egg/MLand.java b/packages/SystemUI/src/com/android/systemui/egg/MLand.java
index b84777b..1b22e04 100644
--- a/packages/SystemUI/src/com/android/systemui/egg/MLand.java
+++ b/packages/SystemUI/src/com/android/systemui/egg/MLand.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2014-2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -210,6 +211,8 @@ public class MLand extends FrameLayout {
// we assume everything will be laid out left|top
setLayoutDirection(LAYOUT_DIRECTION_LTR);
+ Player.eggPlayer = getEggPlayer();
+
setupPlayers(DEFAULT_PLAYERS);
MetricsLogger.count(getContext(), "egg_mland_create", 1);
@@ -1007,7 +1010,7 @@ public class MLand extends FrameLayout {
public void step(long t_ms, long dt_ms, float t, float dt);
}
- private static class Player extends ImageView implements GameView {
+ protected static class Player extends ImageView implements GameView {
public float dv;
public int color;
private MLand mLand;
@@ -1017,6 +1020,8 @@ public class MLand extends FrameLayout {
private int mScore;
private TextView mScoreField;
+ protected static int eggPlayer;
+
private final int[] sColors = new int[] {
//0xFF78C557,
0xFFDB4437,
@@ -1088,7 +1093,7 @@ public class MLand extends FrameLayout {
public Player(Context context) {
super(context);
- setBackgroundResource(R.drawable.android);
+ setBackgroundResource(eggPlayer);
getBackground().setTintMode(PorterDuff.Mode.SRC_ATOP);
color = sColors[(sNextColor++%sColors.length)];
getBackground().setTint(color);
@@ -1438,4 +1443,8 @@ public class MLand extends FrameLayout {
v = z = 0;
}
}
+
+ protected int getEggPlayer() {
+ return R.drawable.android;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java b/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java
index cdda45f..6fd7387 100644
--- a/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2014-2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,7 +30,14 @@ public class MLandActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.mland);
+ final boolean isCM = getIntent().getBooleanExtra("is_cm", false);
+ if (isCM) {
+ setContentView(R.layout.cmland);
+ mLand = (CMLand) findViewById(R.id.world);
+ } else {
+ setContentView(R.layout.mland);
+ mLand = (MLand) findViewById(R.id.world);
+ }
mLand = (MLand) findViewById(R.id.world);
mLand.setScoreFieldHolder((ViewGroup) findViewById(R.id.scores));
final View welcome = findViewById(R.id.welcome);
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index d2c60ef..a6ca6a0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -90,6 +90,12 @@ public class KeyguardService extends Service {
mKeyguardViewMediator.setOccluded(isOccluded);
}
+ @Override
+ public void showKeyguard() {
+ checkPermission();
+ mKeyguardViewMediator.showKeyguard();
+ }
+
@Override // Binder interface
public void dismiss() {
checkPermission();
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 055b5ef..2833759 100644..100755
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -23,13 +23,16 @@ import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.SearchManager;
import android.app.StatusBarManager;
+import android.app.admin.DevicePolicyManager;
import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.content.pm.UserInfo;
+import android.database.ContentObserver;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
@@ -50,12 +53,19 @@ import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
import android.view.IWindowManager;
+import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerPolicy;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.qs.tiles.LockscreenToggleTile;
+import com.android.systemui.statusbar.StatusBarState;
+import cyanogenmod.app.Profile;
+import cyanogenmod.app.ProfileManager;
+
import com.android.internal.policy.IKeyguardDrawnCallback;
import com.android.internal.policy.IKeyguardExitCallback;
import com.android.internal.policy.IKeyguardStateCallback;
@@ -73,6 +83,7 @@ import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarWindowManager;
+import cyanogenmod.providers.CMSettings;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -135,6 +146,15 @@ public class KeyguardViewMediator extends SystemUI {
private static final String DELAYED_KEYGUARD_ACTION =
"com.android.internal.policy.impl.PhoneWindowManager.DELAYED_KEYGUARD";
+ private static final String DISMISS_KEYGUARD_SECURELY_ACTION =
+ "com.android.keyguard.action.DISMISS_KEYGUARD_SECURELY";
+
+ private static final String KEYGUARD_SERVICE_ACTION_STATE_CHANGE =
+ "com.android.internal.action.KEYGUARD_SERVICE_STATE_CHANGED";
+ private static final String KEYGUARD_SERVICE_EXTRA_ACTIVE = "active";
+
+ private static final String DECRYPT_STATE = "trigger_restart_framework";
+
// used for handler messages
private static final int SHOW = 2;
private static final int HIDE = 3;
@@ -155,6 +175,7 @@ public class KeyguardViewMediator extends SystemUI {
private static final int NOTIFY_SCREEN_TURNED_ON = 22;
private static final int NOTIFY_SCREEN_TURNED_OFF = 23;
private static final int NOTIFY_STARTED_GOING_TO_SLEEP = 24;
+ private static final int NOTIFY_KEYGUARD_PANEL_FOCUS_CHANGED = 25;
/**
* The default amount of time we stay awake (used for all key input)
@@ -187,7 +208,6 @@ public class KeyguardViewMediator extends SystemUI {
private AudioManager mAudioManager;
private StatusBarManager mStatusBarManager;
private boolean mSwitchingUser;
-
private boolean mSystemReady;
private boolean mBootCompleted;
private boolean mBootSendUserPresent;
@@ -237,6 +257,8 @@ public class KeyguardViewMediator extends SystemUI {
// true if the keyguard is hidden by another window
private boolean mOccluded = false;
+ private boolean mKeyguardPanelFocused = false;
+
/**
* Helps remember whether the screen has turned on since the last time
* it turned off due to timeout. see {@link #onScreenTurnedOff(int)}
@@ -250,6 +272,11 @@ public class KeyguardViewMediator extends SystemUI {
*/
private IKeyguardExitCallback mExitSecureCallback;
+ /**
+ * Whether we are bound to the service delegate
+ */
+ private boolean mKeyguardBound;
+
// the properties of the keyguard
private KeyguardUpdateMonitor mUpdateMonitor;
@@ -267,6 +294,11 @@ public class KeyguardViewMediator extends SystemUI {
private boolean mHiding;
/**
+ * Whether we are disabling the lock screen internally
+ */
+ private boolean mInternallyDisabled = false;
+
+ /**
* we send this intent when the keyguard is dismissed.
*/
private static final Intent USER_PRESENT_INTENT = new Intent(Intent.ACTION_USER_PRESENT)
@@ -318,9 +350,57 @@ public class KeyguardViewMediator extends SystemUI {
*/
private boolean mPendingLock;
+ private boolean mCryptKeeperEnabled = true;
+
private boolean mWakeAndUnlocking;
private IKeyguardDrawnCallback mDrawnCallback;
+ private LockscreenEnabledSettingsObserver mSettingsObserver;
+ private PhoneStatusBar mStatusBar;
+
+ public static class LockscreenEnabledSettingsObserver extends UserContentObserver {
+
+ private static final String KEY_ENABLED = "lockscreen_enabled";
+
+ private boolean mObserving;
+ private SharedPreferences mPrefs;
+ private Context mContext;
+
+ public LockscreenEnabledSettingsObserver(Context context, Handler handler) {
+ super(handler);
+ mContext = context;
+ mPrefs = mContext.getSharedPreferences("quicksettings", Context.MODE_PRIVATE);
+ }
+
+ public boolean getPersistedDefaultOldSetting() {
+ return mPrefs.getBoolean(KEY_ENABLED, true);
+ }
+
+ @Override
+ public void observe() {
+ if (mObserving) {
+ return;
+ }
+ mObserving = true;
+ mContext.getContentResolver().registerContentObserver(CMSettings.Secure.getUriFor(
+ CMSettings.Secure.LOCKSCREEN_INTERNALLY_ENABLED), false, this,
+ UserHandle.USER_ALL);
+ update();
+ }
+
+ @Override
+ public void unobserve() {
+ if (mObserving) {
+ mObserving = false;
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+ }
+
+ @Override
+ public void update() {
+ }
+ }
+
KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() {
@Override
@@ -407,21 +487,20 @@ public class KeyguardViewMediator extends SystemUI {
// only force lock screen in case of missing sim if user hasn't
// gone through setup wizard
synchronized (this) {
- if (shouldWaitForProvisioning()) {
- if (!mShowing) {
- if (DEBUG_SIM_STATES) Log.d(TAG, "ICC_ABSENT isn't showing,"
- + " we need to show the keyguard since the "
- + "device isn't provisioned yet.");
- doKeyguardLocked(null);
- } else {
- resetStateLocked();
- }
+ if (shouldWaitForProvisioning() && !mShowing) {
+ if (DEBUG_SIM_STATES) Log.d(TAG, "ICC_ABSENT isn't showing,"
+ + " we need to show the keyguard since the "
+ + "device isn't provisioned yet.");
+ doKeyguardLocked(null);
+ } else {
+ resetStateLocked();
}
}
break;
case PIN_REQUIRED:
case PUK_REQUIRED:
synchronized (this) {
+ mStatusBar.hideHeadsUp();
if (!mShowing) {
if (DEBUG_SIM_STATES) Log.d(TAG,
"INTENT_VALUE_ICC_LOCKED and keygaurd isn't "
@@ -447,7 +526,10 @@ public class KeyguardViewMediator extends SystemUI {
break;
case READY:
synchronized (this) {
- if (mShowing) {
+ if ((mInternallyDisabled || isProfileDisablingKeyguard())
+ && !mUpdateMonitor.isSimPinSecure()) {
+ hideLocked();
+ } else if (mShowing) {
resetStateLocked();
}
}
@@ -555,8 +637,12 @@ public class KeyguardViewMediator extends SystemUI {
mShowKeyguardWakeLock = mPM.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "show keyguard");
mShowKeyguardWakeLock.setReferenceCounted(false);
-
mContext.registerReceiver(mBroadcastReceiver, new IntentFilter(DELAYED_KEYGUARD_ACTION));
+ mContext.registerReceiver(mBroadcastReceiver, new IntentFilter(DISMISS_KEYGUARD_SECURELY_ACTION),
+ android.Manifest.permission.CONTROL_KEYGUARD, null);
+ mContext.registerReceiver(mBroadcastReceiver, new IntentFilter(KEYGUARD_SERVICE_ACTION_STATE_CHANGE),
+ android.Manifest.permission.CONTROL_KEYGUARD, null);
+ mContext.registerReceiver(mBroadcastReceiver, new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED));
mKeyguardDisplayManager = new KeyguardDisplayManager(mContext);
@@ -608,6 +694,25 @@ public class KeyguardViewMediator extends SystemUI {
mHideAnimation = AnimationUtils.loadAnimation(mContext,
com.android.internal.R.anim.lock_screen_behind_enter);
+
+ mSettingsObserver = new LockscreenEnabledSettingsObserver(mContext, new Handler()) {
+ @Override
+ public void update() {
+ boolean newDisabledState = CMSettings.Secure.getIntForUser(mContext.getContentResolver(),
+ CMSettings.Secure.LOCKSCREEN_INTERNALLY_ENABLED,
+ getPersistedDefaultOldSetting() ? 1 : 0,
+ UserHandle.USER_CURRENT) == 0;
+
+ synchronized (KeyguardViewMediator.this) {
+ if (mKeyguardBound) {
+ if (newDisabledState != mInternallyDisabled) {
+ // it was updated,
+ setKeyguardEnabledInternal(!newDisabledState);
+ }
+ }
+ }
+ }
+ };
}
@Override
@@ -662,7 +767,7 @@ public class KeyguardViewMediator extends SystemUI {
Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e);
}
mExitSecureCallback = null;
- if (!mExternallyEnabled) {
+ if (!mInternallyDisabled && !mExternallyEnabled) {
hideLocked();
}
} else if (mShowing) {
@@ -762,6 +867,10 @@ public class KeyguardViewMediator extends SystemUI {
mDelayedShowingSequence++;
}
+ public boolean isKeyguardBound() {
+ return mKeyguardBound;
+ }
+
/**
* Let's us know when the device is waking up.
*/
@@ -793,7 +902,7 @@ public class KeyguardViewMediator extends SystemUI {
}
private void maybeSendUserPresentBroadcast() {
- if (mSystemReady && mLockPatternUtils.isLockScreenDisabled(
+ if (mSystemReady && isKeyguardDisabled(
KeyguardUpdateMonitor.getCurrentUser())) {
// Lock screen is disabled because the user has set the preference to "None".
// In this case, send out ACTION_USER_PRESENT here instead of in
@@ -802,6 +911,37 @@ public class KeyguardViewMediator extends SystemUI {
}
}
+ private boolean isKeyguardDisabled(int userId) {
+ if (!mExternallyEnabled) {
+ if (DEBUG) Log.d(TAG, "isKeyguardDisabled: keyguard is disabled externally");
+ return true;
+ }
+ if (mLockPatternUtils.isLockScreenDisabled(userId)) {
+ if (DEBUG) Log.d(TAG, "isKeyguardDisabled: keyguard is disabled by setting");
+ return true;
+ }
+ if (mInternallyDisabled) {
+ if (DEBUG) Log.d(TAG, "isKeyguardDisabled: keyguard is disabled internally");
+ return true;
+ }
+ if (isProfileDisablingKeyguard()) {
+ if (DEBUG) Log.d(TAG, "isKeyguardDisabled: keyguard is disabled by profile");
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isCryptKeeperEnabled() {
+ if (!mCryptKeeperEnabled) {
+ // once it's disabled, it's disabled.
+ return false;
+ }
+ final String state = SystemProperties.get("vold.decrypt");
+ mCryptKeeperEnabled = !"".equals(state) && !DECRYPT_STATE.equals(state);
+ if (DEBUG) Log.w(TAG, "updated crypt keeper state to: " + mCryptKeeperEnabled);
+ return mCryptKeeperEnabled;
+ }
+
/**
* A dream started. We should lock after the usual screen-off lock timeout but only
* if there is a secure lock pattern.
@@ -827,6 +967,33 @@ public class KeyguardViewMediator extends SystemUI {
}
/**
+ * Set the internal keyguard enabled state. This allows SystemUI to disable the lockscreen,
+ * overriding any apps.
+ * @param enabled
+ */
+ public void setKeyguardEnabledInternal(boolean enabled) {
+ mInternallyDisabled = !enabled;
+ if (!mUpdateMonitor.isSimPinSecure()) {
+ // disable when sim is ready
+ return;
+ }
+ setKeyguardEnabled(enabled);
+ if (mInternallyDisabled) {
+ mNeedToReshowWhenReenabled = false;
+ }
+ }
+
+ public boolean getKeyguardEnabledInternal() {
+ return !mInternallyDisabled;
+ }
+
+ public boolean isProfileDisablingKeyguard() {
+ final Profile activeProfile = ProfileManager.getInstance(mContext).getActiveProfile();
+ return activeProfile != null
+ && activeProfile.getScreenLockMode().getValue() == Profile.LockMode.DISABLE;
+ }
+
+ /**
* Same semantics as {@link android.view.WindowManagerPolicy#enableKeyguard}; provide
* a way for external stuff to override normal keyguard behavior. For instance
* the phone app disables the keyguard when it receives incoming calls.
@@ -834,8 +1001,14 @@ public class KeyguardViewMediator extends SystemUI {
public void setKeyguardEnabled(boolean enabled) {
synchronized (this) {
if (DEBUG) Log.d(TAG, "setKeyguardEnabled(" + enabled + ")");
-
mExternallyEnabled = enabled;
+ if (mInternallyDisabled
+ && enabled
+ && !lockscreenEnforcedByDevicePolicy()) {
+ // if keyguard is forcefully disabled internally (by lock screen tile), don't allow
+ // it to be enabled externally, unless the device policy manager says so.
+ return;
+ }
if (!enabled && mShowing) {
if (mExitSecureCallback != null) {
@@ -848,7 +1021,7 @@ public class KeyguardViewMediator extends SystemUI {
// hiding keyguard that is showing, remember to reshow later
if (DEBUG) Log.d(TAG, "remembering to reshow, hiding keyguard, "
+ "disabling status bar expansion");
- mNeedToReshowWhenReenabled = true;
+ mNeedToReshowWhenReenabled = !isProfileDisablingKeyguard();
updateInputRestrictedLocked();
hideLocked();
} else if (enabled && mNeedToReshowWhenReenabled) {
@@ -1028,22 +1201,6 @@ public class KeyguardViewMediator extends SystemUI {
* Enable the keyguard if the settings are appropriate.
*/
private void doKeyguardLocked(Bundle options) {
- // if another app is disabling us, don't show
- if (!mExternallyEnabled) {
- if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");
-
- // note: we *should* set mNeedToReshowWhenReenabled=true here, but that makes
- // for an occasional ugly flicker in this situation:
- // 1) receive a call with the screen on (no keyguard) or make a call
- // 2) screen times out
- // 3) user hits key to turn screen back on
- // instead, we reenable the keyguard when we know the screen is off and the call
- // ends (see the broadcast receiver below)
- // TODO: clean this up when we have better support at the window manager level
- // for apps that wish to be on top of the keyguard
- return;
- }
-
// if the keyguard is already showing, don't bother
if (mStatusBarKeyguardViewManager.isShowing()) {
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because it is already showing");
@@ -1051,6 +1208,14 @@ public class KeyguardViewMediator extends SystemUI {
return;
}
+ // Ugly hack to ensure keyguard is not shown on top of the CryptKeeper which prevents
+ // a user from being able to decrypt their device.
+ if (isCryptKeeperEnabled()) {
+ if (DEBUG) Log.d(TAG, "doKeyguard: not showing because CryptKeeper is enabled");
+ resetStateLocked();
+ return;
+ }
+
// if the setup wizard hasn't run yet, don't show
final boolean requireSim = !SystemProperties.getBoolean("keyguard.no_require_sim", false);
final boolean absent = SubscriptionManager.isValidSubscriptionId(
@@ -1066,9 +1231,30 @@ public class KeyguardViewMediator extends SystemUI {
return;
}
- if (mLockPatternUtils.isLockScreenDisabled(KeyguardUpdateMonitor.getCurrentUser())
+ // if another app is disabling us, don't show
+ if (!mExternallyEnabled && !lockedOrMissing) {
+ if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");
+
+ // note: we *should* set mNeedToReshowWhenReenabled=true here, but that makes
+ // for an occasional ugly flicker in this situation:
+ // 1) receive a call with the screen on (no keyguard) or make a call
+ // 2) screen times out
+ // 3) user hits key to turn screen back on
+ // instead, we reenable the keyguard when we know the screen is off and the call
+ // ends (see the broadcast receiver below)
+ // TODO: clean this up when we have better support at the window manager level
+ // for apps that wish to be on top of the keyguard
+ return;
+ }
+
+ if (isKeyguardDisabled(KeyguardUpdateMonitor.getCurrentUser())
&& !lockedOrMissing) {
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because lockscreen is off");
+ // update state
+ setShowingLocked(false);
+ updateActivityLockScreenState();
+ adjustStatusBarLocked();
+ userActivity();
return;
}
@@ -1089,6 +1275,15 @@ public class KeyguardViewMediator extends SystemUI {
return !mUpdateMonitor.isDeviceProvisioned() && !isSecure();
}
+ public boolean lockscreenEnforcedByDevicePolicy() {
+ DevicePolicyManager dpm = (DevicePolicyManager)
+ mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+ if (dpm != null) {
+ return dpm.requireSecureKeyguard();
+ }
+ return false;
+ }
+
/**
* Dismiss the keyguard through the security layers.
*/
@@ -1102,6 +1297,36 @@ public class KeyguardViewMediator extends SystemUI {
mHandler.sendEmptyMessage(DISMISS);
}
+ public void showKeyguard() {
+ // This is to prevent left edge from interfering
+ // with affordances.
+ if (mStatusBar.isAffordanceSwipeInProgress()
+ || mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
+ return;
+ }
+
+ // Disable edge detector once we're back on lockscreen
+ try {
+ WindowManagerGlobal.getWindowManagerService()
+ .setLiveLockscreenEdgeDetector(false);
+ } catch (RemoteException e){
+ Log.e(TAG, e.getMessage());
+ }
+
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ // Hide status bar window to avoid flicker,
+ // slideNotificationPanelIn will make it visible later.
+ mStatusBar.getStatusBarWindow().setVisibility(View.INVISIBLE);
+ // Get the keyguard into the correct state by calling mStatusBar.showKeyguard()
+ mStatusBar.showKeyguard();
+ // Now have the notification panel slid back into view
+ mStatusBar.slideNotificationPanelIn();
+ }
+ });
+ }
+
/**
* Send message to keyguard telling it to reset its state.
* @see #handleReset
@@ -1203,6 +1428,20 @@ public class KeyguardViewMediator extends SystemUI {
doKeyguardLocked(null);
}
}
+ } else if (DISMISS_KEYGUARD_SECURELY_ACTION.equals(intent.getAction())) {
+ synchronized (KeyguardViewMediator.this) {
+ dismiss();
+ }
+ } else if (KEYGUARD_SERVICE_ACTION_STATE_CHANGE.equals(intent.getAction())) {
+ mKeyguardBound = intent.getBooleanExtra(KEYGUARD_SERVICE_EXTRA_ACTIVE, false);
+ if (mKeyguardBound) {
+ mSettingsObserver.observe();
+ } else {
+ mSettingsObserver.unobserve();
+ }
+ } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(intent.getAction())) {
+ mPhoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
+ if (DEBUG) Log.d(TAG, "phone state change, new state: " + mPhoneState);
}
}
};
@@ -1282,6 +1521,9 @@ public class KeyguardViewMediator extends SystemUI {
case ON_ACTIVITY_DRAWN:
handleOnActivityDrawn();
break;
+ case NOTIFY_KEYGUARD_PANEL_FOCUS_CHANGED:
+ notifyKeyguardPanelFocusChanged(msg.arg1 != 0);
+ break;
}
}
};
@@ -1368,6 +1610,10 @@ public class KeyguardViewMediator extends SystemUI {
private void playSound(int soundId) {
if (soundId == 0) return;
+ if (mInternallyDisabled) {
+ Log.d(TAG, "suppressing lock screen sounds because it is disabled");
+ return;
+ }
final ContentResolver cr = mContext.getContentResolver();
if (Settings.System.getInt(cr, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 1) == 1) {
@@ -1437,7 +1683,8 @@ public class KeyguardViewMediator extends SystemUI {
ActivityManagerNative.getDefault().keyguardGoingAway(
mStatusBarKeyguardViewManager.shouldDisableWindowAnimationsForUnlock()
|| mWakeAndUnlocking,
- mStatusBarKeyguardViewManager.isGoingToNotificationShade());
+ mStatusBarKeyguardViewManager.isGoingToNotificationShade(),
+ mStatusBarKeyguardViewManager.isKeyguardShowingMedia());
} catch (RemoteException e) {
Log.e(TAG, "Error while calling WindowManager", e);
}
@@ -1497,7 +1744,9 @@ public class KeyguardViewMediator extends SystemUI {
// only play "unlock" noises if not on a call (since the incall UI
// disables the keyguard)
if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState)) {
- playSounds(false);
+ if (mShowing && mDeviceInteractive) {
+ playSounds(false);
+ }
}
setShowingLocked(false);
@@ -1550,7 +1799,7 @@ public class KeyguardViewMediator extends SystemUI {
private void handleReset() {
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleReset");
- mStatusBarKeyguardViewManager.reset();
+ mStatusBarKeyguardViewManager.reset(false);
}
}
@@ -1655,6 +1904,7 @@ public class KeyguardViewMediator extends SystemUI {
FingerprintUnlockController fingerprintUnlockController) {
mStatusBarKeyguardViewManager.registerStatusBar(phoneStatusBar, container,
statusBarWindowManager, scrimController, fingerprintUnlockController);
+ mStatusBar = phoneStatusBar;
return mStatusBarKeyguardViewManager;
}
@@ -1725,6 +1975,31 @@ public class KeyguardViewMediator extends SystemUI {
}
}
+ public void setKeyguardPanelFocused(boolean focused) {
+ if (DEBUG) Log.d(TAG, "setSlideOffset " + focused);
+ mHandler.removeMessages(NOTIFY_KEYGUARD_PANEL_FOCUS_CHANGED);
+ Message msg = mHandler.obtainMessage(NOTIFY_KEYGUARD_PANEL_FOCUS_CHANGED,
+ focused ? 1 : 0, 0);
+ mHandler.sendMessage(msg);
+ }
+
+ public void notifyKeyguardPanelFocusChanged(boolean focused) {
+ if (focused != mKeyguardPanelFocused) {
+ mKeyguardPanelFocused = focused;
+ int size = mKeyguardStateCallbacks.size();
+ for (int i = size - 1; i >= 0; i--) {
+ try {
+ mKeyguardStateCallbacks.get(i).onKeyguardPanelFocusChanged(focused);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to call onShowingStateChanged", e);
+ if (e instanceof DeadObjectException) {
+ mKeyguardStateCallbacks.remove(i);
+ }
+ }
+ }
+ }
+ }
+
public void addStateMonitorCallback(IKeyguardStateCallback callback) {
synchronized (this) {
mKeyguardStateCallbacks.add(callback);
@@ -1732,6 +2007,7 @@ public class KeyguardViewMediator extends SystemUI {
callback.onSimSecureStateChanged(mUpdateMonitor.isSimPinSecure());
callback.onShowingStateChanged(mShowing);
callback.onInputRestrictedStateChanged(mInputRestricted);
+ callback.onKeyguardPanelFocusChanged(mKeyguardPanelFocused);
} catch (RemoteException e) {
Slog.w(TAG, "Failed to call onShowingStateChanged or onSimSecureStateChanged or onInputRestrictedStateChanged", e);
}
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
index 9459740..e519e34 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
@@ -16,23 +16,30 @@
package com.android.systemui.power;
+import android.app.Notification;
+import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
import android.os.BatteryManager;
import android.os.Handler;
import android.os.PowerManager;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.os.Vibrator;
import android.provider.Settings;
import android.util.Log;
import android.util.Slog;
import com.android.systemui.SystemUI;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
+import cyanogenmod.providers.CMSettings;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -57,6 +64,9 @@ public class PowerUI extends SystemUI {
private long mScreenOffTime = -1;
+ // For filtering ACTION_POWER_DISCONNECTED on boot
+ boolean mIgnoreFirstPowerEvent = true;
+
public void start() {
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mScreenOffTime = mPowerManager.isScreenOn() ? -1 : SystemClock.elapsedRealtime();
@@ -140,6 +150,8 @@ public class PowerUI extends SystemUI {
filter.addAction(Intent.ACTION_USER_SWITCHED);
filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING);
filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED);
+ filter.addAction(Intent.ACTION_POWER_CONNECTED);
+ filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
mContext.registerReceiver(this, filter, null, mHandler);
updateSaverMode();
}
@@ -165,6 +177,10 @@ public class PowerUI extends SystemUI {
final boolean plugged = mPlugType != 0;
final boolean oldPlugged = oldPlugType != 0;
+ if (mIgnoreFirstPowerEvent && plugged) {
+ mIgnoreFirstPowerEvent = false;
+ }
+
int oldBucket = findBatteryLevelBucket(oldBatteryLevel);
int bucket = findBatteryLevelBucket(mBatteryLevel);
@@ -214,12 +230,44 @@ public class PowerUI extends SystemUI {
updateSaverMode();
} else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGING.equals(action)) {
setSaverMode(intent.getBooleanExtra(PowerManager.EXTRA_POWER_SAVE_MODE, false));
+ } else if (Intent.ACTION_POWER_CONNECTED.equals(action)
+ || Intent.ACTION_POWER_DISCONNECTED.equals(action)) {
+ final ContentResolver cr = mContext.getContentResolver();
+
+ if (mIgnoreFirstPowerEvent) {
+ mIgnoreFirstPowerEvent = false;
+ } else {
+ if (Settings.Global.getInt(cr,
+ Settings.Global.CHARGING_SOUNDS_ENABLED, 0) == 1) {
+ playPowerNotificationSound();
+ }
+ }
} else {
Slog.w(TAG, "unknown intent: " + intent);
}
}
};
+ void playPowerNotificationSound() {
+ final ContentResolver cr = mContext.getContentResolver();
+ final String soundPath =
+ CMSettings.Global.getString(cr, CMSettings.Global.POWER_NOTIFICATIONS_RINGTONE);
+
+ if (soundPath != null) {
+ Ringtone powerRingtone = RingtoneManager.getRingtone(mContext, Uri.parse(soundPath));
+ if (powerRingtone != null) {
+ powerRingtone.play();
+ }
+ }
+ if (CMSettings.Global.getInt(cr,
+ CMSettings.Global.POWER_NOTIFICATIONS_VIBRATE, 0) == 1) {
+ Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
+ if (vibrator != null) {
+ vibrator.vibrate(250);
+ }
+ }
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.print("mLowBatteryAlertCloseLevel=");
pw.println(mLowBatteryAlertCloseLevel);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSBooleanSettingRow.java b/packages/SystemUI/src/com/android/systemui/qs/QSBooleanSettingRow.java
new file mode 100644
index 0000000..50845da
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSBooleanSettingRow.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs;
+
+import android.annotation.Nullable;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.CompoundButton;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import com.android.systemui.R;
+import cyanogenmod.providers.CMSettings;
+
+public class QSBooleanSettingRow extends LinearLayout implements View.OnClickListener {
+
+ private static final String TAG = "QSSettingRow";
+
+ public static final int TABLE_SYSTEM = 0;
+ public static final int TABLE_GLOBAL = 1;
+ public static final int TABLE_SECURE = 2;
+
+ public static final int TABLE_CM_SYSTEM = 3;
+ public static final int TABLE_CM_GLOBAL = 4;
+ public static final int TABLE_CM_SECURE = 5;
+
+ int mWhichTable;
+ String mTitle;
+ String mKey;
+ private TextView mText;
+ private Switch mSwitch;
+ private int mDefaultValue;
+ private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener;
+
+ public QSBooleanSettingRow(Context context) {
+ this(context, null);
+ }
+
+ public QSBooleanSettingRow(Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public QSBooleanSettingRow(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public QSBooleanSettingRow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ View.inflate(context, R.layout.qs_settings_row, this);
+
+ setOrientation(HORIZONTAL);
+ setClickable(true);
+ setOnClickListener(this);
+
+ mText = (TextView) findViewById(R.id.title);
+ mSwitch = (Switch) findViewById(R.id.switcher);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.QuickSettingsRow,
+ defStyleAttr, defStyleRes);
+
+ mWhichTable = a.getInteger(R.styleable.QuickSettingsRow_table, -1);
+
+ mTitle = a.getString(R.styleable.QuickSettingsRow_android_title);
+ mKey = a.getString(R.styleable.QuickSettingsRow_android_key);
+ mDefaultValue = a.getInt(R.styleable.QuickSettingsRow_defaultValue, 0);
+
+ if (mText != null) {
+ mText.setText(mTitle);
+ mText.setClickable(false);
+ mText.setFocusable(false);
+ }
+
+ if (mSwitch != null) {
+ mSwitch.setClickable(false);
+ mSwitch.setFocusable(false);
+ mSwitch.setChecked(getCurrent());
+ mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if (false) Log.d(TAG, "onCheckedChanged() called with "
+ + "buttonView = [" + buttonView + "], isChecked = [" + isChecked
+ + "] and table: " + mWhichTable + ", and key: " + mKey);
+ applyChange(isChecked);
+ if (mOnCheckedChangeListener != null) {
+ mOnCheckedChangeListener.onCheckedChanged(buttonView, isChecked);
+ }
+ }
+ });
+ }
+
+ a.recycle();
+ }
+
+ public void setChecked(boolean checked) {
+ if (mSwitch.isChecked() == checked) {
+ return;
+ }
+ mSwitch.setChecked(checked);
+ }
+
+ private void applyChange(boolean value) {
+ ContentResolver cr = getContext().getContentResolver();
+ switch (mWhichTable) {
+ case TABLE_GLOBAL:
+ Settings.Global.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ case TABLE_SECURE:
+ Settings.Secure.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ case TABLE_SYSTEM:
+ Settings.System.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ case TABLE_CM_GLOBAL:
+ CMSettings.Global.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ case TABLE_CM_SECURE:
+ CMSettings.Secure.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ case TABLE_CM_SYSTEM:
+ CMSettings.System.putInt(cr, mKey, value ? 1 : 0);
+ break;
+ }
+ }
+
+ private boolean getCurrent() {
+ ContentResolver cr = getContext().getContentResolver();
+ int ret = 0;
+ switch (mWhichTable) {
+ case TABLE_GLOBAL:
+ ret = Settings.Global.getInt(cr, mKey, mDefaultValue);
+ break;
+ case TABLE_SECURE:
+ ret = Settings.Secure.getInt(cr, mKey, mDefaultValue);
+ break;
+ case TABLE_SYSTEM:
+ ret = Settings.System.getInt(cr, mKey, mDefaultValue);
+ break;
+ case TABLE_CM_GLOBAL:
+ ret = CMSettings.Global.getInt(cr, mKey, mDefaultValue);
+ break;
+ case TABLE_CM_SECURE:
+ ret = CMSettings.Secure.getInt(cr, mKey, mDefaultValue);
+ break;
+ case TABLE_CM_SYSTEM:
+ ret = CMSettings.System.getInt(cr, mKey, mDefaultValue);
+ break;
+ }
+ return ret == 1;
+ }
+
+ @Override
+ public void onClick(View v) {
+ mSwitch.setChecked(!mSwitch.isChecked());
+ }
+
+ public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener l) {
+ mOnCheckedChangeListener = l;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
index cfe8d07..74f4cbb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
@@ -63,7 +63,7 @@ public class QSContainer extends FrameLayout {
*/
public int getDesiredHeight() {
if (mQSPanel.isClosingDetail()) {
- return mQSPanel.getGridHeight() + getPaddingTop() + getPaddingBottom();
+ return mQSPanel.getGridHeight() + getPaddingBottom();
} else {
return getMeasuredHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java
index a318efc..8b89a65 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java
@@ -36,6 +36,10 @@ public class QSDetailClipper {
mBackground = (TransitionDrawable) detail.getBackground();
}
+ public boolean isAnimating() {
+ return mAnimator != null && mAnimator.isRunning();
+ }
+
public void animateCircularClip(int x, int y, boolean in, AnimatorListener listener) {
if (mAnimator != null) {
mAnimator.cancel();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsGrid.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsGrid.java
new file mode 100644
index 0000000..07e01e4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsGrid.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2015, The CyanogenMod 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.systemui.qs;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+
+import android.widget.BaseAdapter;
+
+import cyanogenmod.app.CustomTile;
+
+import com.android.systemui.qs.tiles.UserDetailItemView;
+import com.android.systemui.R;
+
+/**
+ * Quick settings common detail grid view with circular items.
+ */
+public class QSDetailItemsGrid extends PseudoGridView {
+ private static final String TAG = "QSDetailItemsGrid";
+ private QSDetailItemsGridAdapter mDetailItemsGridAdapter;
+
+ public QSDetailItemsGrid(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public static QSDetailItemsGrid inflate(Context context, ViewGroup parent, boolean attach) {
+ return (QSDetailItemsGrid) LayoutInflater.from(context).inflate(
+ R.layout.qs_detail_items_grid, parent, attach);
+ }
+
+ public QSDetailItemsGridAdapter createAndSetAdapter(String externalPackage,
+ CustomTile.ExpandedItem[] items) {
+ mDetailItemsGridAdapter = new QSDetailItemsGridAdapter(externalPackage, mContext, items);
+ ViewGroupAdapterBridge.link(this, mDetailItemsGridAdapter);
+ return mDetailItemsGridAdapter;
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ setOnTouchListener(new OnTouchListener() {
+ // Setting on Touch Listener for handling the touch inside ScrollView
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ // Disallow the touch request for parent scroll on touch of child view
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ return false;
+ }
+ });
+ }
+
+ public static class QSDetailItemsGridAdapter extends BaseAdapter implements OnClickListener {
+ private String mPkg;
+ private Context mContext;
+ private CustomTile.ExpandedItem[] mItems;
+ private OnPseudoGriditemClickListener mOnPseudoGridItemClickListener;
+
+ public interface OnPseudoGriditemClickListener {
+ void onPsuedoGridItemClick(View view, CustomTile.ExpandedItem item);
+ }
+
+ public QSDetailItemsGridAdapter(String packageName,
+ Context context, CustomTile.ExpandedItem[] items) {
+ mPkg = packageName;
+ mContext = context;
+ mItems = items;
+ }
+
+ public void setOnPseudoGridItemClickListener(OnPseudoGriditemClickListener
+ onPseudoGridItemClickListener) {
+ mOnPseudoGridItemClickListener = onPseudoGridItemClickListener;
+ }
+
+ @Override
+ public int getCount() {
+ return mItems.length;
+ }
+
+ @Override
+ public CustomTile.ExpandedItem getItem(int position) {
+ return mItems[position];
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int i, View convertView, ViewGroup parent) {
+ UserDetailItemView v = UserDetailItemView.convertOrInflate(
+ mContext, convertView, parent);
+ CustomTile.ExpandedItem item = getItem(i);
+ Drawable d = null;
+ if (item.itemDrawableResourceId != 0 && item.itemBitmapResource == null) {
+ try {
+ d = getPackageContext(mPkg, mContext).getResources()
+ .getDrawable(item.itemDrawableResourceId);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + mPkg +
+ " id=" + item.itemDrawableResourceId, t);
+ }
+ } else {
+ d = new BitmapDrawable(mContext.getResources(), item.itemBitmapResource);
+ }
+ if (v != convertView) {
+ v.setOnClickListener(this);
+ }
+ String name = item.itemTitle;
+ v.setActivated(true);
+ v.bind(name, d);
+ v.setTag(item);
+ return v;
+ }
+
+ @Override
+ public void onClick(View view) {
+ CustomTile.ExpandedItem item = (CustomTile.ExpandedItem) view.getTag();
+ mOnPseudoGridItemClickListener.onPsuedoGridItemClick(view, item);
+ }
+ }
+
+ private static Context getPackageContext(String pkg, Context context) {
+ Context packageContext;
+ try {
+ packageContext = context.createPackageContext(pkg, 0);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + pkg, t);
+ return null;
+ }
+ return packageContext;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsList.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsList.java
new file mode 100644
index 0000000..3e0ab8b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItemsList.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2014 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.systemui.qs;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+import android.widget.TextView;
+import com.android.systemui.R;
+
+import cyanogenmod.app.CustomTile;
+
+import java.util.List;
+
+/**
+ * Quick settings common detail list view with line items.
+ */
+public class QSDetailItemsList extends FrameLayout {
+ private static final String TAG = "QSDetailItemsList";
+
+ private ListView mListView;
+ private View mEmpty;
+ private TextView mEmptyText;
+ private ImageView mEmptyIcon;
+
+ public QSDetailItemsList(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mContext = context;
+ mTag = TAG;
+ }
+
+ public static QSDetailItemsList convertOrInflate(Context context,
+ View convertView, ViewGroup parent) {
+ if (convertView instanceof QSDetailItemsList) {
+ return (QSDetailItemsList) convertView;
+ }
+ LayoutInflater inflater = LayoutInflater.from(context);
+ return (QSDetailItemsList) inflater.inflate(R.layout.qs_detail_items_list, parent, false);
+ }
+
+ public void setAdapter(ListAdapter adapter) {
+ mListView.setAdapter(adapter);
+ }
+
+ public ListView getListView() {
+ return mListView;
+ }
+
+ public void setEmptyState(int icon, int text) {
+ mEmptyIcon.setImageResource(icon);
+ mEmptyText.setText(text);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mListView = (ListView) findViewById(android.R.id.list);
+ mListView.setOnTouchListener(new OnTouchListener() {
+ // Setting on Touch Listener for handling the touch inside ScrollView
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ // Disallow the touch request for parent scroll on touch of child view
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ return false;
+ }
+ });
+ mEmpty = findViewById(android.R.id.empty);
+ mEmpty.setVisibility(GONE);
+ mEmptyText = (TextView) mEmpty.findViewById(android.R.id.title);
+ mEmptyIcon = (ImageView) mEmpty.findViewById(android.R.id.icon);
+ mListView.setEmptyView(mEmpty);
+ }
+
+ public static class QSCustomDetailListAdapter extends ArrayAdapter<CustomTile.ExpandedItem> {
+ private String mPackage;
+
+ public QSCustomDetailListAdapter(String externalPackage, Context context,
+ List<CustomTile.ExpandedItem> objects) {
+ super(context, R.layout.qs_detail_item, objects);
+ mPackage = externalPackage;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ LinearLayout view = (LinearLayout) inflater.inflate(
+ R.layout.qs_detail_item, parent, false);
+
+ final CustomTile.ExpandedItem item = getItem(position);
+ Drawable d = null;
+ if (item.itemDrawableResourceId != 0 && item.itemBitmapResource == null) {
+ try {
+ d = getPackageContext(mPackage, getContext()).getResources()
+ .getDrawable(item.itemDrawableResourceId);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + mPackage +
+ " id=" + item.itemDrawableResourceId, t);
+ }
+ } else {
+ d = new BitmapDrawable(getContext().getResources(), item.itemBitmapResource);
+ }
+ final ImageView iv = (ImageView) view.findViewById(android.R.id.icon);
+ iv.setImageDrawable(d);
+ iv.getOverlay().clear();
+ //TODO: hide icon for the time being until the API supports granular item manipulation
+ final ImageView iv2 = (ImageView) view.findViewById(android.R.id.icon2);
+ iv2.setVisibility(View.GONE);
+ final TextView title = (TextView) view.findViewById(android.R.id.title);
+ title.setText(item.itemTitle);
+ final TextView summary = (TextView) view.findViewById(android.R.id.summary);
+ final boolean twoLines = !TextUtils.isEmpty(item.itemSummary);
+ title.setMaxLines(twoLines ? 1 : 2);
+ summary.setVisibility(twoLines ? VISIBLE : GONE);
+ summary.setText(twoLines ? item.itemSummary : null);
+ view.setMinimumHeight(getContext().getResources().getDimensionPixelSize(
+ twoLines ? R.dimen.qs_detail_item_height_twoline
+ : R.dimen.qs_detail_item_height));
+ return view;
+ }
+ }
+
+ private static Context getPackageContext(String pkg, Context context) {
+ Context packageContext;
+ try {
+ packageContext = context.createPackageContext(pkg, 0);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + pkg, t);
+ return null;
+ }
+ return packageContext;
+ }
+
+ public static class QSDetailListAdapter extends ArrayAdapter<QSDetailItems.Item> {
+ private QSDetailItems.Callback mCallback;
+
+ public QSDetailListAdapter(Context context, List<QSDetailItems.Item> objects) {
+ super(context, R.layout.qs_detail_item, objects);
+ }
+
+ public void setCallback(QSDetailItems.Callback cb) {
+ mCallback = cb;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ LinearLayout view = (LinearLayout) inflater.inflate(
+ R.layout.qs_detail_item, parent, false);
+
+ view.setClickable(false); // let list view handle this
+
+ final QSDetailItems.Item item = getItem(position);
+
+ final ImageView iv = (ImageView) view.findViewById(android.R.id.icon);
+ iv.setImageResource(item.icon);
+ iv.getOverlay().clear();
+ if (item.overlay != null) {
+ item.overlay.setBounds(0, 0, item.overlay.getIntrinsicWidth(),
+ item.overlay.getIntrinsicHeight());
+ iv.getOverlay().add(item.overlay);
+ }
+ final TextView title = (TextView) view.findViewById(android.R.id.title);
+ title.setText(item.line1);
+ final TextView summary = (TextView) view.findViewById(android.R.id.summary);
+ final boolean twoLines = !TextUtils.isEmpty(item.line2);
+ title.setMaxLines(twoLines ? 1 : 2);
+ summary.setVisibility(twoLines ? VISIBLE : GONE);
+ summary.setText(twoLines ? item.line2 : null);
+ view.setMinimumHeight(getContext().getResources().getDimensionPixelSize(
+ twoLines ? R.dimen.qs_detail_item_height_twoline : R.dimen.qs_detail_item_height));
+
+ final ImageView disconnect = (ImageView) view.findViewById(android.R.id.icon2);
+ disconnect.setVisibility(item.canDisconnect ? VISIBLE : GONE);
+ disconnect.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mCallback != null) {
+ mCallback.onDetailItemDisconnect(item);
+ }
+ }
+ });
+ return view;
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
new file mode 100644
index 0000000..13f552c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
@@ -0,0 +1,2331 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.app.ActivityManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.util.ArrayMap;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.DragEvent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseExpandableListAdapter;
+import android.widget.ExpandableListView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import com.android.internal.logging.MetricsLogger;
+import com.android.systemui.FontSizeUtils;
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.qs.tiles.CustomQSTile;
+import com.android.systemui.qs.tiles.EditTile;
+import com.android.systemui.settings.BrightnessController;
+import com.android.systemui.settings.ToggleSlider;
+import com.android.systemui.statusbar.phone.NotificationPanelView;
+import com.android.systemui.statusbar.phone.QSTileHost;
+import com.android.systemui.statusbar.policy.BrightnessMirrorController;
+import com.android.systemui.tuner.QsTuner;
+import com.viewpagerindicator.CirclePageIndicator;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.providers.CMSettings;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+import org.cyanogenmod.internal.util.QSUtils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+
+public class QSDragPanel extends QSPanel implements View.OnDragListener, View.OnLongClickListener {
+
+ private static final String TAG = "QSDragPanel";
+
+ public static final boolean DEBUG_TILES = false;
+ public static final boolean DEBUG_DRAG = false;
+
+ private static final int MAX_ROW_COUNT = 3;
+
+ // how long to wait before resetting the page
+ private static final int PAGE_RESET_DELAY = 10000;
+
+ protected final ArrayList<QSPage> mPages = new ArrayList<>();
+
+ private NotificationPanelView mPanelView;
+ protected QSViewPager mViewPager;
+ protected PagerAdapter mPagerAdapter;
+ QSPanelTopView mQsPanelTop;
+ CirclePageIndicator mPageIndicator;
+ private int mPageIndicatorHeight;
+
+ private TextView mDetailRemoveButton;
+ private DragTileRecord mDraggingRecord, mLastDragRecord;
+ private ViewGroup mDetailButtons;
+ private boolean mEditing;
+ private boolean mDragging;
+ private float mLastTouchLocationX, mLastTouchLocationY;
+ private int mLocationHits;
+ private int mLastLeftShift = -1;
+ private int mLastRightShift = -1;
+ private boolean mRestored;
+ private boolean mRestoring;
+ // whether the current view we are dragging in has shifted tiles
+ private boolean mMovedByLocation = false;
+
+ protected boolean mFirstRowLarge = true;
+ private SettingsObserver mSettingsObserver;
+
+ List<TileRecord> mCurrentlyAnimating
+ = Collections.synchronizedList(new ArrayList<TileRecord>());
+
+ private Runnable mResetPage = new Runnable() {
+ @Override
+ public void run() {
+ if (!mExpanded) {
+ // only reset when the user isn't interacting at all
+ mViewPager.setCurrentItem(0);
+ mPagerAdapter.notifyDataSetChanged();
+ }
+ }
+ };
+
+ public QSDragPanel(Context context) {
+ this(context, null);
+ }
+
+ public QSDragPanel(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void setupViews() {
+ updateResources();
+
+ mDetail = LayoutInflater.from(mContext).inflate(R.layout.qs_detail, this, false);
+ mDetailButtons = (ViewGroup) mDetail.findViewById(R.id.buttons);
+ mDetailContent = (ViewGroup) mDetail.findViewById(android.R.id.content);
+ mDetailRemoveButton = (TextView) mDetail.findViewById(android.R.id.button3);
+ mDetailSettingsButton = (TextView) mDetail.findViewById(android.R.id.button2);
+ mDetailDoneButton = (TextView) mDetail.findViewById(android.R.id.button1);
+ updateDetailText();
+ mDetail.setVisibility(GONE);
+ mDetail.setClickable(true);
+
+ mQsPanelTop = (QSPanelTopView) LayoutInflater.from(mContext).inflate(R.layout.qs_tile_top,
+ this, false);
+
+ mBrightnessView = mQsPanelTop.getBrightnessView();
+ mFooter = new QSFooter(this, mContext);
+
+ // add target click listener
+ mQsPanelTop.getAddTarget().setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TilesListAdapter adapter = new TilesListAdapter(mContext, QSDragPanel.this);
+ showDetailAdapter(true, adapter, v.getLocationOnScreen());
+ mDetail.bringToFront();
+ }
+ });
+ mViewPager = new QSViewPager(getContext());
+ mViewPager.setDragPanel(this);
+
+ mPageIndicator = new CirclePageIndicator(getContext());
+ addView(mDetail);
+ addView(mQsPanelTop);
+ addView(mViewPager);
+ addView(mPageIndicator);
+ addView(mFooter.getView());
+
+ mClipper = new QSDetailClipper(mDetail);
+
+ mBrightnessController = new BrightnessController(getContext(),
+ (ImageView) mQsPanelTop.getBrightnessView().findViewById(R.id.brightness_icon),
+ (ToggleSlider) mQsPanelTop.getBrightnessView().findViewById(R.id.brightness_slider));
+
+ mDetailDoneButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ announceForAccessibility(
+ mContext.getString(R.string.accessibility_desc_quick_settings));
+ closeDetail();
+ }
+ });
+
+ mPagerAdapter = new PagerAdapter() {
+ @Override
+ public Object instantiateItem(ViewGroup container, int position) {
+ if (DEBUG_TILES) {
+ Log.d(TAG, "instantiateItem() called with "
+ + "container = [" + container + "], position = [" + position + "]");
+ }
+
+ if (mEditing && position == 0) {
+ QSSettings qss = (QSSettings)
+ View.inflate(container.getContext(), R.layout.qs_settings, null);
+ qss.setHost(mHost);
+ container.addView(qss, 0);
+ return qss;
+ } else {
+ final int adjustedPosition = mEditing ? position - 1 : position;
+ QSPage page = mPages.get(adjustedPosition);
+ if (!page.isAttachedToWindow()) {
+ container.addView(page);
+ }
+ return page;
+ }
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ if (DEBUG_TILES) {
+ Log.d(TAG, "destroyItem() called with " + "container = ["
+ + container + "], position = [" + position + "], object = ["
+ + object + "]");
+ }
+ if (object instanceof View) {
+ container.removeView((View) object);
+ }
+ }
+
+ @Override
+ public int getItemPosition(Object object) {
+ if (object instanceof QSPage) {
+ if (mEditing != ((QSPage) object).getAdapterEditingState()) {
+ // position of item changes when we set change the editing mode,
+ // sync it and send the new position
+ ((QSPage) object).setAdapterEditingState(mEditing);
+
+ // calculate new position
+ int indexOf = ((QSPage) object).getPageIndex();
+ if (mEditing) return indexOf + 1;
+ else return indexOf;
+
+ } else if (!mPages.contains(object) && !mDragging) {
+ // only return none if we aren't dragging (object may be removed from
+ // the records array temporarily and we might think we have less pages,
+ // we don't want to prematurely remove this page
+ return POSITION_NONE;
+ } else {
+
+ return POSITION_UNCHANGED;
+ }
+
+ } else if (object instanceof QSSettings) {
+ if (((QSSettings) object).getAdapterEditingState() != mEditing) {
+ ((QSSettings) object).setAdapterEditingState(mEditing);
+ if (mEditing) return 0 /* locked at position 0 */;
+ else return POSITION_NONE;
+ } else {
+ return POSITION_UNCHANGED;
+ }
+ }
+ return super.getItemPosition(object);
+ }
+
+ @Override
+ public int getCount() {
+ final int qsPages = Math.max(getCurrentMaxPageCount(), 1);
+
+ if (mPages != null && qsPages > mPages.size()) {
+ for(int i = mPages.size(); i < qsPages; i++) {
+ mPages.add(i, new QSPage(mViewPager.getContext(), QSDragPanel.this, i));
+ }
+ }
+
+ if (mEditing) return qsPages + 1;
+ return qsPages;
+ }
+
+ @Override
+ public boolean isViewFromObject(View view, Object object) {
+ return view == object;
+ }
+ };
+ mViewPager.setAdapter(mPagerAdapter);
+
+ mPageIndicator.setViewPager(mViewPager);
+ mPageIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset,
+ int positionOffsetPixels) {
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "onPageScrolled() called with " + "position = ["
+ + position + "], positionOffset = [" + positionOffset
+ + "], positionOffsetPixels = [" + positionOffsetPixels + "]");
+ }
+
+ if (mEditing) {
+ float targetTranslationX = 0;
+
+ // targetTranslationX = where it's supposed to be - diff
+ int homeLocation = mViewPager.getMeasuredWidth();
+
+ // how far away from homeLocation is the scroll?
+ if (positionOffsetPixels < homeLocation
+ && position == 0) {
+ targetTranslationX = homeLocation - positionOffsetPixels;
+ }
+ mQsPanelTop.setTranslationX(targetTranslationX);
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ if (mDragging && position != mDraggingRecord.page
+ && !mViewPager.isFakeDragging() && !mRestoring) {
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "moving drag record to page: " + position);
+ }
+
+ // remove it from the previous page and add it here
+ final QSPage sourceP = getPage(mDraggingRecord.page);
+ final QSPage targetP = getPage(position);
+
+ sourceP.removeView(mDraggingRecord.tileView);
+ mDraggingRecord.page = position;
+ targetP.addView(mDraggingRecord.tileView);
+
+ // set coords off screen until we're ready to place it
+ mDraggingRecord.tileView.setX(-mDraggingRecord.tileView.getMeasuredWidth());
+ mDraggingRecord.tileView.setY(-mDraggingRecord.tileView.getMeasuredHeight());
+ }
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ }
+ });
+ mViewPager.setOverScrollMode(OVER_SCROLL_NEVER);
+
+ setClipChildren(false);
+
+ mSettingsObserver = new SettingsObserver(new Handler());
+
+ mViewPager.setOnDragListener(QSDragPanel.this);
+ mQsPanelTop.setOnDragListener(QSDragPanel.this);
+ mPageIndicator.setOnDragListener(QSDragPanel.this);
+ setOnDragListener(QSDragPanel.this);
+
+ mViewPager.setOverScrollMode(View.OVER_SCROLL_NEVER);
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return mClipper.isAnimating() || mEditing || !mCurrentlyAnimating.isEmpty();
+ }
+
+ @Override
+ public void setBrightnessMirror(BrightnessMirrorController c) {
+ super.onFinishInflate();
+ ToggleSlider brightnessSlider =
+ (ToggleSlider) mQsPanelTop.findViewById(R.id.brightness_slider);
+ ToggleSlider mirror = (ToggleSlider) c.getMirror().findViewById(R.id.brightness_slider);
+ brightnessSlider.setMirror(mirror);
+ brightnessSlider.setMirrorController(c);
+ }
+
+ protected void drawTile(TileRecord r, QSTile.State state) {
+ if (mEditing) {
+ if ((r.tile instanceof CustomQSTile)
+ && (((CustomQSTile) r.tile).isUserRemoved()
+ || ((CustomQSTile) r.tile).getTile() == null)) {
+ // don't modify visibility state if removed, or not yet published
+ } else {
+ state.visible = true;
+ state.enabled = true;
+ }
+ }
+ final int visibility = state.visible ? VISIBLE : GONE;
+ setTileVisibility(r.tileView, visibility);
+ setTileEnabled(r.tileView, state.enabled);
+ r.tileView.onStateChanged(state);
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ for (TileRecord r : mRecords) {
+ r.tile.setListening(mListening);
+ }
+ mFooter.setListening(mListening);
+ mQsPanelTop.setListening(mListening);
+ if (mListening) {
+ refreshAllTiles();
+ }
+ if (mListening) {
+ mSettingsObserver.observe();
+ } else {
+ mSettingsObserver.unobserve();
+ }
+
+ if (isLaidOut() && listening && showBrightnessSlider()) {
+ mBrightnessController.registerCallbacks();
+ } else {
+ mBrightnessController.unregisterCallbacks();
+ }
+ }
+
+ private void persistRecords() {
+ // persist the new config.
+ List<String> newTiles = new ArrayList<>();
+ for (TileRecord record : mRecords) {
+ newTiles.add(mHost.getSpec(record.tile));
+ }
+ mHost.setTiles(newTiles);
+ }
+
+ public void setEditing(boolean editing) {
+ if (mEditing == editing) return;
+ final boolean isOnSettings = isOnSettingsPage();
+
+ mQsPanelTop.setEditing(editing, isOnSettings);
+ if (!editing) {
+ persistRecords();
+
+ refreshAllTiles();
+
+ mQsPanelTop.setTranslationX(0);
+ if (isOnSettings) {
+ mViewPager.setCurrentItem(1, true);
+ }
+ }
+ mEditing = editing;
+ mPagerAdapter.notifyDataSetChanged();
+
+ mPageIndicator.setEditing(editing);
+ mViewPager.setOffscreenPageLimit(mEditing ? getCurrentMaxPageCount() + 1 : 1);
+ mPagerAdapter.notifyDataSetChanged();
+
+ // clear the record state
+ for (TileRecord record : mRecords) {
+ setupRecord(record);
+ drawTile(record, record.tile.getState());
+ }
+
+ requestLayout();
+ }
+
+ protected void onStartDrag() {
+ mQsPanelTop.onStartDrag();
+ }
+
+ protected void onStopDrag() {
+ mDraggingRecord.tileView.setAlpha(1f);
+
+ mLastDragRecord = mDraggingRecord;
+ mDraggingRecord = null;
+ mDragging = false;
+ mRestored = false;
+
+ mLastLeftShift = -1;
+ mLastRightShift = -1;
+
+ mQsPanelTop.onStopDrag();
+ }
+
+ protected View getDropTarget() {
+ return mQsPanelTop.getDropTarget();
+ }
+
+ public View getBrightnessView() {
+ return mQsPanelTop.getBrightnessView();
+ }
+
+ public boolean isEditing() {
+ return mEditing;
+ }
+
+ protected int getPagesForCount(int tileCount) {
+ if (tileCount == 0) {
+ return 1;
+ }
+ tileCount = Math.max(0, tileCount - getTilesPerPage(true));
+ // first page + rest of tiles
+ return 1 + (int) Math.ceil(tileCount / (double) getTilesPerPage(false));
+ }
+
+ protected int getCurrentMaxPageCount() {
+ int initialSize = mRecords.size();
+ return getPagesForCount(initialSize);
+ }
+
+ @Override
+ protected void updateDetailText() {
+ super.updateDetailText();
+ mDetailRemoveButton.setText(R.string.quick_settings_remove);
+ }
+
+ public void setTiles(final Collection<QSTile<?>> tilesCollection) {
+ // we try to be as efficient as possible here because this can happen while the user
+ // is in edit mode, or maybe even while tiles are animating
+ // step 1: stop all animations
+ // step 2: remove tiles no longer to be used, cache ones that are still valid
+ // step 3: remove empty viewpager pages
+ // step 4: generate new tiles, re-add cached ones
+
+ if (DEBUG_TILES) {
+ Log.i(TAG, "setTiles() called with tiles = [" + tilesCollection + "]");
+ }
+ if (mLastDragRecord != null && mRecords.indexOf(mLastDragRecord) == -1) {
+ // the last removed record might be stored in mLastDragRecord if we just shifted
+ // re-add it to the list so we'll clean it up below
+ mRecords.add(mLastDragRecord);
+ mLastDragRecord = null;
+ }
+
+ // step kinda-1
+ if (mDraggingRecord != null) {
+ // dragging record might be animating back, force it to finished position
+ mDraggingRecord.tileView.animate().cancel();
+ }
+
+ int currentViewPagerPage = mViewPager.getCurrentItem();
+ int removedPages = 0;
+
+ Map<QSTile<?>, DragTileRecord> cachedRecords = new ArrayMap<>();
+ ListIterator<TileRecord> iterator = mRecords.listIterator(mRecords.size());
+
+ int recordsRemoved = 0;
+ // cleanup current records
+ while (iterator.hasPrevious()) { // mRecords
+ DragTileRecord dr = (DragTileRecord) iterator.previous();
+
+ // step 1
+ dr.tileView.animate().cancel();
+
+ // step 2
+ if (tilesCollection.contains(dr.tile)) {
+ if (DEBUG_TILES) {
+ Log.i(TAG, "caching tile: " + dr.tile);
+ }
+ cachedRecords.put(dr.tile, dr);
+ } else {
+ if (dr.page >= 0) {
+ if (DEBUG_TILES) {
+ Log.w(TAG, "removed dr.tileView: " + dr.tileView + " from page: "
+ + dr.page + " (dest page: " + dr.destinationPage + ")");
+ }
+
+ removeTileView(dr.tileView);
+ }
+ if (DEBUG_TILES) {
+ Log.i(TAG, "removing tile: " + dr.tile);
+ }
+
+ // remove record
+ iterator.remove();
+ recordsRemoved++;
+
+ dr.page = -1;
+ dr.destinationPage = -1;
+ }
+ }
+
+ // at this point cachedRecords should have all retained tiles, no new or old tiles
+ int delta = tilesCollection.size() - cachedRecords.size() - recordsRemoved;
+ if (DEBUG_TILES) {
+ Log.i(TAG, "record map delta: " + delta);
+ }
+
+ // step 3
+ final Iterator<QSPage> pageIterator = mPages.iterator();
+ while (pageIterator.hasNext()) {
+ final QSPage page = pageIterator.next();
+ final int viewpagerIndex = page.getPageIndex() + (mEditing ? 1 : 0);
+ final int childCount = page.getChildCount();
+
+ if (DEBUG_TILES) {
+ Log.d(TAG, "page " + viewpagerIndex + " has " + childCount);
+ }
+ if (page.getPageIndex() >= getCurrentMaxPageCount() - 1) {
+ if (DEBUG_TILES) {
+ Log.d(TAG, "page : " + page + " has " + childCount + " children");
+ }
+ if (childCount == 0) {
+ removedPages++;
+
+ page.removeAllViews();
+ mPagerAdapter.startUpdate(mViewPager);
+ mPagerAdapter.destroyItem(mViewPager, viewpagerIndex, page);
+ mPagerAdapter.finishUpdate(mViewPager);
+ mPagerAdapter.notifyDataSetChanged();
+ }
+ }
+ }
+
+ if (removedPages > 0) {
+ // even though we explicitly destroy old pages, without this call,
+ // the viewpager doesn't seem to want to pick up the fact that we have less pages
+ // and allows "empty" scrolls to the right where there is no page.
+ if (DEBUG_TILES) {
+ Log.d(TAG, "re-setting adapter, page: " + currentViewPagerPage);
+ }
+ mViewPager.setAdapter(mPagerAdapter);
+ mViewPager.setCurrentItem(Math.min(currentViewPagerPage, mPagerAdapter.getCount()),
+ false);
+ mPagerAdapter.notifyDataSetChanged();
+ }
+
+ // step 4
+ mRecords.ensureCapacity(tilesCollection.size());
+ int runningCount = 0;
+
+ final Iterator<QSTile<?>> newTileIterator = tilesCollection.iterator();
+ while (newTileIterator.hasNext()) {
+ QSTile<?> tile = newTileIterator.next();
+ if (tile instanceof CustomQSTile) {
+ if (((CustomQSTile) tile).isUserRemoved()
+ || ((CustomQSTile) tile).getTile() == null) {
+ // tile not published yet
+ continue;
+ }
+ }
+ final int tileDestPage = getPagesForCount(runningCount + 1) - 1;
+
+ if (DEBUG_TILES) {
+ Log.d(TAG, "tile at : " + runningCount + ": " + tile
+ + " to dest page: " + tileDestPage);
+ }
+ DragTileRecord record;
+ if (!cachedRecords.containsKey(tile)) {
+ if (DEBUG_TILES) {
+ Log.d(TAG, "tile at: " + runningCount + " not cached, adding it to records");
+ }
+ record = makeRecord(tile);
+ record.destinationPage = tileDestPage;
+ mRecords.add(runningCount, record);
+ mPagerAdapter.notifyDataSetChanged();
+ } else {
+ record = cachedRecords.get(tile);
+ if (DEBUG_TILES) {
+ Log.d(TAG, "tile at : " + runningCount + ": cached, restoring: " + record);
+ }
+
+ mPages.get(record.page).removeView(record.tileView);
+
+ record.page = -1;
+ record.destinationPage = tileDestPage;
+
+ mRecords.remove(record);
+ mRecords.add(runningCount, record);
+ mPagerAdapter.notifyDataSetChanged();
+ }
+ if (record.page == -1) {
+ // add the view
+ mPages.get(record.destinationPage).addView(record.tileView);
+ record.page = record.destinationPage;
+ if (DEBUG_TILES) {
+ Log.d(TAG, "added view " + record);
+ }
+ }
+ runningCount++;
+ }
+
+ if (isShowingDetail()) {
+ mDetail.bringToFront();
+ }
+ mPagerAdapter.notifyDataSetChanged();
+
+ refreshAllTiles();
+ requestLayout();
+ }
+
+ private DragTileRecord makeRecord(final QSTile<?> tile) {
+ if (DEBUG_TILES) {
+ Log.d(TAG, "+++ makeRecord() called with " + "tile = [" + tile + "]");
+ }
+ final DragTileRecord r = new DragTileRecord();
+
+
+ r.tile = tile;
+ r.page = -1;
+ r.destinationPage = -1;
+ r.tileView = tile.createTileView(mContext);
+ final QSTile.Callback callback = new QSTile.Callback() {
+ @Override
+ public void onStateChanged(QSTile.State state) {
+ if (!r.openingDetail) {
+ drawTile(r, state);
+ }
+ }
+
+ @Override
+ public void onShowDetail(boolean show) {
+ showDetail(show, r);
+ }
+
+ @Override
+ public void onToggleStateChanged(boolean state) {
+ if (mDetailRecord == r) {
+ fireToggleStateChanged(state);
+ }
+ }
+
+ @Override
+ public void onScanStateChanged(boolean state) {
+ r.scanState = state;
+ if (mDetailRecord == r) {
+ fireScanStateChanged(r.scanState);
+ }
+ }
+
+ @Override
+ public void onAnnouncementRequested(CharSequence announcement) {
+ announceForAccessibility(announcement);
+ }
+ };
+ r.tile.setCallback(callback);
+ final OnClickListener click = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!mEditing || r.tile instanceof EditTile) {
+ r.tile.click();
+ }
+ }
+ };
+ final OnClickListener clickSecondary = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!mEditing) {
+ r.tile.secondaryClick();
+ }
+ }
+ };
+ final OnLongClickListener longClick = new OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ if (!mEditing) {
+ r.tile.longClick();
+ } else {
+ QSDragPanel.this.onLongClick(r.tileView);
+ }
+ return true;
+ }
+ };
+ r.tileView.init(click, clickSecondary, longClick);
+ r.tile.setListening(mListening);
+ r.tile.refreshState();
+ r.tileView.setVisibility(mEditing ? View.VISIBLE : View.GONE);
+ callback.onStateChanged(r.tile.getState());
+
+ if (DEBUG_TILES) {
+ Log.d(TAG, "--- makeRecord() called with " + "tile = [" + tile + "]");
+ }
+ return r;
+ }
+
+ private void removeTileView(QSTileView v) {
+ for (QSPage page : mPages) {
+ page.removeView(v);
+ page.removeTransientView(v);
+ }
+
+ }
+
+ private void removeDraggingRecord() {
+ // what spec is this tile?
+ String spec = mHost.getSpec(mDraggingRecord.tile);
+ if (DEBUG_TILES) {
+ Log.w(TAG, "removing tile: " + mDraggingRecord + " with spec: " + spec);
+ }
+ onStopDrag();
+ mHost.remove(spec);
+ }
+
+ public int getTilesPerPage(boolean firstPage) {
+ if ((!mFirstRowLarge && firstPage) || !firstPage) {
+ return QSTileHost.TILES_PER_PAGE + 1;
+ }
+ return QSTileHost.TILES_PER_PAGE;
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+
+ mQsPanelTop.measure(exactly(width), MeasureSpec.UNSPECIFIED);
+ mViewPager.measure(exactly(width), MeasureSpec.UNSPECIFIED);
+ mPageIndicator.measure(exactly(width), atMost(mPageIndicatorHeight));
+ mFooter.getView().measure(exactly(width), MeasureSpec.UNSPECIFIED);
+
+ int h = getRowTop(getCurrentMaxRow() + 1) + mPanelPaddingBottom;
+
+ if (mFooter.hasFooter()) {
+ h += mFooter.getView().getMeasuredHeight();
+ }
+ mGridHeight = h;
+
+ mDetail.measure(exactly(width), MeasureSpec.UNSPECIFIED);
+
+ if (mDetail.getMeasuredHeight() < h) {
+ mDetail.measure(exactly(width), exactly(h));
+ }
+ if (isShowingDetail() && !isClosingDetail() && mExpanded) {
+ h = mDetail.getMeasuredHeight();
+ }
+
+ setMeasuredDimension(width, h);
+ for (TileRecord record : mRecords) {
+ setupRecord(record);
+ }
+ }
+
+ private void setupRecord(TileRecord record) {
+ record.tileView.setEditing(mEditing);
+ record.tileView.setOnDragListener(mEditing ? this : null);
+ }
+
+ public static int exactly(int size) {
+ return MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
+ }
+
+ public static int atMost(int size) {
+ return MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST);
+ }
+
+ @Override
+ protected void handleShowDetailTile(TileRecord r, boolean show) {
+ if (r instanceof DragTileRecord) {
+ if ((mDetailRecord != null) == show && mDetailRecord == r) return;
+
+ if (show) {
+ r.detailAdapter = r.tile.getDetailAdapter();
+ if (r.detailAdapter == null) return;
+ }
+ r.tile.setDetailListening(show);
+ int x = (int) ((DragTileRecord) r).destination.x + r.tileView.getWidth() / 2;
+ int y = mViewPager.getTop()
+ + (int) ((DragTileRecord) r).destination.y + r.tileView.getHeight() / 2;
+ handleShowDetailImpl(r, show, x, y);
+ } else {
+ super.handleShowDetailTile(r, show);
+ }
+ mPageIndicator.setVisibility(!show ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int w = getWidth();
+
+ mQsPanelTop.layout(0, 0, w, mQsPanelTop.getMeasuredHeight());
+
+ int viewPagerBottom = mQsPanelTop.getMeasuredHeight() + mViewPager.getMeasuredHeight();
+ // view pager laid out from top of brightness view to bottom to page through settings
+ mViewPager.layout(0, 0, w, viewPagerBottom);
+
+ mDetail.layout(0, 0, w, mDetail.getMeasuredHeight());
+
+ if (mFooter.hasFooter()) {
+ View footer = mFooter.getView();
+ footer.layout(0, getMeasuredHeight() - footer.getMeasuredHeight(),
+ footer.getMeasuredWidth(), getMeasuredHeight());
+ }
+
+ if (!isShowingDetail() && !isClosingDetail()) {
+ mQsPanelTop.bringToFront();
+
+ }
+ // layout page indicator inside viewpager inset
+ mPageIndicator.layout(0, b - mPageIndicatorHeight, w, b);
+ }
+
+ protected int getRowTop(int row) {
+ int baseHeight = mQsPanelTop.getMeasuredHeight();
+ if (row <= 0) return baseHeight;
+ return baseHeight + mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
+ }
+
+ public int getColumnCount() {
+ return mColumns;
+ }
+
+ public int getColumnCount(int page, int row, boolean smart) {
+ int cols = 0;
+ for (Record record : mRecords) {
+ if (record instanceof DragTileRecord) {
+ DragTileRecord dr = (DragTileRecord) record;
+ if (dr.tileView.getVisibility() == GONE) continue;
+ if (dr.destinationPage != page) continue;
+ if (dr.row == row) cols++;
+ }
+ }
+
+ if (smart && isEditing() && (isDragging() || mRestoring) && !isDragRecordAttached()) {
+ // if shifting tiles back, and one moved from previous page
+
+ // if it's the very last row on the last page, we should add an extra column to account
+ // for where teh dragging lastRecord would go
+ DragTileRecord lastRecord = (DragTileRecord) mRecords.get(mRecords.size() - 1);
+ if (lastRecord.destinationPage == page && lastRecord.row == row
+ && cols < getColumnCount()) {
+ cols++;
+ if (DEBUG_DRAG) {
+ boolean draggingRecordBefore = isBefore(mDraggingRecord, lastRecord);
+ Log.w(TAG, "adding another col, cols: " + cols + ", last: " + lastRecord
+ + ", drag: " + mDraggingRecord
+ + ", and dragging record before last: " + draggingRecordBefore);
+ }
+ }
+ }
+ return cols;
+ }
+
+ public int getColumnCount(int page, int row) {
+ return getColumnCount(page, row, true);
+ }
+
+ public int getCurrentMaxRow() {
+ int max = 0;
+ for (TileRecord record : mRecords) {
+ if (record.row > max) {
+ max = record.row;
+ }
+ }
+ return max;
+ }
+
+ public int getLeft(int page, int row, int col) {
+ final boolean firstRowLarge = mFirstRowLarge && page == 0 && row == 0;
+ int cols = firstRowLarge ? 2 : mColumns;
+ return getLeft(row, col, cols, firstRowLarge);
+ }
+
+ public int getLeft(int page, int row, int col, int cols) {
+ final boolean firstRowLarge = mFirstRowLarge && page == 0 && row == 0;
+ return getLeft(row, col, cols, firstRowLarge);
+ }
+
+ public int getLeft(int row, int col, int cols, boolean firstRowLarge) {
+ final int cw = row == 0 && firstRowLarge ? mLargeCellWidth : mCellWidth;
+ final int extra = (getWidth() - cw * cols) / (cols + 1);
+ int left = col * cw + (col + 1) * extra;
+ return left;
+ }
+
+ public QSPage getCurrentPage() {
+ return mPages.get(mViewPager.getCurrentItem());
+ }
+
+ public QSPage getPage(int pos) {
+ if (pos >= mPages.size()) {
+ return null;
+ }
+ return mPages.get(pos);
+ }
+
+ private TileRecord getRecord(View v) {
+ for (TileRecord record : mRecords) {
+ if (record.tileView == v) {
+ return record;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean onDrag(View v, DragEvent event) {
+ final DragTileRecord targetTile = (DragTileRecord) getRecord(v);
+ boolean originatingTileEvent = mDraggingRecord != null && v == mDraggingRecord.tileView;
+
+ final int dragRecordIndex = mRecords.indexOf(mDraggingRecord);
+ boolean dragRecordAttached = dragRecordIndex != -1;
+ switch (event.getAction()) {
+ case DragEvent.ACTION_DRAG_STARTED:
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "ACTION_DRAG_STARTED on view: " + v);
+ }
+
+ if (originatingTileEvent) {
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "ACTION_DRAG_STARTED on target view.");
+ }
+ mRestored = false;
+ mQsPanelTop.setDropIcon(R.drawable.ic_qs_tile_delete_disable, R.color.qs_tile_trash_normal_tint);
+ }
+
+ break;
+
+ case DragEvent.ACTION_DRAG_ENTERED:
+ if (DEBUG_DRAG) {
+ if (targetTile != null) {
+ Log.v(TAG, "ACTION_DRAG_ENTERED on view with tile: " + targetTile);
+ } else {
+ Log.v(TAG, "ACTION_DRAG_ENTERED on view: " + v);
+ }
+ }
+ mLocationHits = 0;
+ mMovedByLocation = false;
+
+ if (v == mQsPanelTop) {
+ int icon, color;
+ if (mDraggingRecord.tile instanceof EditTile) {
+ // use a different warning, user can't erase this one
+ icon = R.drawable.ic_qs_tile_delete_disable_avd;
+ color = R.color.qs_tile_trash_delete_tint_warning;
+ } else {
+ icon = R.drawable.ic_qs_tile_delete_disable;
+ color = R.color.qs_tile_trash_delete_tint;
+ }
+
+ mQsPanelTop.setDropIcon(icon, color);
+ }
+
+ if (!originatingTileEvent && v != getDropTarget() && targetTile != null) {
+ if (DEBUG_DRAG) {
+ Log.e(TAG, "entered tile " + targetTile);
+ }
+ if (mCurrentlyAnimating.isEmpty()
+ && !mViewPager.isFakeDragging()
+ && !dragRecordAttached) {
+ mMovedByLocation = true;
+ shiftTiles(targetTile, true);
+ } else {
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "ignoring action enter for animating tiles and fake drags");
+ }
+ }
+ }
+
+ break;
+ case DragEvent.ACTION_DRAG_ENDED:
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "ACTION_DRAG_ENDED on view: " + v + "(tile: "
+ + targetTile + "), result: " + event.getResult());
+ }
+ if (originatingTileEvent && !event.getResult()) {
+ // view pager probably ate the event
+ restoreDraggingTilePosition(v, null);
+ }
+
+ break;
+
+ case DragEvent.ACTION_DROP:
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "ACTION_DROP, event loc: " + event.getX() + ", " + event.getY()
+ + " + with tile: " + targetTile + " and view: " + v);
+ }
+ mLastTouchLocationX = event.getX();
+ mLastTouchLocationY = event.getY();
+
+ if (isDropTargetEvent(event, v)) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "dropping on delete target!!");
+ }
+ if (mDraggingRecord.tile instanceof EditTile) {
+ final QSTileView editTileView = mDraggingRecord.tileView;
+
+ mQsPanelTop.toast(R.string.quick_settings_cannot_delete_edit_tile);
+ restoreDraggingTilePosition(v, new Runnable() {
+ @Override
+ public void run() {
+ // move edit tile to the back
+ final TileRecord editTile = getRecord(editTileView);
+ if (mRecords.remove(editTile)) {
+ // we depend on mHost.setTiles() placing it on the end
+ persistRecords();
+ }
+ }
+ });
+ break;
+ } else if (mDraggingRecord.tile instanceof CustomQSTile) {
+ ((CustomQSTile) mDraggingRecord.tile).setUserRemoved(true);
+ final String spec = mHost.getSpec(mDraggingRecord.tile);
+ restoreDraggingTilePosition(v, new Runnable() {
+ @Override
+ public void run() {
+ // it might get added back later by the app, but that's ok,
+ // we just want to reset its position after it has been removed.
+ mHost.remove(spec);
+ }
+ });
+ } else {
+ mRestored = true;
+ removeDraggingRecord();
+ }
+ } else {
+ restoreDraggingTilePosition(v, null);
+ }
+ break;
+
+ case DragEvent.ACTION_DRAG_EXITED:
+ if (DEBUG_DRAG) {
+ if (targetTile != null) {
+ Log.v(TAG, "ACTION_DRAG_EXITED on view with tile: " + targetTile);
+ } else {
+ Log.v(TAG, "ACTION_DRAG_EXITED on view: " + v);
+ }
+ }
+
+ if (v == mQsPanelTop) {
+ mQsPanelTop.setDropIcon(R.drawable.ic_qs_tile_delete_disable, R.color.qs_tile_trash_normal_tint);
+ }
+
+ if (originatingTileEvent
+ && mCurrentlyAnimating.isEmpty()
+ && !mViewPager.isFakeDragging()
+ && dragRecordAttached
+ && mLastLeftShift == -1) {
+
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "target: " + targetTile + ", hit mLastRightShift: "
+ + mLastRightShift + ", mLastLeftShift: "
+ + mLastLeftShift + ", dragRecordIndex: "
+ + dragRecordIndex);
+ }
+
+ // move tiles back
+ shiftTiles(mDraggingRecord, false);
+ break;
+ }
+ // fall through so exit events can trigger a left shift
+ case DragEvent.ACTION_DRAG_LOCATION:
+ mLastTouchLocationX = event.getX();
+ mLastTouchLocationY = event.getY();
+
+ // do nothing if we're animating tiles
+ if (mCurrentlyAnimating.isEmpty() && !mViewPager.isFakeDragging()) {
+ if (v == mViewPager) {
+ // do we need to change pages?
+ int x = (int) event.getX();
+ int width = mViewPager.getWidth();
+ int scrollPadding = (int) (width * QSViewPager.SCROLL_PERCENT);
+ if (x < scrollPadding) {
+ if (mViewPager.canScrollHorizontally(-1)) {
+ mViewPager.animatePagerTransition(false);
+ return true;
+ }
+ } else if (x > width - scrollPadding) {
+ if (mViewPager.canScrollHorizontally(1)) {
+ mViewPager.animatePagerTransition(true);
+ return true;
+ }
+ }
+ }
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "location hit:// target: " + targetTile
+ + ", hit mLastRightShift: " + mLastRightShift
+ + ", mLastLeftShift: " + mLastLeftShift
+ + ", dragRecordIndex: " + dragRecordIndex
+ + ", originatingTileEvent: " + originatingTileEvent
+ + ", mLocationHits: " + mLocationHits
+ + ", mMovedByLocation: " + mMovedByLocation);
+ }
+
+ if (v != getDropTarget() && targetTile != null && !dragRecordAttached) {
+ // dragging around on another tile
+ if (mLocationHits++ == 30) {
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "shifting right due to location hits.");
+ }
+ // add dragging tile to current page
+ shiftTiles(targetTile, true);
+ mMovedByLocation = true;
+ } else {
+ mLocationHits++;
+ }
+ } else if (mLastRightShift != -1 // right has shifted recently
+ && mLastLeftShift == -1 // -1 means its attached
+ && dragRecordIndex == mLastRightShift
+ && !originatingTileEvent
+ && !mMovedByLocation /* helps avoid continuous shifting */) {
+ // check if the location is on another tile/view
+ // that is not the last drag index, shift back left to revert back and
+ // potentially get ready for shifting right
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "conditions met to reverse!!!! shifting left. <<<<<<<");
+ }
+ shiftTiles((DragTileRecord) mRecords.get(mLastRightShift), false);
+ mMovedByLocation = true;
+ }
+
+ } else {
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "ignoring location event because things are animating, size: "
+ + mCurrentlyAnimating.size());
+ }
+ }
+ break;
+
+ default:
+ Log.w(TAG, "unhandled event");
+ return false;
+ }
+ return true;
+ }
+
+ private boolean isDropTargetEvent(DragEvent event, View v) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "isDropTargetEvent() called with " + "event = [" + event + "], v = [" + v + "]");
+ }
+ if (v == getDropTarget() || v == mQsPanelTop) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "isDropTargetEvent() returns true by view");
+ }
+ return true;
+ }
+
+ if (v == mViewPager && mLastTouchLocationY <= getRowTop(0)) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "isDropTargetEvent() returns true by loc");
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ private void restoreDraggingTilePosition(View v, final Runnable onAnimationFinishedRunnable) {
+ if (mRestored) {
+ return;
+ }
+ mRestored = true;
+ mRestoring = true;
+ mCurrentlyAnimating.add(mDraggingRecord);
+
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "restoreDraggingTilePosition() called with "
+ + "v = [" + (v.getTag() != null ? v.getTag() : v) + "]");
+ }
+ final boolean dragRecordDetached = mRecords.indexOf(mDraggingRecord) == -1;
+
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "mLastLeftShift: " + mLastLeftShift
+ + ", detached: " + dragRecordDetached + ", drag record: " + mDraggingRecord);
+ }
+
+ final QSPage originalPage = getPage(mDraggingRecord.page);
+ originalPage.removeView(mDraggingRecord.tileView);
+ addTransientView(mDraggingRecord.tileView, 0);
+ mDraggingRecord.tileView.setTransitionVisibility(View.VISIBLE);
+
+ // need to move center of the dragging view to the coords of the event.
+ final float touchEventBoxLeft = v.getX()
+ + (mLastTouchLocationX - (mDraggingRecord.tileView.getWidth() / 2));
+ final float touchEventBoxTop = v.getY()
+ + (mLastTouchLocationY - (mDraggingRecord.tileView.getHeight() / 2));
+
+ mDraggingRecord.tileView.setX(touchEventBoxLeft);
+ mDraggingRecord.tileView.setY(touchEventBoxTop);
+
+ if (dragRecordDetached) {
+ setToLastDestination(mDraggingRecord);
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "setting drag record view to coords: x:" + touchEventBoxLeft
+ + ", y:" + touchEventBoxTop);
+ Log.d(TAG, "animating drag record to: " + mDraggingRecord + ", loc: "
+ + mDraggingRecord.destination);
+ }
+ } else {
+ mDraggingRecord.destination.x = getLeft(mDraggingRecord.destinationPage,
+ mDraggingRecord.row, mDraggingRecord.col,
+ getColumnCount(mDraggingRecord.destinationPage, mDraggingRecord.row));
+
+ mDraggingRecord.destination.y = getRowTop(mDraggingRecord.row);
+ }
+
+ // setup x destination to animate to
+ float destinationX = mDraggingRecord.destination.x;
+
+ // see if we should animate this to the left or right off the page
+ // the +1's are to account for the edit page
+ if (mDraggingRecord.destinationPage > mViewPager.getCurrentItem() - 1) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "adding width to animate out >>>>>");
+ }
+ destinationX += getWidth();
+ } else if (mDraggingRecord.destinationPage < mViewPager.getCurrentItem() - 1) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "removing width to animate out <<<<<");
+ }
+ destinationX -= getWidth();
+ }
+
+ // setup y
+ float destinationY = mDraggingRecord.destination.y + mViewPager.getTop();
+
+ mDraggingRecord.tileView.animate()
+ .withLayer()
+ .x(destinationX)
+ .y(destinationY) // part of the viewpager now
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ mDraggingRecord.tileView.setAlpha(1);
+ }
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mViewPager.requestDisallowInterceptTouchEvent(false);
+ removeTransientView(mDraggingRecord.tileView);
+ mCurrentlyAnimating.remove(mDraggingRecord);
+ mRestoring = false;
+ mPagerAdapter.notifyDataSetChanged();
+ onStopDrag();
+
+ if (onAnimationFinishedRunnable != null) {
+ postOnAnimation(onAnimationFinishedRunnable);
+ }
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mViewPager.requestDisallowInterceptTouchEvent(false);
+
+ removeTransientView(mDraggingRecord.tileView);
+
+ final QSPage targetP = getPage(mDraggingRecord.destinationPage);
+
+ if (DEBUG_DRAG) {
+ if (dragRecordDetached) {
+ Log.i(TAG, "drag record was detached");
+ } else {
+ Log.i(TAG, "drag record was attached");
+ }
+ }
+ targetP.addView(mDraggingRecord.tileView);
+ mDraggingRecord.page = mDraggingRecord.destinationPage;
+
+ mDraggingRecord.tileView.setX(mDraggingRecord.destination.x);
+ // reset this to be in the coords of the page, not viewpager anymore
+ mDraggingRecord.tileView.setY(mDraggingRecord.destination.y);
+
+ mCurrentlyAnimating.remove(mDraggingRecord);
+
+ mRestoring = false;
+
+ if (dragRecordDetached) {
+ mRecords.add(mDraggingRecord);
+ mPagerAdapter.notifyDataSetChanged();
+ }
+ onStopDrag();
+
+ if (onAnimationFinishedRunnable != null) {
+ postOnAnimation(onAnimationFinishedRunnable);
+ } else {
+ requestLayout();
+ }
+ }
+ });
+ }
+
+ private void setToNextDestination(DragTileRecord tile) {
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "+++setToNextDestination() called with " + "tile = [" + tile + "], at: "
+ + tile.destination);
+ }
+ tile.col++;
+ int maxCols = getColumnCount();
+
+ if (tile.col >= maxCols) {
+ tile.col = 0;
+ tile.row++;
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "reached max column count, shifting to next row: " + tile.row);
+ }
+ }
+
+ // clamp this value to the max count we want.
+ int maxRows = Math.min(MAX_ROW_COUNT - 1 /* we are 0 based */, getCurrentMaxRow());
+
+ if (tile.row > maxRows) {
+ tile.destinationPage = tile.destinationPage + 1;
+ tile.row = 0;
+ tile.col = 0;
+
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "tile's destination page moved to: " + tile.destinationPage);
+ }
+ }
+ int columnCount = Math.max(1, getColumnCount(tile.destinationPage, tile.row, false));
+ if (columnCount < maxCols) {
+ // if columncount gives us 1 and we're at col 2
+ columnCount = Math.max((tile.col + 1), columnCount);
+ }
+ if (DEBUG_DRAG) {
+ Log.w(TAG, "columCount at: " + columnCount);
+ }
+
+ boolean firstRowLarge = mFirstRowLarge && tile.row == 0 && tile.destinationPage == 0;
+
+ tile.destination.x = getLeft(tile.row, tile.col, columnCount, firstRowLarge);
+ tile.destination.y = getRowTop(tile.row);
+
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "---setToNextDestination() called with " + "tile = [" + tile + "], now at: "
+ + tile.destination);
+ }
+ }
+
+ private boolean isBefore(DragTileRecord r1, DragTileRecord r2) {
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "isBefore() called with " + "r1 = [" + r1 + "], r2 = [" + r2 + "]");
+ }
+ boolean isBefore = r1.destinationPage <= r2.destinationPage;
+ if (r1.destinationPage == r2.destinationPage) {
+ isBefore = r1.row <= r2.row;
+ if (r1.row == r2.row) {
+ isBefore = r1.col <= r2.col;
+ }
+ }
+
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "r1 isBefore r2: " + isBefore);
+ }
+ return isBefore;
+ }
+
+ private void setToLastDestination(DragTileRecord record) {
+ DragTileRecord last = (DragTileRecord) mRecords.get(mRecords.size() - 1);
+ if (DEBUG_DRAG) {
+ Log.d(TAG, "setToLastDestination() called with record = ["
+ + record + "], and last record is: " + last);
+ }
+
+ if (isBefore(record, last)) {
+ // if the record is before the last record in the records list, set it to the
+ // last location, then spoof it one space forward
+ record.destinationPage = last.destinationPage;
+ record.row = last.row;
+ record.col = last.col;
+ record.destination.x = last.destination.x;
+ record.destination.y = last.destination.y;
+ setToNextDestination(record);
+ }
+ }
+
+ @Override
+ public boolean onLongClick(View v) {
+ final DragTileRecord record = (DragTileRecord) getRecord(v);
+ if (record == null) {
+ // TODO couldn't find a matching tag?
+ Log.e(TAG, "got a null record on touch down.");
+ return false;
+ }
+
+ mDraggingRecord = record;
+
+ mDraggingRecord.tileView.setAlpha(0);
+ mDraggingRecord.tileView.setDual(false, false);
+ TileShadow mTileShadow = new TileShadow(mDraggingRecord.tileView);
+
+ v.startDrag(null, mTileShadow, null, 0);
+
+ mViewPager.requestDisallowInterceptTouchEvent(true);
+
+ onStartDrag();
+ mDragging = true;
+ return true;
+ }
+
+ private void shiftTiles(DragTileRecord startingTile, boolean forward) {
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "shiftTiles() called with " + "startingTile = [" + startingTile
+ + "], forward = [" + forward + "]");
+ }
+
+ if (forward) {
+ // startingTile and all after will need to be shifted one to the right
+ // dragging tile needs room
+
+ final int destP = startingTile.destinationPage;
+ final int rowF = startingTile.row;
+ final int colF = startingTile.col;
+ PointF loc = new PointF(startingTile.destination.x, startingTile.destination.y);
+
+ // the index of the original position of the statingTile before it moved
+ int startingIndex = mRecords.indexOf(startingTile);
+ mLastRightShift = startingIndex;
+ mLastLeftShift = -1;
+
+ shiftAllTilesRight(startingIndex);
+ mRecords.add(startingIndex, mDraggingRecord);
+
+ mPagerAdapter.notifyDataSetChanged();
+
+ mDraggingRecord.col = colF;
+ mDraggingRecord.row = rowF;
+ mDraggingRecord.destination = loc;
+ mDraggingRecord.destinationPage = destP;
+
+ mDraggingRecord.tileView.setX(mDraggingRecord.destination.x);
+ mDraggingRecord.tileView.setY(mDraggingRecord.destination.y);
+
+ } else {
+ // it is also probably the dragging tile
+ final int startingIndex = mRecords.indexOf(startingTile);
+ mLastLeftShift = startingIndex;
+ mLastRightShift = -1;
+
+ final int draggingIndex = mRecords.indexOf(mDraggingRecord);
+
+ if (startingIndex != draggingIndex) {
+ if (DEBUG_DRAG) {
+ Log.e(TAG, "startinIndex: " + startingIndex + ", draggingIndex: "
+ + draggingIndex + ", and they differ!!!!");
+ }
+ }
+
+ // startingTile should be the "empty" tile that things should start shifting into
+ shiftAllTilesLeft(startingIndex);
+
+ // remove the dragging record
+ if (mRecords.remove(mDraggingRecord)) {
+ mPagerAdapter.notifyDataSetChanged();
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "removed dragging record after moving tiles back");
+ }
+ }
+
+ // set coords off screen until we're ready to place it
+ mDraggingRecord.tileView.setX(-mDraggingRecord.tileView.getMeasuredWidth());
+ mDraggingRecord.tileView.setY(-mDraggingRecord.tileView.getMeasuredHeight());
+ }
+
+ mViewPager.getAdapter().notifyDataSetChanged();
+ }
+
+ private void shiftAllTilesRight(int startingIndex) {
+ int desiredColumnCount = -1;
+ for (int j = startingIndex; j < mRecords.size() - 1; j++) {
+ final DragTileRecord ti = (DragTileRecord) mRecords.get(j);
+ final DragTileRecord tnext = (DragTileRecord) mRecords.get(j + 1);
+
+ mCurrentlyAnimating.add(ti);
+ if (tnext.row != ti.row || desiredColumnCount == -1) {
+ desiredColumnCount = getColumnCount(tnext.destinationPage, tnext.row);
+ //Log.w(TAG, "updated desiredColumnCount: " + desiredColumnCount);
+ }
+
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "moving " + ti + " to page " + tnext.destinationPage + ", at coords: "
+ + tnext.row + ", col: " + tnext.col + ", dest: " + tnext.destination);
+ }
+
+ ti.row = tnext.row;
+ ti.col = tnext.col;
+ ti.destination.x = getLeft(tnext.destinationPage, ti.row, ti.col, desiredColumnCount);
+ ti.destination.y = getRowTop(ti.row);
+
+ if (ti.destinationPage != tnext.destinationPage) {
+ ti.destinationPage = tnext.destinationPage;
+
+ final QSPage tilePageSource = getPage(ti.page);
+ final QSPage tilePageTarget = getPage(ti.destinationPage);
+ tilePageSource.removeView(ti.tileView);
+
+ tilePageSource.addTransientView(ti.tileView, 0);
+ ti.tileView.animate()
+ .withLayer()
+ .x(ti.destination.x + getWidth())
+ .y(ti.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ tilePageSource.removeTransientView(ti.tileView);
+ mCurrentlyAnimating.remove(ti);
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ tilePageSource.removeTransientView(ti.tileView);
+ tilePageTarget.addView(ti.tileView);
+ ti.page = tilePageTarget.getPageIndex();
+ ti.tileView.setX(ti.destination.x);
+ ti.tileView.setY(ti.destination.y);
+
+ mCurrentlyAnimating.remove(ti);
+ requestLayout();
+ }
+ });
+
+ } else {
+ ti.tileView.animate()
+ .withLayer()
+ .x(ti.destination.x)
+ .y(ti.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mCurrentlyAnimating.remove(ti);
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mCurrentlyAnimating.remove(ti);
+ final boolean dual = getPage(ti.destinationPage).dualRecord(ti);
+ if (ti.tileView.setDual(dual, ti.tile.hasDualTargetsDetails())) {
+ if (DEBUG_DRAG) {
+ Log.w(TAG, ti + " changed dual state to : "
+ + ti.tileView.isDual());
+ }
+ }
+ requestLayout();
+ }
+ });
+ }
+ }
+
+ // need to do last tile manually
+ final DragTileRecord last = (DragTileRecord) mRecords.get(mRecords.size() - 1);
+ mCurrentlyAnimating.add(last);
+
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "last tile shifting to the right: " + last);
+ }
+ setToNextDestination(last);
+ if (last.page != last.destinationPage) {
+ final QSPage tilePageSource = getPage(last.page);
+ final QSPage tilePageTarget = getPage(last.destinationPage);
+ tilePageSource.removeView(last.tileView);
+ tilePageSource.addTransientView(last.tileView, 0);
+
+ last.tileView.animate()
+ .withLayer()
+ .x(last.destination.x + getWidth())
+ .y(last.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ tilePageSource.removeTransientView(last.tileView);
+ mCurrentlyAnimating.remove(last);
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ tilePageSource.removeTransientView(last.tileView);
+ tilePageTarget.addView(last.tileView);
+ last.page = tilePageTarget.getPageIndex();
+ last.tileView.setX(last.destination.x);
+ last.tileView.setY(last.destination.y);
+
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "page shift finished: " + last);
+ }
+
+ mCurrentlyAnimating.remove(last);
+ requestLayout();
+ }
+ });
+ } else {
+ last.tileView.animate()
+ .withLayer()
+ .x(last.destination.x)
+ .y(last.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mCurrentlyAnimating.remove(last);
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (DEBUG_DRAG) {
+ Log.i(TAG, "shift finished: " + last);
+ }
+
+ mCurrentlyAnimating.remove(last);
+ requestLayout();
+ }
+ });
+ }
+ }
+
+ private void shiftAllTilesLeft(int startingIndex) {
+ DragTileRecord startingTile = (DragTileRecord) mRecords.get(startingIndex);
+
+ final PointF lastLocation = new PointF(startingTile.destination.x,
+ startingTile.destination.y);
+ PointF reallyTempLoc = new PointF();
+ int lastRow = startingTile.row, lastCol = startingTile.col, tempRow,
+ tempCol, lastPage = startingTile.destinationPage, tempPage;
+
+ int desiredColCount = getColumnCount(startingTile.destinationPage, startingTile.row);
+ for (int j = startingIndex + 1; j < mRecords.size(); j++) {
+ final DragTileRecord ti = (DragTileRecord) mRecords.get(j);
+
+ mCurrentlyAnimating.add(ti);
+
+ if (DEBUG_DRAG) {
+ Log.v(TAG, "moving " + ti + " to " + lastPage + ", at coords: "
+ + lastRow + ", col: " + lastCol);
+ Log.i(TAG, "and will have desiredColCount: " + desiredColCount);
+ }
+
+ final int columnCountF = desiredColCount;
+
+ if (ti.row != lastRow) {
+ desiredColCount = getColumnCount(ti.destinationPage, ti.row);
+ if (DEBUG_DRAG) {
+ Log.e(TAG, "updating desired colum count to: " + desiredColCount);
+ }
+ }
+
+ // save current tile's loc
+ reallyTempLoc.x = ti.destination.x;
+ reallyTempLoc.y = ti.destination.y;
+
+ tempRow = ti.row;
+ tempCol = ti.col;
+ tempPage = ti.destinationPage;
+
+ ti.row = lastRow;
+ ti.col = lastCol;
+
+ ti.destination.x = getLeft(lastRow, lastCol, columnCountF,
+ lastPage == 0 && lastRow == 0 && mFirstRowLarge);
+ ti.destination.y = getRowTop(lastRow);
+
+ final boolean dual = getPage(ti.destinationPage).dualRecord(ti);
+
+ if (ti.destinationPage != lastPage) {
+ ti.destinationPage = lastPage;
+
+ ti.tileView.setX(reallyTempLoc.x + getWidth());
+ ti.tileView.setY(reallyTempLoc.y);
+
+ final QSPage originalPage = getPage(ti.page);
+ final QSPage page = getPage(lastPage);
+
+ originalPage.removeView(ti.tileView);
+
+ ti.tileView.animate()
+ .withLayer()
+ .x(ti.destination.x)
+ .y(ti.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ page.addTransientView(ti.tileView, 0);
+ }
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ page.removeTransientView(ti.tileView);
+ mCurrentlyAnimating.remove(ti);
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ page.removeTransientView(ti.tileView);
+ page.addView(ti.tileView);
+ ti.page = page.getPageIndex();
+
+ mCurrentlyAnimating.remove(ti);
+ requestLayout();
+ }
+ });
+ } else {
+ ti.tileView.animate()
+ .withLayer()
+ .x(ti.destination.x)
+ .y(ti.destination.y)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mCurrentlyAnimating.remove(ti);
+ if (ti.tileView.setDual(dual, ti.tile.hasDualTargetsDetails())) {
+ if (DEBUG_DRAG) {
+ Log.w(TAG, ti + " changed dual state to : "
+ + ti.tileView.isDual());
+ }
+ }
+ requestLayout();
+ }
+ });
+ }
+
+ // update previous location
+ lastLocation.x = reallyTempLoc.x;
+ lastLocation.y = reallyTempLoc.y;
+
+ lastRow = tempRow;
+ lastCol = tempCol;
+ lastPage = tempPage;
+ }
+ }
+
+ @Override
+ protected void handleShowDetailImpl(Record r, boolean show, int x, int y) {
+ super.handleShowDetailImpl(r, show, x, y);
+ if (show) {
+ final StatusBarPanelCustomTile customTile = r.detailAdapter.getCustomTile();
+ mDetailRemoveButton.setVisibility(customTile != null &&
+ !(customTile.getPackage().equals(mContext.getPackageName())
+ || customTile.getUid() == android.os.Process.SYSTEM_UID)
+ ? VISIBLE : GONE);
+ mDetailRemoveButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mHost.removeCustomTile(customTile);
+ closeDetail();
+ }
+ });
+ }
+ mPanelView.setDetailRequestedScrollLock(mExpanded && show
+ && getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE);
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ FontSizeUtils.updateFontSize(mDetailRemoveButton, R.dimen.qs_detail_button_text_size);
+ mPanelView.setDetailRequestedScrollLock(mExpanded && isShowingDetail()
+ && getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE);
+ }
+
+ @Override
+ public void setExpanded(boolean expanded) {
+ super.setExpanded(expanded);
+ // reset the page when inactive for a while
+ if (expanded) {
+ removeCallbacks(mResetPage);
+ } else {
+ postDelayed(mResetPage, PAGE_RESET_DELAY);
+ }
+ if (!expanded) {
+ if (mEditing) {
+ mHost.setEditing(false);
+ }
+ }
+ }
+
+ public void updateResources() {
+ final Resources res = mContext.getResources();
+ final int columns = Math.max(1, res.getInteger(R.integer.quick_settings_num_columns));
+ mCellHeight = res.getDimensionPixelSize(R.dimen.qs_tile_height);
+ mCellWidth = (int) (mCellHeight * TILE_ASPECT);
+ mLargeCellHeight = res.getDimensionPixelSize(R.dimen.qs_dual_tile_height);
+ mLargeCellWidth = (int) (mLargeCellHeight * TILE_ASPECT);
+ mPanelPaddingBottom = res.getDimensionPixelSize(R.dimen.qs_panel_padding_bottom);
+ mDualTileUnderlap = res.getDimensionPixelSize(R.dimen.qs_dual_tile_padding_vertical);
+ mBrightnessPaddingTop = res.getDimensionPixelSize(R.dimen.qs_brightness_padding_top);
+ mPageIndicatorHeight = res.getDimensionPixelSize(R.dimen.qs_panel_page_indicator_height);
+ if (mColumns != columns) {
+ mColumns = columns;
+ if (isLaidOut()) postInvalidate();
+ }
+ if (isLaidOut()) {
+ for (TileRecord r : mRecords) {
+ r.tile.clearState();
+ }
+ updateDetailText();
+ mQsPanelTop.updateResources();
+ if (mListening) {
+ refreshAllTiles();
+ }
+ }
+ }
+
+ public boolean isAnimating(TileRecord t) {
+ return mCurrentlyAnimating.contains(t);
+ }
+
+ public void cleanup() {
+ if (mSettingsObserver != null) {
+ mSettingsObserver.unobserve();
+ }
+ }
+
+ public void setPanelView(NotificationPanelView panelView) {
+ this.mPanelView = panelView;
+ }
+
+ public static class TilesListAdapter extends BaseExpandableListAdapter
+ implements QSTile.DetailAdapter {
+
+ public static final String PACKAGE_ANDROID = "android";
+
+ Context mContext;
+ QSTileHost mHost;
+ QSDragPanel mPanel;
+
+ ArrayMap<String, List<String>> mPackageTileMap = new ArrayMap<>();
+
+ public TilesListAdapter(Context context, QSDragPanel panel) {
+ mContext = context;
+ mHost = panel.getHost();
+ mPanel = panel;
+
+ List<String> currentTileSpec = mHost.getTileSpecs();
+ final Collection<String> tiles = QSUtils.getAvailableTiles(mContext);
+ tiles.removeAll(currentTileSpec);
+
+ // we'll always have a system tiles category
+ mPackageTileMap.put(PACKAGE_ANDROID, new ArrayList<String>());
+
+ final Iterator<String> i = tiles.iterator();
+ while (i.hasNext()) {
+ final String spec = i.next();
+ if (QSUtils.isStaticQsTile(spec)
+ || QSUtils.isDynamicQsTile(extractTileTagFromSpec(spec))) {
+ List<String> packageList = mPackageTileMap.get(PACKAGE_ANDROID);
+ packageList.add(spec);
+ } else {
+ String tilePackage = getCustomTilePackage(spec);
+ List<String> packageList = mPackageTileMap.get(tilePackage);
+ if (packageList == null) {
+ mPackageTileMap.put(tilePackage, packageList = new ArrayList<>());
+ }
+ packageList.add(spec);
+ }
+ }
+
+ final Map<String, ?> stringMap = CustomQSTile.getCustomQSTilePrefs(mContext).getAll();
+ for (Map.Entry<String, ?> entry : stringMap.entrySet()) {
+ if (entry.getValue() instanceof Boolean) {
+ if ((Boolean)entry.getValue()) {
+ final String key = entry.getKey();
+ if (QSUtils.isDynamicQsTile(extractTileTagFromSpec(key))) {
+ mPackageTileMap.get(PACKAGE_ANDROID).add(key);
+ } else {
+ final String customTilePackage = getCustomTilePackage(key);
+ List<String> packageList = mPackageTileMap.get(customTilePackage);
+ if (packageList == null) {
+ mPackageTileMap.put(customTilePackage,
+ packageList = new ArrayList<>());
+ }
+ packageList.add(key);
+
+ }
+ }
+ }
+ };
+
+ final List<String> systemTiles = mPackageTileMap.get(PACKAGE_ANDROID);
+ Collections.sort(systemTiles);
+ }
+
+ private String getCustomTilePackage(String spec) {
+ if (mHost.getCustomTileData().get(spec) != null) {
+ StatusBarPanelCustomTile sbc = mHost.getCustomTileData().get(spec).sbc;
+ return sbc.getPackage();
+ } else {
+ return extractPackageFromCustomTileSpec(spec);
+ }
+ }
+
+ private static String extractPackageFromCustomTileSpec(String spec) {
+ if (spec != null && !spec.isEmpty()) {
+ final String[] split = spec.split("\\|");
+ if (split != null && split.length > 2) {
+ return split[1];
+ }
+ return spec;
+ }
+ return null;
+ }
+
+ private static String extractTileTagFromSpec(String spec) {
+ if (spec != null && !spec.isEmpty()) {
+ final String[] split = spec.split("\\|");
+ if (split != null && split.length == 5) {
+ /** for {@link cyanogenmod.app.StatusBarPanelCustomTile#key() **/
+ return split[3];
+ } else if (split != null && split.length == 3) {
+ /** for {@link cyanogenmod.app.StatusBarPanelCustomTile#persistableKey()} **/
+ return split[2];
+ }
+ return spec;
+ }
+ return null;
+ }
+
+ private Drawable getQSTileIcon(String spec) {
+ if (QSUtils.isDynamicQsTile(extractTileTagFromSpec(spec))) {
+ return QSTile.ResourceIcon.get(QSUtils.getDynamicQSTileResIconId(mContext,
+ UserHandle.myUserId(), extractTileTagFromSpec(spec))).getDrawable(mContext);
+ } else if (QSUtils.isStaticQsTile(spec)) {
+ final int res = QSTileHost.getIconResource(spec);
+ if (res != 0) {
+ return QSTile.ResourceIcon.get(res).getDrawable(mContext);
+ } else {
+ return mContext.getPackageManager().getDefaultActivityIcon();
+ }
+ } else {
+ QSTile<?> tile = mHost.getTile(spec);
+ if (tile != null) {
+ QSTile.State state = tile.getState();
+ if (state != null && state.icon != null) {
+ return state.icon.getDrawable(mContext);
+ }
+ }
+ return getPackageDrawable(getCustomTilePackage(spec));
+ }
+ }
+
+ private String getPackageLabel(String packageName) {
+ try {
+ return mContext.getPackageManager().getApplicationLabel(
+ mContext.getPackageManager().getApplicationInfo(packageName, 0)).toString();
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private Drawable getPackageDrawable(String packageName) {
+ try {
+ return mContext.getPackageManager().getApplicationIcon(packageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private String getQSTileLabel(String spec) {
+ if (QSUtils.isStaticQsTile(spec)) {
+ int resource = QSTileHost.getLabelResource(spec);
+ if (resource != 0) {
+ return mContext.getText(resource).toString();
+ } else {
+ return spec;
+ }
+ } else if (QSUtils.isDynamicQsTile(extractTileTagFromSpec(spec))) {
+ return QSUtils.getDynamicQSTileLabel(mContext,
+ UserHandle.myUserId(), extractTileTagFromSpec(spec));
+ } else {
+ return getPackageLabel(getCustomTilePackage(spec));
+ }
+ }
+
+ @Override
+ public int getGroupCount() {
+ return mPackageTileMap.keySet().size();
+ }
+
+ @Override
+ public int getChildrenCount(int groupPosition) {
+ return mPackageTileMap.valueAt(groupPosition).size();
+ }
+
+ @Override
+ public String getGroup(int groupPosition) {
+ return mPackageTileMap.keyAt(groupPosition);
+ }
+
+ @Override
+ public String getChild(int groupPosition, int childPosition) {
+ return mPackageTileMap.valueAt(groupPosition).get(childPosition);
+ }
+
+ @Override
+ public long getGroupId(int groupPosition) {
+ return groupPosition;
+ }
+
+ @Override
+ public long getChildId(int groupPosition, int childPosition) {
+ return mPackageTileMap.valueAt(groupPosition).get(childPosition).hashCode();
+ }
+
+ @Override
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ @Override
+ public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
+ ViewGroup parent) {
+ LinearLayout row = (LinearLayout) convertView;
+ if (row == null) {
+ row = (LinearLayout) LayoutInflater.from(mContext)
+ .inflate(R.layout.qs_tile_category_row, parent, false);
+ }
+ TextView title = (TextView) row.findViewById(android.R.id.title);
+
+ ImageView systemOrAppIcon = (ImageView) row.findViewById(android.R.id.icon);
+ ImageView expansionIndicator = (ImageView) row.findViewById(android.R.id.icon2);
+
+ expansionIndicator.setImageResource(isExpanded ? R.drawable.ic_qs_tile_contract
+ : R.drawable.ic_qs_tile_expand);
+ // hide indicator when there's only 1 group
+ final boolean singleGroupMode = getGroupCount() == 1;
+ expansionIndicator.setVisibility(singleGroupMode ? View.GONE : View.VISIBLE);
+
+ String group = getGroup(groupPosition);
+ if (group.equals(PACKAGE_ANDROID)) {
+ group = mContext.getText(R.string.quick_settings_tiles_category_system).toString();
+ // special icon
+ systemOrAppIcon.setImageResource(R.drawable.ic_qs_tile_category_system);
+ } else {
+ group = getPackageLabel(group);
+ systemOrAppIcon.setImageResource(R.drawable.ic_qs_tile_category_other);
+ }
+ title.setText(group);
+
+ if (isExpanded) {
+ expansionIndicator.setColorFilter(
+ mContext.getColor(
+ R.color.qs_detailed_expansion_indicator_color), PorterDuff.Mode.SRC_ATOP);
+ systemOrAppIcon.setColorFilter(
+ mContext.getColor(R.color.qs_detailed_icon_tint_color), PorterDuff.Mode.SRC_ATOP);
+ title.setTextColor(mContext.getColor(R.color.qs_detailed_title_text_color));
+ } else {
+ title.setTextColor(mContext.getColor(R.color.qs_detailed_default_text_color));
+ systemOrAppIcon.setColorFilter(null);
+ expansionIndicator.setColorFilter(null);
+ }
+ return row;
+ }
+
+ @Override
+ public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
+ View convertView, ViewGroup parent) {
+ LinearLayout child = (LinearLayout) convertView;
+ if (child == null) {
+ child = (LinearLayout) LayoutInflater.from(mContext)
+ .inflate(R.layout.qs_tile_child_row, parent, false);
+ }
+ String spec = getChild(groupPosition, childPosition);
+
+ TextView title = (TextView) child.findViewById(android.R.id.title);
+ title.setText(getQSTileLabel(spec));
+
+ ImageView icon = (ImageView) child.findViewById(android.R.id.icon);
+ icon.setImageDrawable(getQSTileIcon(spec));
+
+ return child;
+ }
+
+ @Override
+ public boolean isChildSelectable(int groupPosition, int childPosition) {
+ return true;
+ }
+
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_tiles_add_tiles;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ return null;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ ExpandableListView lv = (ExpandableListView) convertView;
+ if (lv == null) {
+ lv = new ExpandableListView(parent.getContext());
+ lv.setOnTouchListener(new OnTouchListener() {
+ // Setting on Touch Listener for handling the touch inside ScrollView
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ // Disallow the touch request for parent scroll on touch of child view
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ return false;
+ }
+ });
+ }
+ lv.setAdapter(this);
+ lv.expandGroup(mPackageTileMap.indexOfKey(PACKAGE_ANDROID));
+ lv.setGroupIndicator(null);
+ lv.setChildIndicator(null);
+ lv.setChildDivider(new ColorDrawable(Color.TRANSPARENT));
+ lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
+ @Override
+ public boolean onChildClick(ExpandableListView parent, View v,
+ int groupPosition, int childPosition, long id) {
+ String spec = getChild(groupPosition, childPosition);
+
+ final QSTile<?> tile = mHost.getTile(spec);
+ if (tile != null && tile instanceof CustomQSTile) {
+ // already present
+ ((CustomQSTile) tile).setUserRemoved(false);
+ mPanel.refreshAllTiles();
+ } else {
+ // reset its state just in case it's not published
+ CustomQSTile.getCustomQSTilePrefs(mContext)
+ .edit()
+ .remove(spec)
+ .apply();
+ mPanel.add(spec);
+ // TODO notify user the app isn't publishing the tile, but it now can be!
+ }
+ mPanel.closeDetail();
+ return true;
+ }
+ });
+ lv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
+ @Override
+ public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
+ long id) {
+ if (getGroupCount() == 1) {
+ // disable contracting/expanding group when there's only 1
+ return true;
+ }
+ return false;
+ }
+ });
+ return lv;
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return null;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.DONT_LOG;
+ }
+
+ private boolean isValid(String action) {
+ for (int i = 0; i < action.length(); i++) {
+ char c = action.charAt(i);
+ if (!Character.isAlphabetic(c) && !Character.isDigit(c) && c != '.') {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ public void add(String tile) {
+ MetricsLogger.action(getContext(), MetricsLogger.TUNER_QS_ADD, tile);
+ List<String> tiles = new ArrayList<>(mHost.getTileSpecs());
+ tiles.add(tile);
+ mHost.setTiles(tiles);
+ }
+
+ public boolean isDragging() {
+ return mDragging;
+ }
+
+ public boolean isDragRecordAttached() {
+ return mRecords.indexOf(mDraggingRecord) >= 0;
+ }
+
+ public boolean isOnSettingsPage() {
+ return mEditing && mViewPager.getCurrentItem() == 0;
+ }
+
+ public void goToSettingsPage() {
+ if (mEditing) {
+ mViewPager.setCurrentItem(0, true);
+ }
+ }
+
+ class SettingsObserver extends UserContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.Secure.getUriFor(
+ CMSettings.Secure.QS_USE_MAIN_TILES), false, this, UserHandle.USER_ALL);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ int currentUserId = ActivityManager.getCurrentUser();
+ boolean firstRowLarge = CMSettings.Secure.getIntForUser(resolver,
+ CMSettings.Secure.QS_USE_MAIN_TILES, 1, currentUserId) == 1;
+ if (firstRowLarge != mFirstRowLarge) {
+ mFirstRowLarge = firstRowLarge;
+ setTiles(mHost.getTiles());
+ mPagerAdapter.notifyDataSetChanged();
+ }
+ }
+ }
+
+ public static final class DragTileRecord extends TileRecord {
+ public int page;
+ public int destinationPage;
+ public PointF destination = new PointF();
+
+ @Override
+ public String toString() {
+ String label = tile instanceof QsTuner.DraggableTile ? tile.toString() :
+ tile.getClass().getSimpleName();
+
+ String p = "at page: " + page;
+ if (destinationPage != page) {
+ p += "{-> " + destinationPage + "} ";
+ }
+
+ return "[" + label + ", coords: (" + row + ", " + col + ") " + p + "]";
+ }
+ }
+
+ private static class TileShadow extends View.DragShadowBuilder {
+
+ public TileShadow(View view) {
+ super(view);
+ Drawable shadow = view.getContext().getDrawable(R.drawable.qs_tile_background_drag);
+ view.setBackground(shadow);
+ }
+
+ @Override
+ public void onDrawShadow(Canvas canvas) {
+ super.onDrawShadow(canvas);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPage.java b/packages/SystemUI/src/com/android/systemui/qs/QSPage.java
new file mode 100644
index 0000000..7871a62
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPage.java
@@ -0,0 +1,161 @@
+package com.android.systemui.qs;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import com.android.systemui.R;
+
+public class QSPage extends ViewGroup {
+
+ private static final String TAG = "QSPage";
+
+ static final float TILE_ASPECT = 1.2f;
+
+ private int mCellWidth;
+ private int mCellHeight;
+ private int mLargeCellWidth;
+ private int mLargeCellHeight;
+ private int mGridHeight;
+
+ private QSDragPanel mPanel;
+
+ private int mPage;
+
+ private boolean mAdapterEditingState;
+
+ public QSPage(Context context, QSDragPanel panel, int page) {
+ super(context);
+ mPanel = panel;
+ mPage = page;
+ updateResources();
+ setClipChildren(false);
+ setClipToPadding(false);
+ setClipToOutline(false);
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return false;
+ }
+
+ public int getPageIndex() {
+ return mPage;
+ }
+
+ public void updateResources() {
+ final Resources res = mContext.getResources();
+ final int columns = Math.max(1, res.getInteger(R.integer.quick_settings_num_columns));
+ mCellHeight = res.getDimensionPixelSize(R.dimen.qs_tile_height);
+ mCellWidth = (int)(mCellHeight * TILE_ASPECT);
+ mLargeCellHeight = res.getDimensionPixelSize(R.dimen.qs_dual_tile_height);
+ mLargeCellWidth = (int)(mLargeCellHeight * TILE_ASPECT);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ if (mPanel.mCurrentlyAnimating.isEmpty() && !mPanel.isDragging()) {
+ int r = -1;
+ int c = -1;
+ int rows = 0;
+ for (QSPanel.TileRecord ts : mPanel.mRecords) {
+ QSDragPanel.DragTileRecord record = (QSDragPanel.DragTileRecord) ts;
+ if (record.page != mPage) continue;
+ if (record.tileView.getVisibility() == GONE) continue;
+
+ if (mPage == 0 && r == 0 && c == 1 && mPanel.mFirstRowLarge) {
+ r = 1;
+ c = 0;
+ } else if (r == -1 || c == (mPanel.getColumnCount() - 1)) {
+ r++;
+ c = 0;
+ } else {
+ c++;
+ }
+ record.row = r;
+ record.col = c;
+ rows = r + 1;
+ }
+ mGridHeight = mPanel.getRowTop(rows);
+ }
+
+ View previousView = mPanel.getBrightnessView();
+ for (QSPanel.TileRecord ts : mPanel.mRecords) {
+ QSDragPanel.DragTileRecord record = (QSDragPanel.DragTileRecord) ts;
+ if (record.page != mPage) continue;
+ if (record.page != record.destinationPage) continue;
+
+ final boolean dual = dualRecord(record);
+ if (record.tileView.setDual(dual, record.tile.hasDualTargetsDetails())) {
+ record.tileView.handleStateChanged(record.tile.getState());
+ }
+ if (record.tileView.getVisibility() == GONE) continue;
+ final int cw = dual ? mLargeCellWidth : mCellWidth;
+ final int ch = dual ? mLargeCellHeight : mCellHeight;
+ record.tileView.measure(exactly(cw), exactly(ch));
+ previousView = record.tileView.updateAccessibilityOrder(previousView);
+ }
+ setMeasuredDimension(width, mGridHeight);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int w = getWidth();
+ boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
+ for (QSPanel.TileRecord ts : mPanel.mRecords) {
+ QSDragPanel.DragTileRecord record = (QSDragPanel.DragTileRecord) ts;
+ if (record.page != mPage) continue;
+ if (record.page != record.destinationPage) continue;
+ if (record.tileView.getVisibility() == GONE) continue;
+
+ final int cols = mPanel.getColumnCount(mPage, record.row);
+
+ int left = mPanel.getLeft(record.row, record.col, cols, dualRecord(record));
+ final int top = mPanel.getRowTop(record.row);
+ int right;
+ int tileWith = record.tileView.getMeasuredWidth();
+ if (isRtl) {
+ right = w - left;
+ left = right - tileWith;
+ } else {
+ right = left + tileWith;
+ }
+ if (mPanel.isAnimating(record)) {
+ record.tileView.layout(record.tileView.getLeft(), record.tileView.getTop(),
+ record.tileView.getRight(), record.tileView.getBottom());
+ continue;
+ }
+ if (false) {
+ Log.v(TAG + "-" + mPage, "laying out " + record + ", top: " + top + ", left: " + left);
+ Log.d(TAG, record + " wiping translations: "
+ + record.tileView.getTranslationX()
+ + ", " + record.tileView.getTranslationY());
+ }
+ record.tileView.setTranslationX(0);
+ record.tileView.setTranslationY(0);
+
+ record.destination.x = record.tileView.getX();
+ record.destination.y = record.tileView.getY();
+
+ record.tileView.layout(left, top, right, top + record.tileView.getMeasuredHeight());
+ }
+ }
+
+ public boolean getAdapterEditingState() {
+ return mAdapterEditingState;
+ }
+
+ public void setAdapterEditingState(boolean editing) {
+ this.mAdapterEditingState = editing;
+ }
+
+ public boolean dualRecord(QSPanel.TileRecord record) {
+ return mPanel.mFirstRowLarge && record.row == 0 && mPage == 0;
+ }
+
+ private static int exactly(int size) {
+ return MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 94d5170..77ede93 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -25,6 +25,8 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Handler;
import android.os.Message;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -45,40 +47,42 @@ import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import java.util.ArrayList;
import java.util.Collection;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.providers.CMSettings;
+
/** View that represents the quick settings tile panel. **/
public class QSPanel extends ViewGroup {
- private static final float TILE_ASPECT = 1.2f;
-
- private final Context mContext;
- protected final ArrayList<TileRecord> mRecords = new ArrayList<TileRecord>();
- private final View mDetail;
- private final ViewGroup mDetailContent;
- private final TextView mDetailSettingsButton;
- private final TextView mDetailDoneButton;
- protected final View mBrightnessView;
- private final QSDetailClipper mClipper;
+ protected static final float TILE_ASPECT = 1.2f;
+
+ protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
+ protected View mDetail;
+ protected ViewGroup mDetailContent;
+ protected TextView mDetailSettingsButton;
+ protected TextView mDetailDoneButton;
+ protected View mBrightnessView;
+ protected QSDetailClipper mClipper;
private final H mHandler = new H();
- private int mColumns;
- private int mCellWidth;
- private int mCellHeight;
- private int mLargeCellWidth;
- private int mLargeCellHeight;
- private int mPanelPaddingBottom;
- private int mDualTileUnderlap;
- private int mBrightnessPaddingTop;
- private int mGridHeight;
- private boolean mExpanded;
- private boolean mListening;
+ protected int mColumns;
+ protected int mCellWidth;
+ protected int mCellHeight;
+ protected int mLargeCellWidth;
+ protected int mLargeCellHeight;
+ protected int mPanelPaddingBottom;
+ protected int mDualTileUnderlap;
+ protected int mBrightnessPaddingTop;
+ protected int mGridHeight;
+ protected boolean mExpanded;
+ protected boolean mListening;
private boolean mClosingDetail;
- private Record mDetailRecord;
+ protected Record mDetailRecord;
private Callback mCallback;
- private BrightnessController mBrightnessController;
- private QSTileHost mHost;
+ protected BrightnessController mBrightnessController;
+ protected QSTileHost mHost;
- private QSFooter mFooter;
- private boolean mGridContentVisible = true;
+ protected QSFooter mFooter;
+ protected boolean mGridContentVisible = true;
public QSPanel(Context context) {
this(context, null);
@@ -87,17 +91,23 @@ public class QSPanel extends ViewGroup {
public QSPanel(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
+ setupViews();
+ }
- mDetail = LayoutInflater.from(context).inflate(R.layout.qs_detail, this, false);
+ /**
+ * THIS IS OVERRIDDEN in QSDragPanel
+ */
+ protected void setupViews() {
+ mDetail = LayoutInflater.from(mContext).inflate(R.layout.qs_detail, this, false);
mDetailContent = (ViewGroup) mDetail.findViewById(android.R.id.content);
mDetailSettingsButton = (TextView) mDetail.findViewById(android.R.id.button2);
mDetailDoneButton = (TextView) mDetail.findViewById(android.R.id.button1);
updateDetailText();
mDetail.setVisibility(GONE);
mDetail.setClickable(true);
- mBrightnessView = LayoutInflater.from(context).inflate(
+ mBrightnessView = LayoutInflater.from(mContext).inflate(
R.layout.quick_settings_brightness_dialog, this, false);
- mFooter = new QSFooter(this, context);
+ mFooter = new QSFooter(this, mContext);
addView(mDetail);
addView(mBrightnessView);
addView(mFooter.getView());
@@ -118,7 +128,26 @@ public class QSPanel extends ViewGroup {
});
}
- private void updateDetailText() {
+ /**
+ * Enable/disable brightness slider.
+ */
+ protected boolean showBrightnessSlider() {
+ boolean brightnessSliderEnabled = CMSettings.System.getIntForUser(
+ mContext.getContentResolver(), CMSettings.System.QS_SHOW_BRIGHTNESS_SLIDER,
+ 1, UserHandle.USER_CURRENT) == 1;
+ ToggleSlider brightnessSlider = (ToggleSlider) findViewById(R.id.brightness_slider);
+ if (brightnessSliderEnabled) {
+ mBrightnessView.setVisibility(VISIBLE);
+ brightnessSlider.setVisibility(VISIBLE);
+ } else {
+ mBrightnessView.setVisibility(GONE);
+ brightnessSlider.setVisibility(GONE);
+ }
+ updateResources();
+ return brightnessSliderEnabled;
+ }
+
+ protected void updateDetailText() {
mDetailDoneButton.setText(R.string.quick_settings_done);
mDetailSettingsButton.setText(R.string.quick_settings_more_settings);
}
@@ -206,7 +235,7 @@ public class QSPanel extends ViewGroup {
if (mListening) {
refreshAllTiles();
}
- if (listening) {
+ if (listening && showBrightnessSlider()) {
mBrightnessController.registerCallbacks();
} else {
mBrightnessController.unregisterCallbacks();
@@ -236,11 +265,11 @@ public class QSPanel extends ViewGroup {
showDetail(show, r);
}
- private void showDetail(boolean show, Record r) {
+ protected void showDetail(boolean show, Record r) {
mHandler.obtainMessage(H.SHOW_DETAIL, show ? 1 : 0, 0, r).sendToTarget();
}
- private void setTileVisibility(View v, int visibility) {
+ protected void setTileVisibility(View v, int visibility) {
mHandler.obtainMessage(H.SET_TILE_VISIBILITY, visibility, 0, v).sendToTarget();
}
@@ -252,6 +281,15 @@ public class QSPanel extends ViewGroup {
v.setVisibility(visibility);
}
+ protected void setTileEnabled(View v, boolean enabled) {
+ mHandler.obtainMessage(H.SET_TILE_ENABLED, enabled ? 1 : 0, 0, v).sendToTarget();
+ }
+
+ private void handleSetTileEnabled(View v, boolean enabled) {
+ if (enabled == v.isEnabled()) return;
+ v.setEnabled(enabled);
+ }
+
public void setTiles(Collection<QSTile<?>> tiles) {
for (TileRecord record : mRecords) {
removeView(record.tileView);
@@ -265,7 +303,7 @@ public class QSPanel extends ViewGroup {
}
}
- private void drawTile(TileRecord r, QSTile.State state) {
+ protected void drawTile(TileRecord r, QSTile.State state) {
final int visibility = state.visible ? VISIBLE : GONE;
setTileVisibility(r.tileView, visibility);
r.tileView.onStateChanged(state);
@@ -365,7 +403,7 @@ public class QSPanel extends ViewGroup {
}
}
- private void handleShowDetailTile(TileRecord r, boolean show) {
+ protected void handleShowDetailTile(TileRecord r, boolean show) {
if ((mDetailRecord != null) == show && mDetailRecord == r) return;
if (show) {
@@ -378,7 +416,7 @@ public class QSPanel extends ViewGroup {
handleShowDetailImpl(r, show, x, y);
}
- private void handleShowDetailImpl(Record r, boolean show, int x, int y) {
+ protected void handleShowDetailImpl(Record r, boolean show, int x, int y) {
boolean visibleDiff = (mDetailRecord != null) != show;
if (!visibleDiff && mDetailRecord == r) return; // already in right state
DetailAdapter detailAdapter = null;
@@ -425,7 +463,7 @@ public class QSPanel extends ViewGroup {
}
}
- private void setGridContentVisibility(boolean visible) {
+ protected void setGridContentVisibility(boolean visible) {
int newVis = visible ? VISIBLE : INVISIBLE;
for (int i = 0; i < mRecords.size(); i++) {
TileRecord tileRecord = mRecords.get(i);
@@ -433,7 +471,7 @@ public class QSPanel extends ViewGroup {
tileRecord.tileView.setVisibility(newVis);
}
}
- mBrightnessView.setVisibility(newVis);
+ mBrightnessView.setVisibility(showBrightnessSlider() ? newVis : GONE);
if (mGridContentVisible != visible) {
MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, newVis);
}
@@ -458,15 +496,12 @@ public class QSPanel extends ViewGroup {
int r = -1;
int c = -1;
int rows = 0;
- boolean rowIsDual = false;
for (TileRecord record : mRecords) {
if (record.tileView.getVisibility() == GONE) continue;
// wrap to next column if we've reached the max # of columns
- // also don't allow dual + single tiles on the same row
- if (r == -1 || c == (mColumns - 1) || rowIsDual != record.tile.supportsDualTargets()) {
+ if (r == -1 || c == (mColumns - 1)) {
r++;
c = 0;
- rowIsDual = record.tile.supportsDualTargets();
} else {
c++;
}
@@ -477,7 +512,8 @@ public class QSPanel extends ViewGroup {
View previousView = mBrightnessView;
for (TileRecord record : mRecords) {
- if (record.tileView.setDual(record.tile.supportsDualTargets())) {
+ final boolean dualTarget = record.tile.hasDualTargetsDetails();
+ if (record.tileView.setDual(dualTarget, dualTarget)) {
record.tileView.handleStateChanged(record.tile.getState());
}
if (record.tileView.getVisibility() == GONE) continue;
@@ -535,7 +571,7 @@ public class QSPanel extends ViewGroup {
}
}
- private int getRowTop(int row) {
+ protected int getRowTop(int row) {
if (row <= 0) return mBrightnessView.getMeasuredHeight() + mBrightnessPaddingTop;
return mBrightnessView.getMeasuredHeight() + mBrightnessPaddingTop
+ mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
@@ -556,13 +592,13 @@ public class QSPanel extends ViewGroup {
}
}
- private void fireToggleStateChanged(boolean state) {
+ protected void fireToggleStateChanged(boolean state) {
if (mCallback != null) {
mCallback.onToggleStateChanged(state);
}
}
- private void fireScanStateChanged(boolean state) {
+ protected void fireScanStateChanged(boolean state) {
if (mCallback != null) {
mCallback.onScanStateChanged(state);
}
@@ -579,24 +615,27 @@ public class QSPanel extends ViewGroup {
private class H extends Handler {
private static final int SHOW_DETAIL = 1;
private static final int SET_TILE_VISIBILITY = 2;
+ private static final int SET_TILE_ENABLED = 3;
@Override
public void handleMessage(Message msg) {
if (msg.what == SHOW_DETAIL) {
handleShowDetail((Record)msg.obj, msg.arg1 != 0);
} else if (msg.what == SET_TILE_VISIBILITY) {
handleSetTileVisibility((View)msg.obj, msg.arg1);
+ } else if (msg.what == SET_TILE_ENABLED) {
+ handleSetTileEnabled((View)msg.obj, msg.arg1 == 1);
}
}
}
- private static class Record {
+ protected static class Record {
View detailView;
DetailAdapter detailAdapter;
int x;
int y;
}
- protected static final class TileRecord extends Record {
+ protected static class TileRecord extends Record {
public QSTile<?> tile;
public QSTileView tileView;
public int row;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java
new file mode 100644
index 0000000..b00483c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java
@@ -0,0 +1,377 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.annotation.Nullable;
+import android.app.ActivityManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Animatable;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v4.view.animation.FastOutSlowInInterpolator;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.settings.ToggleSlider;
+
+import cyanogenmod.providers.CMSettings;
+
+public class QSPanelTopView extends FrameLayout {
+
+ private static final String TAG = "QSPanelTopView";
+
+ public static final int TOAST_DURATION = 2000;
+
+ protected View mEditTileInstructionView;
+ protected View mDropTarget;
+ protected View mBrightnessView;
+ protected TextView mToastView;
+ protected View mAddTarget;
+ protected TextView mEditInstructionText;
+
+ private boolean mEditing = false;
+ private boolean mDisplayingInstructions = false;
+ private boolean mDisplayingTrash = false;
+ private boolean mDisplayingToast = false;
+ public boolean mHasBrightnessSliderToDisplay = true;
+
+ private AnimatorSet mAnimator;
+ private ImageView mDropTargetIcon;
+
+ private SettingsObserver mSettingsObserver;
+ private boolean mListening;
+ private boolean mSkipAnimations;
+
+ public QSPanelTopView(Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public QSPanelTopView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public QSPanelTopView(Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ setFocusable(true);
+ mSettingsObserver = new SettingsObserver(new Handler());
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return mEditing;
+ }
+
+ public View getDropTarget() {
+ return mDropTarget;
+ }
+
+ public ImageView getDropTargetIcon() {
+ return mDropTargetIcon;
+ }
+
+ public View getBrightnessView() {
+ return mBrightnessView;
+ }
+
+ public View getAddTarget() {
+ return mAddTarget;
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mDropTarget = findViewById(R.id.delete_container);
+ mDropTargetIcon = (ImageView) findViewById(R.id.delete_target);
+ mEditTileInstructionView = findViewById(R.id.edit_container);
+ mBrightnessView = findViewById(R.id.brightness_container);
+ mToastView = (TextView) findViewById(R.id.qs_toast);
+ mAddTarget = findViewById(R.id.add_target);
+ mEditInstructionText = (TextView) findViewById(R.id.edit_text_instruction);
+ updateResources();
+ }
+
+ public void updateResources() {
+ if (mEditInstructionText != null) {
+ mEditInstructionText.setText(R.string.qs_tile_edit_header_instruction);
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ mBrightnessView.measure(QSDragPanel.exactly(width), MeasureSpec.UNSPECIFIED);
+ mEditTileInstructionView.measure(QSDragPanel.exactly(width), MeasureSpec.UNSPECIFIED);
+ mToastView.measure(QSDragPanel.exactly(width), MeasureSpec.UNSPECIFIED);
+
+ // if we are showing a brightness slider, always fit to that, otherwise only
+ // declare a height when editing.
+ int dh = mHasBrightnessSliderToDisplay ? mBrightnessView.getMeasuredHeight()
+ : mEditing ? mEditTileInstructionView.getMeasuredHeight() : 0;
+
+ mDropTarget.measure(QSDragPanel.exactly(width), QSDragPanel.atMost(dh));
+ mEditTileInstructionView.measure(QSDragPanel.exactly(width), QSDragPanel.atMost(dh));
+ mToastView.measure(QSDragPanel.exactly(width), QSDragPanel.atMost(dh));
+
+ setMeasuredDimension(width, dh);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ boolean animateToState = !isLaidOut();
+ super.onLayout(changed, left, top, right, bottom);
+ if (animateToState) {
+ goToState();
+ }
+ }
+
+ public void setEditing(boolean editing, boolean skipAnim) {
+ mEditing = editing;
+ if (editing) {
+ mDisplayingInstructions = true;
+ mDisplayingTrash = false;
+ } else {
+ mDisplayingInstructions = false;
+ mDisplayingTrash = false;
+ }
+ if (skipAnim) {
+ goToState();
+ } else {
+ animateToState();
+ }
+ }
+
+ public void onStopDrag() {
+ mDisplayingTrash = false;
+ animateToState();
+ }
+
+ public void onStartDrag() {
+ mDisplayingTrash = true;
+ animateToState();
+ }
+
+ public void setDropIcon(int resourceId, int colorResourceId) {
+ mDropTargetIcon.setImageResource(resourceId);
+ final Drawable drawable = mDropTargetIcon.getDrawable();
+
+ DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_ATOP);
+ DrawableCompat.setTint(drawable, mContext.getColor(colorResourceId));
+
+ if (drawable instanceof Animatable) {
+ ((Animatable) drawable).start();
+ }
+ }
+
+ public void toast(int textStrResId) {
+ mDisplayingToast = true;
+ mToastView.setText(textStrResId);
+ animateToState();
+ }
+
+ private Runnable mAnimateRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (mAnimator != null) {
+ mAnimator.cancel();
+ }
+ mAnimator = new AnimatorSet();
+
+ final boolean showToast = mDisplayingToast;
+ final boolean showTrash = mDisplayingTrash && !mDisplayingToast;
+ final boolean showBrightness = !mEditing && !mDisplayingToast;
+ final boolean showInstructions = mEditing
+ && mDisplayingInstructions
+ && !mDisplayingTrash
+ && !mDisplayingToast;
+
+ /*Log.d(TAG, "animating to state: "
+ + " showBrightness: " + showBrightness
+ + " showInstructions: " + showInstructions
+ + " showTrash: " + showTrash
+ + " showToast: " + showToast
+ );*/
+
+ final Animator brightnessAnimator = showBrightnessSlider(showBrightness);
+ final Animator instructionAnimator = showInstructions(showInstructions);
+ final Animator trashAnimator = showTrash(showTrash);
+ final Animator toastAnimator = showToast(showToast);
+
+ mAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ // if the view is already visible, keep it visible on animation start
+ // to animate it out, otherwise set it as invisible (to not affect view height)
+ mEditTileInstructionView.setVisibility(
+ getVisibilityForAnimation(mEditTileInstructionView, showInstructions));
+ mDropTarget.setVisibility(
+ getVisibilityForAnimation(mDropTarget, showTrash));
+ mToastView.setVisibility(
+ getVisibilityForAnimation(mToastView, showToast));
+ if (mHasBrightnessSliderToDisplay) {
+ mBrightnessView.setVisibility(
+ getVisibilityForAnimation(mBrightnessView, showBrightness));
+ }
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mToastView.setVisibility(showToast ? View.VISIBLE : View.GONE);
+ mEditTileInstructionView.setVisibility(showInstructions
+ ? View.VISIBLE : View.GONE);
+ mDropTarget.setVisibility(showTrash ? View.VISIBLE : View.GONE);
+ if (mHasBrightnessSliderToDisplay) {
+ mBrightnessView.setVisibility(showBrightness ? View.VISIBLE : View.GONE);
+ }
+
+ mAnimator = null;
+
+ requestLayout();
+
+ if (showToast) {
+ mToastView.bringToFront();
+ mToastView.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ mDisplayingToast = false;
+ animateToState();
+ }
+ }, TOAST_DURATION);
+ }
+ }
+ });
+
+ mAnimator.setDuration(mSkipAnimations ? 0 : 500);
+ mAnimator.setInterpolator(new FastOutSlowInInterpolator());
+ mAnimator.setStartDelay(mSkipAnimations ? 0 : 100);
+ mAnimator.playTogether(instructionAnimator, trashAnimator,
+ brightnessAnimator, toastAnimator);
+ mAnimator.start();
+ }
+ };
+
+ private int getVisibilityForAnimation(View view, boolean show) {
+ if (show || view.getVisibility() != View.GONE) {
+ return View.VISIBLE;
+ }
+ return View.INVISIBLE;
+ }
+
+ private void animateToState() {
+ mSkipAnimations = false;
+ post(mAnimateRunnable);
+ }
+
+ private void goToState() {
+ mSkipAnimations = true;
+ post(mAnimateRunnable);
+ }
+
+ private Animator animateView(View v, boolean show) {
+ return ObjectAnimator.ofFloat(v, "translationY", show ? 0 : -getMeasuredHeight());
+ }
+
+ private Animator showBrightnessSlider(boolean show) {
+ return animateView(mBrightnessView, show);
+ }
+
+ private Animator showInstructions(boolean show) {
+ return animateView(mEditTileInstructionView, show);
+ }
+
+ private Animator showTrash(boolean show) {
+ return animateView(mDropTarget, show);
+ }
+
+ private Animator showToast(boolean show) {
+ return animateView(mToastView, show);
+ }
+
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (mListening) {
+ mSettingsObserver.observe();
+ } else {
+ mSettingsObserver.unobserve();
+ }
+
+ }
+
+ class SettingsObserver extends UserContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.QS_SHOW_BRIGHTNESS_SLIDER), false, this, UserHandle.USER_ALL);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ int currentUserId = ActivityManager.getCurrentUser();
+ boolean showSlider = CMSettings.System.getIntForUser(resolver,
+ CMSettings.System.QS_SHOW_BRIGHTNESS_SLIDER, 1, currentUserId) == 1;
+ if (showSlider != mHasBrightnessSliderToDisplay) {
+ if (mAnimator != null) {
+ mAnimator.cancel(); // cancel everything we're animating
+ mAnimator = null;
+ }
+ mHasBrightnessSliderToDisplay = showSlider;
+ if (mBrightnessView != null) {
+ mBrightnessView.setVisibility(showSlider ? View.VISIBLE : View.GONE);
+
+ // as per showBrightnessSlider() in QSPanel.java, we look it up on-the-go
+ ToggleSlider brightnessSlider = (ToggleSlider) findViewById(R.id.brightness_slider);
+ if (brightnessSlider != null) {
+ brightnessSlider.setVisibility(showSlider ? View.VISIBLE : View.GONE);
+ }
+
+ }
+ getParent().requestLayout();
+ animateToState();
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSettings.java b/packages/SystemUI/src/com/android/systemui/qs/QSSettings.java
new file mode 100644
index 0000000..0a2b937
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSSettings.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs;
+
+import android.Manifest;
+import android.annotation.Nullable;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.ResultReceiver;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.CompoundButton;
+import android.widget.ScrollView;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.QSTileHost;
+import com.android.systemui.statusbar.phone.SystemUIDialog;
+
+public class QSSettings extends ScrollView {
+
+ private static final String RESULT_RECEIVER_EXTRA = "result_receiver";
+ private static final String LOCK_CLOCK_PACKAGENAME = "com.cyanogenmod.lockclock";
+ private static final String LOCK_CLOCK_PERM_CLASS = LOCK_CLOCK_PACKAGENAME
+ + ".weather.PermissionRequestActivity";
+
+ private QSTileHost mHost;
+
+ private boolean mAdapterEditingState;
+ private QSBooleanSettingRow mShowWeather;
+ private ResultReceiver mResultReceiver;
+
+ public QSSettings(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ setFillViewport(true);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+
+ findViewById(R.id.reset_tiles).setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ initiateTileReset();
+ }
+ });
+
+ mShowWeather = (QSBooleanSettingRow) findViewById(R.id.show_weather);
+ mShowWeather.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if (isChecked) {
+ PackageManager packageManager = getContext().getPackageManager();
+ if (packageManager.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION,
+ LOCK_CLOCK_PACKAGENAME) != PackageManager.PERMISSION_GRANTED) {
+ mShowWeather.setChecked(false);
+ requestPermission();
+ mHost.collapsePanels();
+ }
+ }
+ }
+ });
+ }
+
+ public Parcelable getResultReceiverForSending() {
+ if (mResultReceiver == null) {
+ mResultReceiver = new ResultReceiver(new Handler()) {
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ super.onReceiveResult(resultCode, resultData);
+ if (resultCode == Activity.RESULT_OK) {
+ mShowWeather.setChecked(true);
+ }
+ mResultReceiver = null;
+ }
+ };
+ }
+ Parcel parcel = Parcel.obtain();
+ mResultReceiver.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ ResultReceiver receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+ return receiverForSending;
+ }
+
+ private void requestPermission() {
+ Intent i = new Intent();
+ i.setClassName(LOCK_CLOCK_PACKAGENAME, LOCK_CLOCK_PERM_CLASS);
+ i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ i.putExtra(RESULT_RECEIVER_EXTRA, getResultReceiverForSending());
+ getContext().startActivity(i);
+ }
+
+ private void initiateTileReset() {
+ final AlertDialog d = new AlertDialog.Builder(mContext)
+ .setMessage(R.string.qs_tiles_reset_confirmation)
+ .setNegativeButton(R.string.cancel, null)
+ .setPositiveButton(com.android.internal.R.string.reset,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mHost.initiateReset();
+ }
+ }).create();
+ SystemUIDialog.makeSystemUIDialog(d);
+ d.show();
+ }
+
+ public void setHost(QSTileHost host) {
+ mHost = host;
+ }
+
+ public boolean getAdapterEditingState() {
+ return mAdapterEditingState;
+ }
+
+ public void setAdapterEditingState(boolean editing) {
+ this.mAdapterEditingState = editing;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index e4a37fb..01a170f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -20,7 +20,9 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Animatable;
+import android.graphics.Bitmap;
import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
@@ -30,7 +32,9 @@ import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.RemoteViews;
import com.android.systemui.qs.QSTile.State;
+import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.FlashlightController;
@@ -41,6 +45,7 @@ import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RotationLockController;
import com.android.systemui.statusbar.policy.ZenModeController;
+import cyanogenmod.app.StatusBarPanelCustomTile;
import java.util.Collection;
import java.util.Objects;
@@ -85,7 +90,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
mHandler = new H(host.getLooper());
}
- public boolean supportsDualTargets() {
+ public boolean hasDualTargetsDetails() {
return false;
}
@@ -106,6 +111,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
Boolean getToggleState();
View createDetailView(Context context, View convertView, ViewGroup parent);
Intent getSettingsIntent();
+ StatusBarPanelCustomTile getCustomTile();
void setToggleState(boolean state);
int getMetricsCategory();
}
@@ -320,10 +326,12 @@ public abstract class QSTile<TState extends State> implements Listenable {
}
public interface Host {
+ void removeCustomTile(StatusBarPanelCustomTile customTile);
void startActivityDismissingKeyguard(Intent intent);
void startActivityDismissingKeyguard(PendingIntent intent);
void warn(String message, Throwable t);
void collapsePanels();
+ RemoteViews.OnClickHandler getOnClickHandler();
Looper getLooper();
Context getContext();
Collection<QSTile<?>> getTiles();
@@ -337,9 +345,18 @@ public abstract class QSTile<TState extends State> implements Listenable {
CastController getCastController();
FlashlightController getFlashlightController();
KeyguardMonitor getKeyguardMonitor();
+ BatteryController getBatteryController();
+ boolean isEditing();
+ void setEditing(boolean editing);
+ void resetTiles();
+ void goToSettingsPage();
public interface Callback {
void onTilesChanged();
+ void setEditing(boolean editing);
+ boolean isEditing();
+ void goToSettingsPage();
+ void resetTiles();
}
}
@@ -352,6 +369,42 @@ public abstract class QSTile<TState extends State> implements Listenable {
}
}
+ protected class ExternalIcon extends AnimationIcon {
+ private Context mPackageContext;
+ private String mPkg;
+ private int mResId;
+
+ public ExternalIcon(String pkg, int resId) {
+ super(resId);
+ mPkg = pkg;
+ mResId = resId;
+ }
+
+ @Override
+ public Drawable getDrawable(Context context) {
+ // Get the drawable from the package context
+ Drawable d = null;
+ try {
+ d = super.getDrawable(getPackageContext());
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + mPkg + " id=" + mResId, t);
+ }
+ return d;
+ }
+
+ private Context getPackageContext() {
+ if (mPackageContext == null) {
+ try {
+ mPackageContext = mContext.createPackageContext(mPkg, 0);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error creating package context" + mPkg, t);
+ return null;
+ }
+ }
+ return mPackageContext;
+ }
+ }
+
public static class ResourceIcon extends Icon {
private static final SparseArray<Icon> ICONS = new SparseArray<Icon>();
@@ -390,6 +443,21 @@ public abstract class QSTile<TState extends State> implements Listenable {
}
}
+ protected class ExternalBitmapIcon extends Icon {
+ private Bitmap mBitmap;
+
+ public ExternalBitmapIcon(Bitmap bitmap) {
+ mBitmap = bitmap;
+ }
+
+ @Override
+ public Drawable getDrawable(Context context) {
+ // This is gross
+ BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), mBitmap);
+ return bitmapDrawable;
+ }
+ }
+
protected class AnimationIcon extends ResourceIcon {
private boolean mAllowAnimation;
@@ -404,13 +472,14 @@ public abstract class QSTile<TState extends State> implements Listenable {
@Override
public Drawable getDrawable(Context context) {
// workaround: get a clean state for every new AVD
- final AnimatedVectorDrawable d = (AnimatedVectorDrawable) context.getDrawable(mResId)
- .getConstantState().newDrawable();
- d.start();
- if (mAllowAnimation) {
- mAllowAnimation = false;
- } else {
- d.stop(); // skip directly to end state
+ final Drawable d = super.getDrawable(context).getConstantState().newDrawable();
+ if (d instanceof AnimatedVectorDrawable) {
+ ((AnimatedVectorDrawable)d).start();
+ if (mAllowAnimation) {
+ mAllowAnimation = false;
+ } else {
+ ((AnimatedVectorDrawable)d).stop(); // skip directly to end state
+ }
}
return d;
}
@@ -431,6 +500,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
public static class State {
public boolean visible;
+ public boolean enabled = true;
public Icon icon;
public String label;
public String contentDescription;
@@ -441,6 +511,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
if (other == null) throw new IllegalArgumentException();
if (!other.getClass().equals(getClass())) throw new IllegalArgumentException();
final boolean changed = other.visible != visible
+ || !Objects.equals(other.enabled, enabled)
|| !Objects.equals(other.icon, icon)
|| !Objects.equals(other.label, label)
|| !Objects.equals(other.contentDescription, contentDescription)
@@ -448,6 +519,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
|| !Objects.equals(other.dualLabelContentDescription,
dualLabelContentDescription);
other.visible = visible;
+ other.enabled = enabled;
other.icon = icon;
other.label = label;
other.contentDescription = contentDescription;
@@ -464,6 +536,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
protected StringBuilder toStringBuilder() {
final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('[');
sb.append("visible=").append(visible);
+ sb.append(",enabled=").append(enabled);
sb.append(",icon=").append(icon);
sb.append(",label=").append(label);
sb.append(",contentDescription=").append(contentDescription);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
index 6d26a3b..7c63782 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,10 +17,13 @@
package com.android.systemui.qs;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
@@ -27,6 +31,7 @@ import android.graphics.drawable.RippleDrawable;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.util.Log;
import android.util.MathUtils;
import android.util.TypedValue;
import android.view.Gravity;
@@ -48,6 +53,8 @@ public class QSTileView extends ViewGroup {
private static final Typeface CONDENSED = Typeface.create("sans-serif-condensed",
Typeface.NORMAL);
+ private static final String TAG = "QSTileView";
+
protected final Context mContext;
private final View mIcon;
private final View mDivider;
@@ -62,6 +69,7 @@ public class QSTileView extends ViewGroup {
private TextView mLabel;
private QSDualTileLabel mDualLabel;
private boolean mDual;
+ private boolean mDualDetails;
private OnClickListener mClickPrimary;
private OnClickListener mClickSecondary;
private OnLongClickListener mLongClick;
@@ -124,31 +132,34 @@ public class QSTileView extends ViewGroup {
private void recreateLabel() {
CharSequence labelText = null;
CharSequence labelDescription = null;
- if (mLabel != null) {
+ if (mLabel != null && mLabel.isAttachedToWindow()) {
labelText = mLabel.getText();
removeView(mLabel);
- mLabel = null;
}
- if (mDualLabel != null) {
+ if (mDualLabel != null && mDualLabel.isAttachedToWindow()) {
labelText = mDualLabel.getText();
- labelDescription = mLabel.getContentDescription();
+ labelDescription = mDualLabel.getContentDescription();
removeView(mDualLabel);
- mDualLabel = null;
}
final Resources res = mContext.getResources();
if (mDual) {
- mDualLabel = new QSDualTileLabel(mContext);
- mDualLabel.setId(View.generateViewId());
- mDualLabel.setBackgroundResource(R.drawable.btn_borderless_rect);
- mDualLabel.setFirstLineCaret(mContext.getDrawable(R.drawable.qs_dual_tile_caret));
- mDualLabel.setTextColor(mContext.getColor(R.color.qs_tile_text));
- mDualLabel.setPadding(0, mDualTileVerticalPaddingPx, 0, mDualTileVerticalPaddingPx);
- mDualLabel.setTypeface(CONDENSED);
- mDualLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- res.getDimensionPixelSize(R.dimen.qs_tile_text_size));
- mDualLabel.setClickable(true);
- mDualLabel.setOnClickListener(mClickSecondary);
- mDualLabel.setFocusable(true);
+ if (mDualLabel == null) {
+ mDualLabel = new QSDualTileLabel(mContext);
+ mDualLabel.setId(View.generateViewId());
+ mDualLabel.setBackgroundResource(R.drawable.btn_borderless_rect);
+ if (mDualDetails) {
+ mDualLabel.setFirstLineCaret(mContext.getDrawable(R.drawable.qs_dual_tile_caret));
+ }
+ mDualLabel.setTextColor(mContext.getColor(R.color.qs_tile_text));
+ mDualLabel.setPadding(0, mDualTileVerticalPaddingPx, 0, mDualTileVerticalPaddingPx);
+ mDualLabel.setTypeface(CONDENSED);
+ mDualLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+ res.getDimensionPixelSize(R.dimen.qs_tile_text_size));
+ mDualLabel.setClickable(true);
+ mDualLabel.setFocusable(true);
+ mDualLabel.setOnClickListener(mDualDetails ? mClickSecondary : mClickPrimary);
+ mDualLabel.setOnLongClickListener(mLongClick);
+ }
if (labelText != null) {
mDualLabel.setText(labelText);
}
@@ -158,15 +169,18 @@ public class QSTileView extends ViewGroup {
addView(mDualLabel);
mDualLabel.setAccessibilityTraversalAfter(mTopBackgroundView.getId());
} else {
- mLabel = new TextView(mContext);
- mLabel.setTextColor(mContext.getColor(R.color.qs_tile_text));
- mLabel.setGravity(Gravity.CENTER_HORIZONTAL);
- mLabel.setMinLines(2);
- mLabel.setPadding(0, 0, 0, 0);
- mLabel.setTypeface(CONDENSED);
- mLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- res.getDimensionPixelSize(R.dimen.qs_tile_text_size));
- mLabel.setClickable(false);
+ if (mLabel == null) {
+ mLabel = new TextView(mContext);
+ mLabel.setTextColor(mContext.getColor(R.color.qs_tile_text));
+ mLabel.setGravity(Gravity.CENTER_HORIZONTAL);
+ mLabel.setMinLines(2);
+ mLabel.setPadding(0, 0, 0, 0);
+ mLabel.setTypeface(CONDENSED);
+ mLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+ res.getDimensionPixelSize(R.dimen.qs_tile_text_size));
+ mLabel.setClickable(false);
+ mLabel.setFocusable(false);
+ }
if (labelText != null) {
mLabel.setText(labelText);
}
@@ -174,39 +188,59 @@ public class QSTileView extends ViewGroup {
}
}
- public boolean setDual(boolean dual) {
+ public boolean isDual() {
+ return mDual;
+ }
+
+ public boolean setDual(boolean dual, boolean hasDetails) {
final boolean changed = dual != mDual;
mDual = dual;
+ mDualDetails = hasDetails;
if (changed) {
recreateLabel();
}
- if (mTileBackground instanceof RippleDrawable) {
- setRipple((RippleDrawable) mTileBackground);
- }
+
if (dual) {
mTopBackgroundView.setOnClickListener(mClickPrimary);
+ mTopBackgroundView.setOnLongClickListener(mLongClick);
setOnClickListener(null);
- setClickable(false);
+ setOnLongClickListener(null);
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
- mTopBackgroundView.setBackground(mTileBackground);
} else {
mTopBackgroundView.setOnClickListener(null);
- mTopBackgroundView.setClickable(false);
+ mTopBackgroundView.setOnLongClickListener(null);
setOnClickListener(mClickPrimary);
setOnLongClickListener(mLongClick);
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
- setBackground(mTileBackground);
}
+ setTileBackground();
+ mTopBackgroundView.setClickable(dual);
mTopBackgroundView.setFocusable(dual);
+ setClickable(!dual);
setFocusable(!dual);
mDivider.setVisibility(dual ? VISIBLE : GONE);
+ mTopBackgroundView.setVisibility(dual ? VISIBLE : GONE);
+
+ if (changed) {
+ getParent().requestLayout();
+ }
postInvalidate();
return changed;
}
+ protected void setTileBackground() {
+ if (mTileBackground instanceof RippleDrawable) {
+ setRipple((RippleDrawable) mTileBackground);
+ } else {
+ setRipple(null);
+ }
+ mTopBackgroundView.setBackground(mDual ? mTileBackground : null);
+ setBackground(!mDual ? mTileBackground : null);
+ }
+
private void setRipple(RippleDrawable tileBackground) {
mRipple = tileBackground;
- if (getWidth() != 0) {
+ if (getWidth() != 0 && mRipple != null) {
updateRippleSize(getWidth(), getHeight());
}
}
@@ -225,7 +259,7 @@ public class QSTileView extends ViewGroup {
return icon;
}
- private Drawable newTileBackground() {
+ public Drawable newTileBackground() {
final int[] attrs = new int[] { android.R.attr.selectableItemBackgroundBorderless };
final TypedArray ta = mContext.obtainStyledAttributes(attrs);
final Drawable d = ta.getDrawable(0);
@@ -285,7 +319,7 @@ public class QSTileView extends ViewGroup {
private void updateRippleSize(int width, int height) {
// center the touch feedback on the center of the icon, and dial it down a bit
final int cx = width / 2;
- final int cy = mDual ? mIcon.getTop() + mIcon.getHeight() / 2 : height / 2;
+ final int cy = mDual ? mIcon.getTop() + mIcon.getHeight() : height / 2;
final int rad = (int)(mIcon.getHeight() * 1.25f);
mRipple.setHotspotBounds(cx - rad, cy - rad, cx + rad, cy + rad);
}
@@ -302,9 +336,20 @@ public class QSTileView extends ViewGroup {
mDualLabel.setText(state.label);
mDualLabel.setContentDescription(state.dualLabelContentDescription);
mTopBackgroundView.setContentDescription(state.contentDescription);
+ if (!Objects.equals(state.enabled, mDualLabel.isEnabled())) {
+ mTopBackgroundView.setEnabled(state.enabled);
+ mDualLabel.setEnabled(state.enabled);
+ mDualLabel.setTextColor(mContext.getResources().getColor(state.enabled ?
+ R.color.qs_tile_text : R.color.qs_tile_text_disabled));
+ }
} else {
mLabel.setText(state.label);
setContentDescription(state.contentDescription);
+ if (!Objects.equals(state.enabled, mLabel.isEnabled())) {
+ mLabel.setEnabled(state.enabled);
+ mLabel.setTextColor(mContext.getResources().getColor(state.enabled ?
+ R.color.qs_tile_text : R.color.qs_tile_text_disabled));
+ }
}
}
@@ -323,6 +368,14 @@ public class QSTileView extends ViewGroup {
}
}
}
+ if (!Objects.equals(state.enabled, iv.isEnabled())) {
+ iv.setEnabled(state.enabled);
+ if (state.enabled) {
+ iv.setColorFilter(null);
+ } else {
+ iv.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
+ }
+ }
}
public void onStateChanged(QSTile.State state) {
@@ -349,6 +402,37 @@ public class QSTileView extends ViewGroup {
return lastView;
}
+ public void setEditing(boolean editing) {
+ if (mDual) {
+ if (mTopBackgroundView != null) {
+ mTopBackgroundView.setFocusable(!editing);
+ mTopBackgroundView.setClickable(!editing);
+ }
+ if (mDualLabel != null) {
+ mDualLabel.setFocusable(!editing);
+ mDualLabel.setClickable(!editing);
+ }
+ setClickable(editing);
+ setFocusable(editing);
+ } else {
+ if (mLabel != null) {
+ mLabel.setFocusable(!editing);
+ }
+ if (mRipple != null) {
+ mRipple.setVisible(!editing, false);
+ }
+ }
+
+ // clean up extra label view if needed
+ if (!editing) {
+ if (mDual && mLabel != null) {
+ mLabel = null;
+ } else if (!mDual && mDualLabel != null) {
+ mDualLabel = null;
+ }
+ }
+ }
+
private class H extends Handler {
private static final int STATE_CHANGED = 1;
public H() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSViewPager.java b/packages/SystemUI/src/com/android/systemui/qs/QSViewPager.java
new file mode 100644
index 0000000..3dc5d27
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSViewPager.java
@@ -0,0 +1,105 @@
+package com.android.systemui.qs;
+
+import android.animation.Animator;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.AccelerateInterpolator;
+
+public class QSViewPager extends ViewPager {
+
+ private static final String TAG = "QSViewPager";
+
+ protected static final float SCROLL_PERCENT = .10f;
+
+ QSDragPanel mDragPanel;
+
+ public QSViewPager(Context context) {
+ super(context);
+ }
+
+ public void setDragPanel(QSDragPanel p) {
+ mDragPanel = p;
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return mDragPanel.isEditing();
+ }
+
+ @Override
+ public boolean canScrollHorizontally(int direction) {
+ if (direction < 0
+ && mDragPanel.isDragging()
+ && getCurrentItem() == 1) {
+ // can't scroll left while not editing, OR dragging on the first page
+ return false;
+ }
+ return super.canScrollHorizontally(direction);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ int height = 0;
+ for (int i = 0; i < getChildCount(); i++) {
+ View child = getChildAt(i);
+ child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+ int h = child.getMeasuredHeight();
+ if (h > height && !(child instanceof QSSettings)) height = h;
+ }
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+
+ public void animatePagerTransition(final boolean forward) {
+ ValueAnimator animator = ValueAnimator.ofInt(0, getWidth());
+ animator.addListener(new Animator.AnimatorListener() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (isFakeDragging()) {
+ endFakeDrag();
+ }
+ }
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ if (isFakeDragging()) {
+ endFakeDrag();
+ }
+ }
+
+ @Override
+ public void onAnimationRepeat(Animator animation) {
+ }
+ });
+
+ animator.setInterpolator(new AccelerateInterpolator());
+ animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+
+ private int oldDragPosition = 0;
+
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ if (isFakeDragging()) {
+ int dragPosition = (Integer) animation.getAnimatedValue();
+ int dragOffset = dragPosition - oldDragPosition;
+ oldDragPosition = dragPosition;
+ fakeDragBy(dragOffset * (forward ? -1 : 1));
+ }
+ }
+ });
+ if (beginFakeDrag()) {
+ animator.setDuration(500);
+ animator.start();
+ } else {
+ Log.e(TAG, "can't start fake drag?");
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java
new file mode 100644
index 0000000..b970a4c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AdbOverNetworkTile.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.net.NetworkUtils;
+import android.net.Uri;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+
+import java.net.InetAddress;
+
+import cyanogenmod.providers.CMSettings;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+public class AdbOverNetworkTile extends QSTile<QSTile.BooleanState> {
+
+ private boolean mListening;
+
+ private static final Intent SETTINGS_DEVELOPMENT =
+ new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ CMSettings.Secure.putIntForUser(mContext.getContentResolver(),
+ CMSettings.Secure.ADB_PORT, getState().value ? -1 : 5555,
+ UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(SETTINGS_DEVELOPMENT);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = isAdbEnabled();
+ if (!state.visible) {
+ return;
+ }
+ state.value = isAdbNetworkEnabled();
+ if (state.value) {
+ WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+
+ if (wifiInfo != null) {
+ // if wifiInfo is not null, set the label to "hostAddress"
+ InetAddress address = NetworkUtils.intToInetAddress(wifiInfo.getIpAddress());
+ state.label = address.getHostAddress();
+ } else {
+ // if wifiInfo is null, set the label without host address
+ state.label = mContext.getString(R.string.quick_settings_network_adb_label);
+ }
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_network_adb_on);
+ } else {
+ // Otherwise set the disabled label and icon
+ state.label = mContext.getString(R.string.quick_settings_network_adb_label);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_network_adb_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_ADB_OVER_NETWORK;
+ }
+
+ private boolean isAdbEnabled() {
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.ADB_ENABLED, 0) > 0;
+ }
+
+ private boolean isAdbNetworkEnabled() {
+ return CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.ADB_PORT, 0) > 0;
+ }
+
+ public AdbOverNetworkTile(Host host) {
+ super(host);
+ }
+
+ private ContentObserver mObserver = new ContentObserver(mHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ refreshState();
+ }
+ };
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening != listening) {
+ mListening = listening;
+ if (listening) {
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.ADB_PORT),
+ false, mObserver);
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.ADB_ENABLED),
+ false, mObserver);
+ } else {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
index 49f8d1c..bf28dbf 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
+import android.provider.Settings;
import android.provider.Settings.Global;
import com.android.internal.logging.MetricsLogger;
@@ -30,6 +32,9 @@ import com.android.systemui.qs.QSTile;
/** Quick settings tile: Airplane mode **/
public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent WIRELESS_SETTINGS = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
+
private final AnimationIcon mEnable =
new AnimationIcon(R.drawable.ic_signal_airplane_enable_animation);
private final AnimationIcon mDisable =
@@ -62,6 +67,11 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
mDisable.setAllowAnimation(true);
}
+ @Override
+ public void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(WIRELESS_SETTINGS);
+ }
+
private void setEnabled(boolean enabled) {
final ConnectivityManager mgr =
(ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AmbientDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AmbientDisplayTile.java
new file mode 100644
index 0000000..cc08d02
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AmbientDisplayTile.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.provider.Settings.Secure;
+
+import com.android.systemui.qs.SecureSetting;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.R;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/** Quick settings tile: Ambient Display **/
+public class AmbientDisplayTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent DISPLAY_SETTINGS = new Intent("android.settings.DISPLAY_SETTINGS");
+
+ private final SecureSetting mSetting;
+
+ public AmbientDisplayTile(Host host) {
+ super(host);
+
+ mSetting = new SecureSetting(mContext, mHandler, Secure.DOZE_ENABLED) {
+ @Override
+ protected void handleValueChanged(int value, boolean observedChange) {
+ handleRefreshState(value);
+ }
+ };
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ setEnabled(!mState.value);
+ refreshState();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(DISPLAY_SETTINGS);
+ }
+
+ private void setEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.DOZE_ENABLED,
+ enabled ? 1 : 0);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ final int value = arg instanceof Integer ? (Integer)arg : mSetting.getValue();
+ final boolean enable = value != 0;
+ state.value = enable;
+ state.visible = true;
+ state.label = mContext.getString(R.string.quick_settings_ambient_display_label);
+ if (enable) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_ambientdisplay_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_ambient_display_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_ambientdisplay_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_ambient_display_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_AMBIENT_DISPLAY;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (mState.value) {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_ambient_display_changed_on);
+ } else {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_ambient_display_changed_off);
+ }
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ // Do nothing
+ }
+} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
new file mode 100644
index 0000000..1a60fa9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.PowerManager;
+import android.provider.Settings;
+
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.BatteryStateRegistar;
+
+import cyanogenmod.power.PerformanceManager;
+
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/** Quick settings tile: Battery saver **/
+public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent BATTERY_SETTINGS = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY);
+
+ private final PowerManager mPm;
+ private final boolean mHasPowerProfiles;
+
+ private boolean mListening;
+ private boolean mPluggedIn;
+
+ public BatterySaverTile(Host host) {
+ super(host);
+ mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mHasPowerProfiles = PerformanceManager.getInstance(mContext).getNumberOfProfiles() > 0;
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ public void handleClick() {
+ mPm.setPowerSaveMode(!mState.value);
+ refreshState(!mState.value);
+ }
+
+ @Override
+ public void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(BATTERY_SETTINGS);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.value = arg instanceof Boolean ? (boolean) arg : mPm.isPowerSaveMode();
+ state.visible = !mHasPowerProfiles;
+ state.label = mContext.getString(R.string.quick_settings_battery_saver_label);
+ if (state.value) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_battery_saver_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_battery_saver_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_battery_saver_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_battery_saver_off);
+ }
+
+ state.enabled = !mPluggedIn;
+ if (mPluggedIn) {
+ state.label = mContext.getString(R.string.quick_settings_battery_saver_label_charging);
+ }
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (mState.value) {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_battery_saver_changed_on);
+ } else {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_battery_saver_changed_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_BATTERY_SAVER;
+ }
+
+ private BatteryStateRegistar.BatteryStateChangeCallback mBatteryState
+ = new BatteryStateRegistar.BatteryStateChangeCallback() {
+ @Override
+ public void onBatteryLevelChanged(boolean present, int level, boolean pluggedIn,
+ boolean charging) {
+ mPluggedIn = pluggedIn || charging;
+ refreshState();
+ }
+
+ @Override
+ public void onPowerSaveChanged() {
+ refreshState();
+ }
+
+ @Override
+ public void onBatteryStyleChanged(int style, int percentMode) {
+ // ignore
+ }
+ };
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+
+ if (listening) {
+ getHost().getBatteryController().addStateChangedCallback(mBatteryState);
+ } else {
+ getHost().getBatteryController().removeStateChangedCallback(mBatteryState);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index abce31f..cdedc26 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,17 +25,25 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
import com.android.internal.logging.MetricsLogger;
+
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
import com.android.systemui.R;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
+import com.android.systemui.qs.QSDetailItemsList;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.BluetoothController;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.Set;
+import java.util.List;
/** Quick settings tile: Bluetooth **/
public class BluetoothTile extends QSTile<QSTile.BooleanState> {
@@ -50,7 +59,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
}
@Override
- public boolean supportsDualTargets() {
+ public boolean hasDualTargetsDetails() {
return true;
}
@@ -90,6 +99,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(BLUETOOTH_SETTINGS);
+ }
+
+ @Override
protected void handleUpdateState(BooleanState state, Object arg) {
final boolean supported = mController.isBluetoothSupported();
final boolean enabled = mController.isBluetoothEnabled();
@@ -165,8 +179,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
}
};
- private final class BluetoothDetailAdapter implements DetailAdapter, QSDetailItems.Callback {
- private QSDetailItems mItems;
+ private final class BluetoothDetailAdapter implements DetailAdapter,
+ QSDetailItems.Callback, AdapterView.OnItemClickListener {
+ private QSDetailItemsList mItemsList;
+ private QSDetailItemsList.QSDetailListAdapter mAdapter;
+ private List<Item> mBluetoothItems = new ArrayList<>();
@Override
public int getTitle() {
@@ -184,6 +201,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
public void setToggleState(boolean state) {
MetricsLogger.action(mContext, MetricsLogger.QS_BLUETOOTH_TOGGLE, state);
mController.setBluetoothEnabled(state);
@@ -197,29 +219,35 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
@Override
public View createDetailView(Context context, View convertView, ViewGroup parent) {
- mItems = QSDetailItems.convertOrInflate(context, convertView, parent);
- mItems.setTagSuffix("Bluetooth");
- mItems.setEmptyState(R.drawable.ic_qs_bluetooth_detail_empty,
+ mItemsList = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ ListView listView = mItemsList.getListView();
+ listView.setDivider(null);
+ listView.setOnItemClickListener(this);
+ listView.setAdapter(mAdapter =
+ new QSDetailItemsList.QSDetailListAdapter(context, mBluetoothItems));
+ mAdapter.setCallback(this);
+ mItemsList.setEmptyState(R.drawable.ic_qs_bluetooth_detail_empty,
R.string.quick_settings_bluetooth_detail_empty_text);
- mItems.setCallback(this);
- mItems.setMinHeightInItems(0);
+
updateItems();
- setItemsVisible(mState.value);
- return mItems;
+ return mItemsList;
}
public void setItemsVisible(boolean visible) {
- if (mItems == null) return;
- mItems.setItemsVisible(visible);
+ if (mAdapter == null) return;
+ if (visible) {
+ updateItems();
+ } else {
+ mBluetoothItems.clear();
+ }
+ mAdapter.notifyDataSetChanged();
}
private void updateItems() {
- if (mItems == null) return;
- Item[] items = null;
- final Collection<CachedBluetoothDevice> devices = mController.getDevices();
+ if (mAdapter == null) return;
+ final Collection<CachedBluetoothDevice> devices = mController.getDevices();
if (devices != null) {
- items = new Item[getBondedCount(devices)];
- int i = 0;
+ mBluetoothItems.clear();
for (CachedBluetoothDevice device : devices) {
if (device.getBondState() == BluetoothDevice.BOND_NONE) continue;
final Item item = new Item();
@@ -235,10 +263,10 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
item.line2 = mContext.getString(R.string.quick_settings_connecting);
}
item.tag = device;
- items[i++] = item;
+ mBluetoothItems.add(item);
}
}
- mItems.setItems(items);
+ mAdapter.notifyDataSetChanged();
}
private int getBondedCount(Collection<CachedBluetoothDevice> devices) {
@@ -253,12 +281,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
@Override
public void onDetailItemClick(Item item) {
- if (item == null || item.tag == null) return;
- final CachedBluetoothDevice device = (CachedBluetoothDevice) item.tag;
- if (device != null && device.getMaxConnectionState()
- == BluetoothProfile.STATE_DISCONNECTED) {
- mController.connect(device);
- }
+ // noop
}
@Override
@@ -269,5 +292,16 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
mController.disconnect(device);
}
}
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ Item item = (Item) parent.getItemAtPosition(position);
+ if (item == null || item.tag == null) return;
+ final CachedBluetoothDevice device = (CachedBluetoothDevice) item.tag;
+ if (device != null && device.getMaxConnectionState()
+ == BluetoothProfile.STATE_DISCONNECTED) {
+ mController.connect(device);
+ }
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CaffeineTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CaffeineTile.java
new file mode 100644
index 0000000..fb6ec42
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CaffeineTile.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.CountDownTimer;
+import android.os.PowerManager;
+import android.os.SystemClock;
+import android.provider.Settings;
+
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.R;
+
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/** Quick settings tile: Caffeine **/
+public class CaffeineTile extends QSTile<QSTile.BooleanState> {
+
+ private final PowerManager.WakeLock mWakeLock;
+ private int mSecondsRemaining;
+ private int mDuration;
+ private static int[] DURATIONS = new int[] {
+ 5 * 60, // 5 min
+ 10 * 60, // 10 min
+ 30 * 60, // 30 min
+ -1, // infinity
+ };
+ private CountDownTimer mCountdownTimer = null;
+ public long mLastClickTime = -1;
+ private final Receiver mReceiver = new Receiver();
+ private boolean mListening;
+
+ public CaffeineTile(Host host) {
+ super(host);
+ mWakeLock = ((PowerManager) mContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(
+ PowerManager.FULL_WAKE_LOCK, "CaffeineTile");
+ mReceiver.init();
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleDestroy() {
+ super.handleDestroy();
+ stopCountDown();
+ mReceiver.destroy();
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ }
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ }
+
+ @Override
+ public void handleClick() {
+ // If last user clicks < 5 seconds
+ // we cycle different duration
+ // otherwise toggle on/off
+ if (mWakeLock.isHeld() && (mLastClickTime != -1) &&
+ (SystemClock.elapsedRealtime() - mLastClickTime < 5000)) {
+ // cycle duration
+ mDuration++;
+ if (mDuration >= DURATIONS.length) {
+ // all durations cycled, turn if off
+ mDuration = -1;
+ stopCountDown();
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ }
+ } else {
+ // change duration
+ startCountDown(DURATIONS[mDuration]);
+ if (!mWakeLock.isHeld()) {
+ mWakeLock.acquire();
+ }
+ }
+ } else {
+ // toggle
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ stopCountDown();
+ } else {
+ mWakeLock.acquire();
+ mDuration = 0;
+ startCountDown(DURATIONS[mDuration]);
+ }
+ }
+ mLastClickTime = SystemClock.elapsedRealtime();
+ refreshState();
+ }
+
+ private void startCountDown(long duration) {
+ stopCountDown();
+ mSecondsRemaining = (int)duration;
+ if (duration == -1) {
+ // infinity timing, no need to start timer
+ return;
+ }
+ mCountdownTimer = new CountDownTimer(duration * 1000, 1000) {
+
+ @Override
+ public void onTick(long millisUntilFinished) {
+ mSecondsRemaining = (int) (millisUntilFinished / 1000);
+ refreshState();
+ }
+
+ @Override
+ public void onFinish() {
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
+ refreshState();
+ }
+
+ }.start();
+ }
+
+ private void stopCountDown() {
+ if (mCountdownTimer != null) {
+ mCountdownTimer.cancel();
+ mCountdownTimer = null;
+ }
+ }
+
+ private String formatValueWithRemainingTime() {
+ if (mSecondsRemaining == -1) {
+ return "\u221E"; // infinity
+ }
+ return String.format("%02d:%02d",
+ mSecondsRemaining / 60 % 60, mSecondsRemaining % 60);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.value = mWakeLock.isHeld();
+ state.visible = true;
+ if (state.value) {
+ state.label = formatValueWithRemainingTime();
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_caffeine_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_caffeine_on);
+ } else {
+ state.label = mContext.getString(R.string.quick_settings_caffeine_label);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_caffeine_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_caffeine_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_CAFFEINE;
+ }
+
+ private final class Receiver extends BroadcastReceiver {
+ public void init() {
+ // Register for Intent broadcasts for...
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_SCREEN_OFF);
+ mContext.registerReceiver(this, filter, null, mHandler);
+ }
+
+ public void destroy() {
+ mContext.unregisterReceiver(this);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (Intent.ACTION_SCREEN_OFF.equals(action)) {
+ // disable caffeine if user force off (power button)
+ stopCountDown();
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
+ refreshState();
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index 61695b2..cd608d6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,6 +33,7 @@ import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.CastController.CastDevice;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
+import cyanogenmod.app.StatusBarPanelCustomTile;
import java.util.LinkedHashMap;
import java.util.Set;
@@ -91,6 +93,16 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ protected void handleSecondaryClick() {
+ handleClick();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(CAST_SETTINGS);
+ }
+
+ @Override
protected void handleUpdateState(BooleanState state, Object arg) {
state.visible = !mKeyguard.isSecure() || !mKeyguard.isShowing()
|| mKeyguard.canSkipBouncer();
@@ -129,6 +141,11 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
return null;
}
+ @Override
+ public boolean hasDualTargetsDetails() {
+ return true;
+ }
+
private String getDeviceName(CastDevice device) {
return device.name != null ? device.name
: mContext.getString(R.string.quick_settings_cast_device_default_name);
@@ -167,6 +184,11 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
public void setToggleState(boolean state) {
// noop
}
@@ -186,12 +208,14 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
@Override
public void onViewAttachedToWindow(View v) {
if (DEBUG) Log.d(TAG, "onViewAttachedToWindow");
+ mController.setDiscovering(true);
}
@Override
public void onViewDetachedFromWindow(View v) {
if (DEBUG) Log.d(TAG, "onViewDetachedFromWindow");
mVisibleOrder.clear();
+ mController.setDiscovering(false);
}
});
}
@@ -199,7 +223,6 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
R.string.quick_settings_cast_detail_empty_text);
mItems.setCallback(this);
updateItems(mController.getCastDevices());
- mController.setDiscovering(true);
return mItems;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index f3ad9d8..038fa5e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,10 +17,13 @@
package com.android.systemui.qs.tiles;
+import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.UserHandle;
+import android.telephony.TelephonyManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -35,15 +39,23 @@ import com.android.systemui.statusbar.policy.NetworkController.MobileDataControl
import com.android.systemui.statusbar.policy.NetworkController.MobileDataController.DataUsageInfo;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;
+import cyanogenmod.app.StatusBarPanelCustomTile;
/** Quick settings tile: Cellular **/
public class CellularTile extends QSTile<QSTile.SignalState> {
- private static final Intent CELLULAR_SETTINGS = new Intent().setComponent(new ComponentName(
+
+ private static final Intent DATA_USAGE_SETTINGS = new Intent().setComponent(new ComponentName(
"com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
+ private static final Intent MOBILE_NETWORK_SETTINGS = new Intent(Intent.ACTION_MAIN)
+ .setComponent(new ComponentName("com.android.phone",
+ "com.android.phone.MobileNetworkSettings"));
+ private static final Intent MOBILE_NETWORK_SETTINGS_MSIM
+ = new Intent("com.android.settings.sim.SIM_SUB_INFO_SETTINGS");
private final NetworkController mController;
private final MobileDataController mDataController;
private final CellularDetailAdapter mDetailAdapter;
+ private final TelephonyManager mTelephonyManager;
private final CellSignalCallback mSignalCallback = new CellSignalCallback();
@@ -52,6 +64,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
mController = host.getNetworkController();
mDataController = mController.getMobileDataController();
mDetailAdapter = new CellularDetailAdapter();
+ mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
}
@Override
@@ -79,18 +92,40 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
}
@Override
+ protected void handleUserSwitch(int newUserId) {
+ if (newUserId != UserHandle.USER_OWNER) {
+ refreshState();
+ }
+ }
+
+ @Override
protected void handleClick() {
MetricsLogger.action(mContext, getMetricsCategory());
if (mDataController.isMobileDataSupported()) {
showDetail(true);
} else {
- mHost.startActivityDismissingKeyguard(CELLULAR_SETTINGS);
+ mHost.startActivityDismissingKeyguard(DATA_USAGE_SETTINGS);
+ }
+ }
+
+ @Override
+ protected void handleSecondaryClick() {
+ handleClick();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ if (mTelephonyManager.getDefault().getPhoneCount() > 1) {
+ mHost.startActivityDismissingKeyguard(MOBILE_NETWORK_SETTINGS_MSIM);
+ } else {
+ mHost.startActivityDismissingKeyguard(MOBILE_NETWORK_SETTINGS);
}
}
@Override
protected void handleUpdateState(SignalState state, Object arg) {
- state.visible = mController.hasMobileDataFeature();
+ state.visible = mController.hasMobileDataFeature()
+ && (ActivityManager.getCurrentUser() == UserHandle.USER_OWNER);
if (!state.visible) return;
CallbackInfo cb = (CallbackInfo) arg;
if (cb == null) {
@@ -112,7 +147,9 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
state.label = cb.enabled
? removeTrailingPeriod(cb.enabledDesc)
- : r.getString(R.string.quick_settings_rssi_emergency_only);
+ : mDataController.isMobileDataSupported() ?
+ r.getString(R.string.data_sim_not_configured) :
+ r.getString(R.string.quick_settings_rssi_emergency_only);
final String signalContentDesc = cb.enabled && (cb.mobileSignalIconId > 0)
? cb.signalContentDescription
@@ -131,6 +168,11 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
return MetricsLogger.QS_CELLULAR;
}
+ @Override
+ public boolean hasDualTargetsDetails() {
+ return true;
+ }
+
// Remove the period from the network name
public static String removeTrailingPeriod(String string) {
if (string == null) return null;
@@ -168,7 +210,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ String description, boolean isWide, boolean showSeparateRoaming, int subId) {
if (qsIcon == null) {
// Not data sim, don't display.
return;
@@ -192,10 +234,14 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
// Make sure signal gets cleared out when no sims.
mInfo.mobileSignalIconId = 0;
mInfo.dataTypeIconId = 0;
- // Show a No SIMs description to avoid emergency calls message.
+ // Show a No SIMs description if we're incapable of supporting mobile data
+ // to avoid showing an emergency mode description. If we're still capable of
+ // supporting mobile data, notify the user that the data sim is not configured
+ // only relevant in MSIM scenario: CYNGNOS-2211
mInfo.enabled = true;
- mInfo.enabledDesc = mContext.getString(
- R.string.keyguard_missing_sim_message_short);
+ mInfo.enabledDesc = mDataController.isMobileDataSupported() ?
+ mContext.getString(R.string.data_sim_not_configured)
+ : mContext.getString(R.string.keyguard_missing_sim_message_short);
mInfo.signalContentDescription = mInfo.enabledDesc;
}
refreshState(mInfo);
@@ -214,6 +260,10 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
};
private final class CellularDetailAdapter implements DetailAdapter {
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
@Override
public int getTitle() {
@@ -229,7 +279,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
@Override
public Intent getSettingsIntent() {
- return CELLULAR_SETTINGS;
+ return DATA_USAGE_SETTINGS;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index c6fc6ff..f49d97e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +17,8 @@
package com.android.systemui.qs.tiles;
+import android.content.Intent;
+import android.provider.Settings;
import android.provider.Settings.Secure;
import com.android.internal.logging.MetricsLogger;
@@ -28,12 +31,14 @@ import com.android.systemui.qs.UsageTracker;
/** Quick settings tile: Invert colors **/
public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
+ private static final Intent ACCESSIBILITY_SETTINGS = new Intent(
+ Settings.ACTION_ACCESSIBILITY_SETTINGS);
+
private final AnimationIcon mEnable
= new AnimationIcon(R.drawable.ic_invert_colors_enable_animation);
private final AnimationIcon mDisable
= new AnimationIcon(R.drawable.ic_invert_colors_disable_animation);
private final SecureSetting mSetting;
- private final UsageTracker mUsageTracker;
private boolean mListening;
@@ -44,29 +49,11 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) {
@Override
protected void handleValueChanged(int value, boolean observedChange) {
- if (value != 0 || observedChange) {
- mUsageTracker.trackUsage();
- }
if (mListening) {
handleRefreshState(value);
}
}
};
- mUsageTracker = new UsageTracker(host.getContext(),
- Prefs.Key.COLOR_INVERSION_TILE_LAST_USED, ColorInversionTile.class,
- R.integer.days_to_show_color_inversion_tile);
- if (mSetting.getValue() != 0 && !mUsageTracker.isRecentlyUsed()) {
- mUsageTracker.trackUsage();
- }
- mUsageTracker.setListening(true);
- mSetting.setListening(true);
- }
-
- @Override
- protected void handleDestroy() {
- super.handleDestroy();
- mUsageTracker.setListening(false);
- mSetting.setListening(false);
}
@Override
@@ -76,7 +63,11 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
@Override
public void setListening(boolean listening) {
+ if (mListening == listening) {
+ return;
+ }
mListening = listening;
+ mSetting.setListening(mListening);
}
@Override
@@ -95,22 +86,14 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
@Override
protected void handleLongClick() {
- if (mState.value) return; // don't allow usage reset if inversion is active
- final String title = mContext.getString(R.string.quick_settings_reset_confirmation_title,
- mState.label);
- mUsageTracker.showResetConfirmation(title, new Runnable() {
- @Override
- public void run() {
- refreshState();
- }
- });
+ mHost.startActivityDismissingKeyguard(ACCESSIBILITY_SETTINGS);
}
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
final int value = arg instanceof Integer ? (Integer) arg : mSetting.getValue();
final boolean enabled = value != 0;
- state.visible = enabled || mUsageTracker.isRecentlyUsed();
+ state.visible = true;
state.value = enabled;
state.label = mContext.getString(R.string.quick_settings_inversion_label);
state.icon = enabled ? mEnable : mDisable;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CompassTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CompassTile.java
new file mode 100644
index 0000000..85790d1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CompassTile.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.widget.ImageView;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.qs.QSTileView;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+public class CompassTile extends QSTile<QSTile.BooleanState> implements SensorEventListener {
+ private final static float ALPHA = 0.97f;
+
+ private boolean mActive = false;
+ private boolean mListening = false;
+
+ private SensorManager mSensorManager;
+ private Sensor mAccelerationSensor;
+ private Sensor mGeomagneticFieldSensor;
+
+ private float[] mAcceleration;
+ private float[] mGeomagnetic;
+
+ private ImageView mImage;
+ private boolean mListeningSensors;
+
+ public CompassTile(Host host) {
+ super(host);
+ mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
+ mAccelerationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+ mGeomagneticFieldSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleDestroy() {
+ super.handleDestroy();
+ setListeningSensors(false);
+ mSensorManager = null;
+ mImage = null;
+ }
+
+ @Override
+ public QSTileView createTileView(Context context) {
+ QSTileView tileView = super.createTileView(context);
+ mImage = (ImageView) tileView.findViewById(android.R.id.icon);
+ return tileView;
+ }
+
+ @Override
+ protected void handleClick() {
+ mActive = !mActive;
+ refreshState();
+ setListeningSensors(mActive);
+ }
+
+ private void setListeningSensors(boolean listening) {
+ if (listening == mListeningSensors) return;
+ mListeningSensors = listening;
+ if (mListeningSensors) {
+ mSensorManager.registerListener(
+ this, mAccelerationSensor, SensorManager.SENSOR_DELAY_GAME);
+ mSensorManager.registerListener(
+ this, mGeomagneticFieldSensor, SensorManager.SENSOR_DELAY_GAME);
+ } else {
+ mSensorManager.unregisterListener(this);
+ }
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ Float degrees = arg == null ? 0 :(float) arg;
+
+ state.visible = true;
+ state.value = mActive && mListening;
+
+ if (state.value) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_compass_on);
+ if (arg != null) {
+ state.label = formatValueWithCardinalDirection(degrees);
+
+ float target = 360 - degrees;
+ float relative = target - mImage.getRotation();
+ if (relative > 180) relative -= 360;
+
+ mImage.setRotation(mImage.getRotation() + relative / 2);
+
+ } else {
+ state.label = mContext.getString(R.string.quick_settings_compass_init);
+ mImage.setRotation(0);
+ }
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_compass_off);
+ state.label = mContext.getString(R.string.quick_settings_compass_label);
+ mImage.setRotation(0);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_COMPASS;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ // setListening might get called multiple times with the same value, we check for it
+ // in setListeningSensors
+ mListening = listening;
+ setListeningSensors(mListening && mActive);
+ }
+
+ private String formatValueWithCardinalDirection(float degree) {
+ int cardinalDirectionIndex = (int) (Math.floor(((degree - 22.5) % 360) / 45) + 1) % 8;
+ String[] cardinalDirections = mContext.getResources().getStringArray(
+ R.array.cardinal_directions);
+
+ return mContext.getString(R.string.quick_settings_compass_value, degree,
+ cardinalDirections[cardinalDirectionIndex]);
+ }
+
+ @Override
+ public void onSensorChanged(SensorEvent event) {
+ float[] values;
+ if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
+ if (mAcceleration == null) {
+ mAcceleration = event.values.clone();
+ }
+
+ values = mAcceleration;
+ } else {
+ // Magnetic field sensor
+ if (mGeomagnetic == null) {
+ mGeomagnetic = event.values.clone();
+ }
+
+ values = mGeomagnetic;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ values[i] = ALPHA * values[i] + (1 - ALPHA) * event.values[i];
+ }
+
+ if (!mActive || !mListeningSensors || mAcceleration == null || mGeomagnetic == null) {
+ // Nothing to do at this moment
+ return;
+ }
+
+ float R[] = new float[9];
+ float I[] = new float[9];
+ if (!SensorManager.getRotationMatrix(R, I, mAcceleration, mGeomagnetic)) {
+ // Rotation matrix couldn't be calculated
+ return;
+ }
+
+ // Get the current orientation
+ float[] orientation = new float[3];
+ SensorManager.getOrientation(R, orientation);
+
+ // Convert azimuth to degrees
+ Float newDegree = Float.valueOf((float) Math.toDegrees(orientation[0]));
+ newDegree = (newDegree + 360) % 360;
+
+ refreshState(newDegree);
+ }
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
+ // noop
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CustomQSTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CustomQSTile.java
new file mode 100644
index 0000000..40c7184
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CustomQSTile.java
@@ -0,0 +1,349 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.content.res.ThemeConfig;
+import android.net.Uri;
+import android.os.Process;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.RemoteViews;
+import android.widget.TextView;
+
+import com.android.systemui.qs.QSDetailItemsGrid;
+import com.android.systemui.qs.QSDetailItemsList;
+import cyanogenmod.app.CustomTile;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+import java.util.Arrays;
+
+public class CustomQSTile extends QSTile<QSTile.State> {
+
+ private static final String HIDDEN_TILES_PREF_NAME = "user_hidden_qs_tiles";
+
+ private CustomTile.ExpandedStyle mExpandedStyle;
+ private PendingIntent mOnClick;
+ private PendingIntent mOnLongClick;
+ private Uri mOnClickUri;
+ private int mCurrentUserId;
+ private StatusBarPanelCustomTile mTile;
+ private CustomQSDetailAdapter mDetailAdapter;
+ private boolean mCollapsePanel;
+ private boolean mUserRemoved;
+ private String mPersistedPlaceHolderKey;
+
+ public CustomQSTile(Host host, String persistedSpec) {
+ super(host);
+ mTile = null;
+ mPersistedPlaceHolderKey = persistedSpec;
+ }
+
+ public CustomQSTile(Host host, StatusBarPanelCustomTile tile) {
+ super(host);
+ mTile = tile;
+ mUserRemoved = getIsUserRemovedPersisted();
+ }
+
+ private String getPersistableKey() {
+ if (mPersistedPlaceHolderKey != null) {
+ return mPersistedPlaceHolderKey;
+ } else {
+ return getTile().persistableKey();
+ }
+ }
+
+ private boolean getIsUserRemovedPersisted() {
+ return getCustomQSTilePrefs(mContext).getBoolean(getPersistableKey(), false);
+ }
+
+ public boolean isUserRemoved() {
+ return mUserRemoved;
+ }
+
+ public void setUserRemoved(boolean removed) {
+ if (mUserRemoved != removed) {
+ if (removed) {
+ getCustomQSTilePrefs(mContext).edit().putBoolean(getPersistableKey(), true).apply();
+ } else {
+ getCustomQSTilePrefs(mContext).edit().remove(getPersistableKey()).apply();
+ }
+ mUserRemoved = removed;
+ refreshState();
+ }
+ }
+
+ public static SharedPreferences getCustomQSTilePrefs(Context context) {
+ return context.getSharedPreferences(HIDDEN_TILES_PREF_NAME, Context.MODE_PRIVATE);
+ }
+
+ @Override
+ public DetailAdapter getDetailAdapter() {
+ return mDetailAdapter;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ }
+
+ @Override
+ protected State newTileState() {
+ return new State();
+ }
+
+ @Override
+ protected void handleUserSwitch(int newUserId) {
+ super.handleUserSwitch(newUserId);
+ mCurrentUserId = newUserId;
+ }
+
+ public void update(StatusBarPanelCustomTile customTile) {
+ refreshState(customTile);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ if (mOnLongClick != null) {
+ if (mOnLongClick.isActivity()) {
+ getHost().collapsePanels();
+ }
+ try {
+ mOnLongClick.send();
+ } catch (Throwable e) {
+ Log.w(TAG, "Error sending long click intent", e);
+ }
+ } else if (mExpandedStyle == null) {
+ showDetail(true);
+ }
+ }
+
+ @Override
+ protected void handleClick() {
+ try {
+ if (mExpandedStyle != null &&
+ mExpandedStyle.getStyle() != CustomTile.ExpandedStyle.NO_STYLE) {
+ showDetail(true);
+ return;
+ }
+ if (mCollapsePanel) {
+ mHost.collapsePanels();
+ }
+ if (mOnClick != null) {
+ mOnClick.send();
+ } else if (mOnClickUri != null) {
+ mHost.collapsePanels();
+ final Intent intent = new Intent().setData(mOnClickUri);
+ mContext.sendBroadcastAsUser(intent, new UserHandle(mCurrentUserId));
+ }
+ } catch (Throwable t) {
+ Log.w(TAG, "Error sending click intent", t);
+ }
+ }
+
+ public StatusBarPanelCustomTile getTile() {
+ return mTile;
+ }
+
+ @Override
+ protected void handleUpdateState(State state, Object arg) {
+ if (arg instanceof StatusBarPanelCustomTile) {
+ mTile = (StatusBarPanelCustomTile) arg;
+ mPersistedPlaceHolderKey = null;
+ mUserRemoved = getIsUserRemovedPersisted();
+ }
+ if (mTile == null) {
+ state.visible = false;
+ // nothing to show, it's a place holder for now
+ return;
+ }
+ final CustomTile customTile = mTile.getCustomTile();
+ state.contentDescription = customTile.contentDescription;
+ state.label = customTile.label;
+ state.visible = !mUserRemoved;
+ final int iconId = customTile.icon;
+ if (iconId != 0 && (customTile.remoteIcon == null)) {
+ final String iconPackage = mTile.getResPkg();
+ if (!TextUtils.isEmpty(iconPackage)) {
+ state.icon = new ExternalIcon(iconPackage, iconId);
+ }
+ } else {
+ state.icon = new ExternalBitmapIcon(customTile.remoteIcon);
+ }
+ mOnClick = customTile.onClick;
+ mOnLongClick = customTile.onLongClick;
+ mOnClickUri = customTile.onClickUri;
+ mExpandedStyle = customTile.expandedStyle;
+ mCollapsePanel = customTile.collapsePanel;
+ mDetailAdapter = new CustomQSDetailAdapter();
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_CUSTOM_QS;
+ }
+
+ private boolean isDynamicTile() {
+ return mTile.getPackage().equals(mContext.getPackageName())
+ || mTile.getUid() == Process.SYSTEM_UID;
+ }
+
+ private class CustomQSDetailAdapter implements DetailAdapter, AdapterView.OnItemClickListener,
+ QSDetailItemsGrid.QSDetailItemsGridAdapter.OnPseudoGriditemClickListener {
+ private QSDetailItemsList.QSCustomDetailListAdapter mListAdapter;
+ private QSDetailItemsGrid.QSDetailItemsGridAdapter mGridAdapter;
+
+ public int getTitle() {
+ if (isDynamicTile()) {
+ return mContext.getResources().getIdentifier(
+ String.format("dynamic_qs_tile_%s_label", mTile.getTag()),
+ "string", mContext.getPackageName());
+ }
+ return R.string.quick_settings_custom_tile_detail_title;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ return null;
+ }
+
+
+ @Override
+ public Intent getSettingsIntent() {
+ return mTile.getCustomTile().onSettingsClick;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return mTile;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+ // noop
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_CUSTOM_QS_DETAIL;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ View rootView = null;
+ if (mExpandedStyle == null) {
+ rootView = (LinearLayout) LayoutInflater.from(context)
+ .inflate(R.layout.qs_custom_detail, parent, false);
+ ImageView imageView = (ImageView)
+ rootView.findViewById(R.id.custom_qs_tile_icon);
+ TextView customTileTitle = (TextView)
+ rootView.findViewById(R.id.custom_qs_tile_title);
+ TextView customTilePkg = (TextView) rootView
+ .findViewById(R.id.custom_qs_tile_package);
+ TextView customTileContentDesc = (TextView) rootView
+ .findViewById(R.id.custom_qs_tile_content_description);
+ // icon is cached in state, fetch it
+ imageView.setImageDrawable(getState().icon.getDrawable(mContext));
+ customTileTitle.setText(mTile.getCustomTile().label);
+ if (isDynamicTile()) {
+ customTilePkg.setText(R.string.quick_settings_dynamic_tile_detail_title);
+ } else {
+ customTilePkg.setText(mTile.getPackage());
+ customTileContentDesc.setText(mTile.getCustomTile().contentDescription);
+ }
+ } else {
+ switch (mExpandedStyle.getStyle()) {
+ case CustomTile.ExpandedStyle.GRID_STYLE:
+ rootView = QSDetailItemsGrid.inflate(context, parent, false);
+ mGridAdapter = ((QSDetailItemsGrid) rootView)
+ .createAndSetAdapter(mTile.getPackage(),
+ mExpandedStyle.getExpandedItems());
+ mGridAdapter.setOnPseudoGridItemClickListener(this);
+ break;
+ case CustomTile.ExpandedStyle.REMOTE_STYLE:
+ rootView = (LinearLayout) LayoutInflater.from(context)
+ .inflate(R.layout.qs_custom_detail_remote, parent, false);
+ RemoteViews remoteViews = mExpandedStyle.getContentViews();
+ if (remoteViews != null) {
+ View localView = mTile.getCustomTile().expandedStyle.getContentViews()
+ .apply(context, (ViewGroup) rootView,
+ mHost.getOnClickHandler(), getThemePackageName());
+ ((LinearLayout) rootView).addView(localView);
+ } else {
+ Log.d(TAG, "Unable to add null remoteview for " + mTile.getOpPkg());
+ }
+ break;
+ case CustomTile.ExpandedStyle.LIST_STYLE:
+ default:
+ rootView = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ ListView listView = ((QSDetailItemsList) rootView).getListView();
+ listView.setDivider(null);
+ listView.setOnItemClickListener(this);
+ listView.setAdapter(mListAdapter =
+ new QSDetailItemsList.QSCustomDetailListAdapter(mTile.getPackage(),
+ context, Arrays.asList(mExpandedStyle.getExpandedItems())));
+ break;
+ }
+ }
+ return rootView;
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
+ CustomTile.ExpandedItem item = mListAdapter.getItem(position);
+ sendEvent(item.onClickPendingIntent);
+ }
+
+ @Override
+ public void onPsuedoGridItemClick(View view, CustomTile.ExpandedItem item) {
+ sendEvent(item.onClickPendingIntent);
+ }
+
+ private void sendEvent(PendingIntent intent) {
+ try {
+ if (intent.isActivity()) {
+ mHost.collapsePanels();
+ }
+ intent.send();
+ } catch (PendingIntent.CanceledException e) {
+ //
+ }
+ }
+
+ private String getThemePackageName() {
+ final Configuration config = mContext.getResources().getConfiguration();
+ final ThemeConfig themeConfig = config != null ? config.themeConfig : null;
+ return themeConfig != null ? themeConfig.getOverlayForStatusBar() : null;
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 781ab1c..0d43f8c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,6 +38,7 @@ import com.android.systemui.SysUIToast;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.volume.ZenModePanel;
+import cyanogenmod.app.StatusBarPanelCustomTile;
/** Quick settings tile: Do not disturb **/
public class DndTile extends QSTile<QSTile.BooleanState> {
@@ -121,6 +123,16 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ protected void handleSecondaryClick() {
+ handleClick();
+ }
+
+ @Override
+ public void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(ZEN_SETTINGS);
+ }
+
+ @Override
protected void handleUpdateState(BooleanState state, Object arg) {
final int zen = arg instanceof Integer ? (Integer) arg : mController.getZen();
final boolean newValue = zen != Global.ZEN_MODE_OFF;
@@ -129,7 +141,7 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
state.visible = isVisible(mContext);
switch (zen) {
case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS:
- state.icon = ResourceIcon.get(R.drawable.ic_qs_dnd_on);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_dnd_on_priority);
state.label = mContext.getString(R.string.quick_settings_dnd_priority_label);
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_dnd_priority_on);
@@ -188,6 +200,11 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
}
}
+ @Override
+ public boolean hasDualTargetsDetails() {
+ return true;
+ }
+
private final OnSharedPreferenceChangeListener mPrefListener
= new OnSharedPreferenceChangeListener() {
@Override
@@ -233,6 +250,11 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
public void setToggleState(boolean state) {
MetricsLogger.action(mContext, MetricsLogger.QS_DND_TOGGLE, state);
if (!state) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/EditTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/EditTile.java
new file mode 100644
index 0000000..7173786
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/EditTile.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+public class EditTile extends QSTile<QSTile.BooleanState> implements KeyguardMonitor.Callback {
+
+ private boolean mListening;
+
+ public EditTile(Host host) {
+ super(host);
+ refreshState();
+ }
+
+ @Override
+ protected void handleDestroy() {
+ super.handleDestroy();
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ getHost().setEditing(!mState.value);
+ refreshState(!mState.value);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ getHost().goToSettingsPage();
+ refreshState(true);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ final boolean showing = getHost().getKeyguardMonitor().isShowing();
+ final boolean secure = getHost().getKeyguardMonitor().isSecure();
+ state.visible = !showing || !secure;
+ state.enabled = !showing;
+ state.label = mContext.getString(R.string.quick_settings_edit_label);
+
+ if (arg instanceof Boolean) {
+ state.value = (boolean) arg;
+ } else {
+ state.value = getHost().isEditing();
+ }
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_edit_tiles);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_EDIT;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ // TODO
+ return null;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (mListening) {
+ mHost.getKeyguardMonitor().addCallback(this);
+ } else {
+ mHost.getKeyguardMonitor().removeCallback(this);
+ }
+ refreshState();
+ }
+
+ @Override
+ public void onKeyguardChanged() {
+ refreshState();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HeadsUpTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HeadsUpTile.java
new file mode 100644
index 0000000..d30bd91
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HeadsUpTile.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.provider.Settings.Global;
+
+import com.android.systemui.qs.GlobalSetting;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.R;
+
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/** Quick settings tile: Heads up **/
+public class HeadsUpTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent NOTIFICATION_SETTINGS =
+ new Intent("android.settings.NOTIFICATION_MANAGER");
+
+ private final GlobalSetting mSetting;
+
+ public HeadsUpTile(Host host) {
+ super(host);
+
+ mSetting = new GlobalSetting(mContext, mHandler, Global.HEADS_UP_NOTIFICATIONS_ENABLED) {
+ @Override
+ protected void handleValueChanged(int value) {
+ handleRefreshState(value);
+ }
+ };
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ setEnabled(!mState.value);
+ refreshState();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(NOTIFICATION_SETTINGS);
+ }
+
+ private void setEnabled(boolean enabled) {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED,
+ enabled ? 1 : 0);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ final int value = arg instanceof Integer ? (Integer)arg : mSetting.getValue();
+ final boolean headsUp = value != 0;
+ state.value = headsUp;
+ state.visible = true;
+ state.label = mContext.getString(R.string.quick_settings_heads_up_label);
+ if (headsUp) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_heads_up_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_heads_up_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_heads_up_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_heads_up_off);
+ }
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (mState.value) {
+ return mContext.getString(R.string.accessibility_quick_settings_heads_up_changed_on);
+ } else {
+ return mContext.getString(R.string.accessibility_quick_settings_heads_up_changed_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_HEADS_UP;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ // Do nothing
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index 7b83e6a..6080358 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,37 +18,44 @@
package com.android.systemui.qs.tiles;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.wifi.WifiDevice;
+import android.provider.Settings;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.UsageTracker;
+import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.HotspotController;
+import java.util.List;
+
/** Quick settings tile: Hotspot **/
public class HotspotTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent TETHER_SETTINGS = new Intent().setComponent(new ComponentName(
+ "com.android.settings", "com.android.settings.TetherSettings"));
+
private final AnimationIcon mEnable =
new AnimationIcon(R.drawable.ic_hotspot_enable_animation);
private final AnimationIcon mDisable =
new AnimationIcon(R.drawable.ic_hotspot_disable_animation);
private final HotspotController mController;
private final Callback mCallback = new Callback();
- private final UsageTracker mUsageTracker;
+ private final ConnectivityManager mConnectivityManager;
+ private boolean mListening;
+ private int mNumConnectedClients = 0;
public HotspotTile(Host host) {
super(host);
mController = host.getHotspotController();
- mUsageTracker = newUsageTracker(host.getContext());
- mUsageTracker.setListening(true);
- }
-
- @Override
- protected void handleDestroy() {
- super.handleDestroy();
- mUsageTracker.setListening(false);
+ mConnectivityManager = host.getContext().getSystemService(ConnectivityManager.class);
}
@Override
@@ -57,15 +65,31 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
@Override
public void setListening(boolean listening) {
+ if (mListening == listening) return;
if (listening) {
mController.addCallback(mCallback);
+ mContext.registerReceiver(mTetherConnectStateChangedReceiver,
+ new IntentFilter(ConnectivityManager.TETHER_CONNECT_STATE_CHANGED));
} else {
mController.removeCallback(mCallback);
+ mContext.unregisterReceiver(mTetherConnectStateChangedReceiver);
}
+ mListening = listening;
}
@Override
protected void handleClick() {
+ boolean airplaneMode = (Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0) == 1);
+ if (airplaneMode) {
+ SystemUIDialog d = new SystemUIDialog(mContext);
+ d.setTitle(R.string.quick_settings_hotspot_label);
+ d.setMessage(R.string.hotspot_apm_message);
+ d.setPositiveButton(com.android.internal.R.string.ok, null);
+ d.setShowForAllUsers(true);
+ d.show();
+ return;
+ }
final boolean isEnabled = (Boolean) mState.value;
MetricsLogger.action(mContext, getMetricsCategory(), !isEnabled);
mController.setHotspotEnabled(!isEnabled);
@@ -75,27 +99,25 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
@Override
protected void handleLongClick() {
- if (mState.value) return; // don't allow usage reset if hotspot is active
- final String title = mContext.getString(R.string.quick_settings_reset_confirmation_title,
- mState.label);
- mUsageTracker.showResetConfirmation(title, new Runnable() {
- @Override
- public void run() {
- refreshState();
- }
- });
+ mHost.startActivityDismissingKeyguard(TETHER_SETTINGS);
}
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
- state.visible = mController.isHotspotSupported() && mUsageTracker.isRecentlyUsed();
- state.label = mContext.getString(R.string.quick_settings_hotspot_label);
+ state.visible = mController.isHotspotSupported();
if (arg instanceof Boolean) {
state.value = (boolean) arg;
} else {
state.value = mController.isHotspotEnabled();
}
+ if (state.visible && state.value) {
+ state.label = mContext.getResources().getQuantityString(
+ R.plurals.wifi_hotspot_connected_clients_label, mNumConnectedClients,
+ mNumConnectedClients);
+ } else {
+ state.label = mContext.getString(R.string.quick_settings_hotspot_label);
+ }
state.icon = state.visible && state.value ? mEnable : mDisable;
}
@@ -113,10 +135,14 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
}
}
- private static UsageTracker newUsageTracker(Context context) {
- return new UsageTracker(context, Prefs.Key.HOTSPOT_TILE_LAST_USED, HotspotTile.class,
- R.integer.days_to_show_hotspot_tile);
- }
+ private BroadcastReceiver mTetherConnectStateChangedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final List<WifiDevice> clients = mConnectivityManager.getTetherConnectedSta();
+ mNumConnectedClients = clients != null ? clients.size() : 0;
+ refreshState();
+ }
+ };
private final class Callback implements HotspotController.Callback {
@Override
@@ -124,20 +150,4 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
refreshState(enabled);
}
};
-
- /**
- * This will catch broadcasts for changes in hotspot state so we can show
- * the hotspot tile for a number of days after use.
- */
- public static class APChangedReceiver extends BroadcastReceiver {
- private UsageTracker mUsageTracker;
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (mUsageTracker == null) {
- mUsageTracker = newUsageTracker(context);
- }
- mUsageTracker.trackUsage();
- }
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
index e6fade4..3598bba 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,32 +17,69 @@
package com.android.systemui.qs.tiles;
+import com.android.internal.logging.MetricsConstants;
import com.android.internal.logging.MetricsLogger;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.CheckedTextView;
+import android.widget.ListView;
+
import com.android.systemui.R;
+import com.android.systemui.qs.QSDetailItems;
+import com.android.systemui.qs.QSDetailItemsList;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.LocationController.LocationSettingsChangeCallback;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import cyanogenmod.app.StatusBarPanelCustomTile;
+
/** Quick settings tile: Location **/
public class LocationTile extends QSTile<QSTile.BooleanState> {
+ private static final Intent LOCATION_SETTINGS_INTENT
+ = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ public static final Integer[] LOCATION_SETTINGS = new Integer[]{
+ Settings.Secure.LOCATION_MODE_BATTERY_SAVING,
+ Settings.Secure.LOCATION_MODE_SENSORS_ONLY,
+ Settings.Secure.LOCATION_MODE_HIGH_ACCURACY
+ };
+
private final AnimationIcon mEnable =
new AnimationIcon(R.drawable.ic_signal_location_enable_animation);
private final AnimationIcon mDisable =
new AnimationIcon(R.drawable.ic_signal_location_disable_animation);
private final LocationController mController;
+ private final LocationDetailAdapter mDetailAdapter;
private final KeyguardMonitor mKeyguard;
private final Callback mCallback = new Callback();
+ private final List<Integer> mLocationList = new ArrayList<Integer>();
public LocationTile(Host host) {
super(host);
mController = host.getLocationController();
+ mDetailAdapter = new LocationDetailAdapter();
mKeyguard = host.getKeyguardMonitor();
}
@Override
+ public DetailAdapter getDetailAdapter() {
+ return mDetailAdapter;
+ }
+
+ @Override
protected BooleanState newTileState() {
return new BooleanState();
}
@@ -59,32 +97,74 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
@Override
protected void handleClick() {
- final boolean wasEnabled = (Boolean) mState.value;
- MetricsLogger.action(mContext, getMetricsCategory(), !wasEnabled);
- mController.setLocationEnabled(!wasEnabled);
+ if(mController.isAdvancedSettingsEnabled()) {
+ showDetail(true);
+ } else {
+ boolean wasEnabled = mController.isLocationEnabled();
+ mController.setLocationEnabled(!wasEnabled);
+ MetricsLogger.action(mContext, getMetricsCategory(), !wasEnabled);
+ refreshState();
+ }
+
mEnable.setAllowAnimation(true);
mDisable.setAllowAnimation(true);
}
@Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(LOCATION_SETTINGS_INTENT);
+ }
+
+ @Override
protected void handleUpdateState(BooleanState state, Object arg) {
- final boolean locationEnabled = mController.isLocationEnabled();
+ final int currentState = mController.getLocationCurrentState();
// Work around for bug 15916487: don't show location tile on top of lock screen. After the
// bug is fixed, this should be reverted to only hiding it on secure lock screens:
// state.visible = !(mKeyguard.isSecure() && mKeyguard.isShowing());
state.visible = !mKeyguard.isShowing();
- state.value = locationEnabled;
- if (locationEnabled) {
- state.icon = mEnable;
- state.label = mContext.getString(R.string.quick_settings_location_label);
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_location_on);
- } else {
- state.icon = mDisable;
- state.label = mContext.getString(R.string.quick_settings_location_label);
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_location_off);
+ state.label = mContext.getString(getStateLabelRes(currentState));
+
+ switch (currentState) {
+ case Settings.Secure.LOCATION_MODE_OFF:
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_location_off);
+ state.icon = mDisable;
+ break;
+ case Settings.Secure.LOCATION_MODE_BATTERY_SAVING:
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_location_battery_saving);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_location_battery_saving);
+ break;
+ case Settings.Secure.LOCATION_MODE_SENSORS_ONLY:
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_location_gps_only);
+ state.icon = mEnable;
+ break;
+ case Settings.Secure.LOCATION_MODE_HIGH_ACCURACY:
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_location_high_accuracy);
+ state.icon = mEnable;
+ break;
+ default:
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_location_on);
+ state.icon = mEnable;
+ }
+ }
+
+ private int getStateLabelRes(int currentState) {
+ switch (currentState) {
+ case Settings.Secure.LOCATION_MODE_OFF:
+ return R.string.quick_settings_location_off_label;
+ case Settings.Secure.LOCATION_MODE_BATTERY_SAVING:
+ return R.string.quick_settings_location_battery_saving_label;
+ case Settings.Secure.LOCATION_MODE_SENSORS_ONLY:
+ return R.string.quick_settings_location_gps_only_label;
+ case Settings.Secure.LOCATION_MODE_HIGH_ACCURACY:
+ return R.string.quick_settings_location_high_accuracy_label;
+ default:
+ return R.string.quick_settings_location_label;
}
}
@@ -95,10 +175,22 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
@Override
protected String composeChangeAnnouncement() {
- if (mState.value) {
- return mContext.getString(R.string.accessibility_quick_settings_location_changed_on);
- } else {
- return mContext.getString(R.string.accessibility_quick_settings_location_changed_off);
+ switch (mController.getLocationCurrentState()) {
+ case Settings.Secure.LOCATION_MODE_OFF:
+ return mContext.getString(
+ R.string.accessibility_quick_settings_location_changed_off);
+ case Settings.Secure.LOCATION_MODE_BATTERY_SAVING:
+ return mContext.getString(
+ R.string.accessibility_quick_settings_location_changed_battery_saving);
+ case Settings.Secure.LOCATION_MODE_SENSORS_ONLY:
+ return mContext.getString(
+ R.string.accessibility_quick_settings_location_changed_gps_only);
+ case Settings.Secure.LOCATION_MODE_HIGH_ACCURACY:
+ return mContext.getString(
+ R.string.accessibility_quick_settings_location_changed_high_accuracy);
+ default:
+ return mContext.getString(
+ R.string.accessibility_quick_settings_location_changed_on);
}
}
@@ -114,4 +206,90 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
refreshState();
}
};
+
+ private class AdvancedLocationAdapter extends ArrayAdapter<Integer> {
+ public AdvancedLocationAdapter(Context context) {
+ super(context, android.R.layout.simple_list_item_single_choice, mLocationList);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ CheckedTextView label = (CheckedTextView) inflater.inflate(
+ android.R.layout.simple_list_item_single_choice, parent, false);
+ label.setText(getStateLabelRes(getItem(position)));
+ return label;
+ }
+ }
+
+ private class LocationDetailAdapter implements DetailAdapter, AdapterView.OnItemClickListener {
+
+ private AdvancedLocationAdapter mAdapter;
+ private QSDetailItemsList mDetails;
+
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_location_detail_title;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ boolean state = mController.getLocationCurrentState()
+ != Settings.Secure.LOCATION_MODE_OFF;
+ rebuildLocationList(state);
+ return state;
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return LOCATION_SETTINGS_INTENT;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+ mController.setLocationEnabled(state);
+ rebuildLocationList(state);
+ fireToggleStateChanged(state);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsLogger.QS_LOCATION;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ mDetails = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ mDetails.setEmptyState(R.drawable.ic_qs_location_off,
+ R.string.accessibility_quick_settings_location_off);
+ mAdapter = new LocationTile.AdvancedLocationAdapter(context);
+ mDetails.setAdapter(mAdapter);
+
+ final ListView list = mDetails.getListView();
+ list.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
+ list.setOnItemClickListener(this);
+
+ return mDetails;
+ }
+
+ private void rebuildLocationList(boolean populate) {
+ mLocationList.clear();
+ if (populate) {
+ mLocationList.addAll(Arrays.asList(LOCATION_SETTINGS));
+ mDetails.getListView().setItemChecked(mAdapter.getPosition(
+ mController.getLocationCurrentState()), true);
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ mController.setLocationMode((Integer) parent.getItemAtPosition(position));
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LockscreenToggleTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LockscreenToggleTile.java
new file mode 100644
index 0000000..a147d30
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LockscreenToggleTile.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2015-2016 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Intent;
+import android.os.UserHandle;
+import com.android.systemui.R;
+import com.android.systemui.SystemUIApplication;
+import com.android.systemui.keyguard.KeyguardViewMediator;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
+
+import cyanogenmod.app.Profile;
+import cyanogenmod.app.ProfileManager;
+import cyanogenmod.providers.CMSettings;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+public class LockscreenToggleTile extends QSTile<QSTile.BooleanState>
+ implements KeyguardMonitor.Callback {
+
+ private static final Intent LOCK_SCREEN_SETTINGS =
+ new Intent("android.settings.LOCK_SCREEN_SETTINGS");
+
+ private KeyguardMonitor mKeyguard;
+ private boolean mListening;
+
+ private KeyguardViewMediator.LockscreenEnabledSettingsObserver mSettingsObserver;
+
+ public LockscreenToggleTile(Host host) {
+ super(host);
+
+ mKeyguard = host.getKeyguardMonitor();
+
+ mSettingsObserver = new KeyguardViewMediator.LockscreenEnabledSettingsObserver(mContext,
+ mUiHandler) {
+
+ @Override
+ public void update() {
+ refreshState();
+ }
+ };
+
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) {
+ return;
+ }
+ mListening = listening;
+ if (listening) {
+ mSettingsObserver.observe();
+ mKeyguard.addCallback(this);
+ refreshState();
+ } else {
+ mSettingsObserver.unobserve();
+ mKeyguard.removeCallback(this);
+ }
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ final boolean newState = !getState().value;
+ setPersistedState(newState);
+ refreshState(newState);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(LOCK_SCREEN_SETTINGS);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ KeyguardViewMediator mediator = ((SystemUIApplication)
+ mContext.getApplicationContext()).getComponent(KeyguardViewMediator.class);
+
+ if (mediator == null) {
+ state.visible = false;
+ state.value = false;
+ state.enabled = false;
+ } else {
+ final boolean lockscreenEnforced = mediator.lockscreenEnforcedByDevicePolicy();
+ final boolean lockscreenEnabled = lockscreenEnforced ||
+ arg != null ? (Boolean) arg : mediator.getKeyguardEnabledInternal();
+
+ state.visible = mediator.isKeyguardBound();
+
+ if (mediator.isProfileDisablingKeyguard()) {
+ state.value = false;
+ state.enabled = false;
+ state.label = mContext.getString(
+ R.string.quick_settings_lockscreen_label_locked_by_profile);
+ } else if (lockscreenEnforced) {
+ state.value = true;
+ state.enabled = false;
+ state.label = mContext.getString(
+ R.string.quick_settings_lockscreen_label_enforced);
+ } else {
+ state.value = lockscreenEnabled;
+ state.enabled = !mKeyguard.isShowing() || !mKeyguard.isSecure();
+
+ state.label = mContext.getString(R.string.quick_settings_lockscreen_label);
+ }
+ // update icon
+ if (lockscreenEnabled) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_lock_screen_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_lock_screen_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_lock_screen_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_lock_screen_off);
+ }
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_LOCKSCREEN_TOGGLE;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (mState.value) {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_lock_screen_changed_on);
+ } else {
+ return mContext.getString(
+ R.string.accessibility_quick_settings_lock_screen_changed_off);
+ }
+ }
+
+ @Override
+ public void onKeyguardChanged() {
+ refreshState();
+ }
+
+ private void setPersistedState(boolean enabled) {
+ CMSettings.Secure.putIntForUser(mContext.getContentResolver(),
+ CMSettings.Secure.LOCKSCREEN_INTERNALLY_ENABLED,
+ enabled ? 1 : 0, UserHandle.USER_CURRENT);
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java
new file mode 100644
index 0000000..a5ffd23
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.nfc.NfcAdapter;
+
+import android.util.Log;
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+import org.cyanogenmod.internal.util.QSUtils;
+
+public class NfcTile extends QSTile<QSTile.BooleanState> {
+
+ private boolean mListening;
+
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ refreshState();
+ }
+ };
+ private final boolean mSupportsNfc;
+
+ public NfcTile(Host host) {
+ super(host);
+ mSupportsNfc = QSUtils.deviceSupportsNfc(mContext);
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ boolean newState = !getState().value;
+ setState(newState);
+ refreshState();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(new Intent("android.settings.NFC_SETTINGS"));
+ }
+
+ private void setState(boolean on) {
+ try {
+ NfcAdapter nfcAdapter = NfcAdapter.getNfcAdapter(mContext);
+ if (nfcAdapter == null) {
+ Log.e(TAG, "tried to set NFC state, but no NFC adapter was found");
+ return;
+ }
+ if (on) {
+ nfcAdapter.enable();
+ } else {
+ nfcAdapter.disable();
+ }
+ } catch (UnsupportedOperationException e) {
+ // ignore
+ }
+ }
+
+ private int getNfcAdapterState() {
+ try {
+ NfcAdapter nfcAdapter = NfcAdapter.getNfcAdapter(mContext);
+ if (nfcAdapter == null) {
+ Log.e(TAG, "tried to get NFC state, but no NFC adapter was found");
+ return NfcAdapter.STATE_OFF;
+ }
+ return nfcAdapter.getAdapterState();
+ } catch (UnsupportedOperationException e) {
+ // ignore
+ return NfcAdapter.STATE_OFF;
+ }
+ }
+
+ /**
+ * Helper method to encapsulate intermediate states (turning off/on) to help determine whether
+ * the adapter will be on or off.
+ * @param nfcState The current NFC adapter state.
+ * @return boolean representing what state the adapter is/will be in
+ */
+ private static boolean isEnabled(int nfcState) {
+ switch (nfcState) {
+ case NfcAdapter.STATE_TURNING_ON:
+ case NfcAdapter.STATE_ON:
+ return true;
+ case NfcAdapter.STATE_TURNING_OFF:
+ case NfcAdapter.STATE_OFF:
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Helper method to determine intermediate states
+ * @param nfcState The current NFC adapter state.
+ * @return boolean representing if the adapter is in an intermediate state
+ */
+ private static boolean isEnablingDisabling(int nfcState) {
+ switch (nfcState) {
+ case NfcAdapter.STATE_TURNING_OFF:
+ case NfcAdapter.STATE_TURNING_ON:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = mSupportsNfc;
+ final int nfcState = getNfcAdapterState();
+ state.value = mSupportsNfc && isEnabled(nfcState);
+ state.enabled = mSupportsNfc && !isEnablingDisabling(nfcState);
+
+ state.icon = ResourceIcon.get(state.value ?
+ R.drawable.ic_qs_nfc_on : R.drawable.ic_qs_nfc_off);
+ state.label = mContext.getString(R.string.quick_settings_nfc_label);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_NFC;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (listening) {
+ mContext.registerReceiver(mReceiver,
+ new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED));
+ refreshState();
+ } else {
+ mContext.unregisterReceiver(mReceiver);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/PerfProfileTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/PerfProfileTile.java
new file mode 100644
index 0000000..4863683
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/PerfProfileTile.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.Settings;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSDetailItemsList;
+import com.android.systemui.qs.QSTile;
+
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+import org.cyanogenmod.internal.util.QSUtils;
+
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.power.PerformanceManager;
+import cyanogenmod.providers.CMSettings;
+
+public class PerfProfileTile extends QSTile<PerfProfileTile.ProfileState> {
+
+ private static final Intent BATTERY_SETTINGS = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY);
+
+ private final String[] mEntries;
+ private final String[] mDescriptionEntries;
+ private final String[] mAnnouncementEntries;
+ private final int[] mPerfProfileValues;
+ private final int mNumPerfProfiles;
+ private final Icon mIcon;
+
+ private final PowerManager mPm;
+ private final PerformanceManager mPerformanceManager;
+ private boolean mListening;
+
+ private PerformanceProfileObserver mObserver;
+
+ public PerfProfileTile(Host host) {
+ super(host);
+ mObserver = new PerformanceProfileObserver(mHandler);
+ mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mPerformanceManager = PerformanceManager.getInstance(mContext);
+ mNumPerfProfiles = mPerformanceManager.getNumberOfProfiles();
+
+ mPerfProfileValues = new int[mNumPerfProfiles];
+ mEntries = new String[mNumPerfProfiles];
+ mDescriptionEntries = new String[mNumPerfProfiles];
+ mAnnouncementEntries = new String[mNumPerfProfiles];
+
+ mIcon = ResourceIcon.get(R.drawable.ic_qs_perf_profile);
+
+ // Filter out unsupported profiles
+ Resources res = mContext.getResources();
+ final int[] perfProfileValues = res.getIntArray(
+ org.cyanogenmod.platform.internal.R.array.perf_profile_values);
+ final String[] entries = res.getStringArray(
+ org.cyanogenmod.platform.internal.R.array.perf_profile_entries);
+ final String[] descriptionEntries = res.getStringArray(
+ R.array.perf_profile_description);
+ final String[] announcementEntries = res.getStringArray(
+ R.array.perf_profile_announcement);
+ int i = 0;
+
+ for (int j = 0; j < perfProfileValues.length; j++) {
+ if (perfProfileValues[j] < mNumPerfProfiles) {
+ mPerfProfileValues[i] = perfProfileValues[j];
+ mEntries[i] = entries[j];
+ mDescriptionEntries[i] = descriptionEntries[j];
+ mAnnouncementEntries[i] = announcementEntries[j];
+ i++;
+ }
+ }
+ }
+
+ @Override
+ protected ProfileState newTileState() {
+ return new ProfileState();
+ }
+
+ @Override
+ protected void handleClick() {
+ showDetail(true);
+ }
+
+ @Override
+ public DetailAdapter getDetailAdapter() {
+ return new PerfProfileDetailAdapter();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(BATTERY_SETTINGS);
+ }
+
+ @Override
+ protected void handleUpdateState(ProfileState state, Object arg) {
+ state.visible = mPerformanceManager.getNumberOfProfiles() > 0;
+ state.profile = arg == null ? getCurrentProfileIndex() : (Integer) arg;
+ state.label = mEntries[state.profile];
+ state.icon = mIcon;
+ state.contentDescription = mDescriptionEntries[state.profile];
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_PERF_PROFILE;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ return mAnnouncementEntries[getCurrentProfileIndex()];
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (listening) {
+ mObserver.startObserving();
+ } else {
+ mObserver.endObserving();
+ }
+ }
+
+ private class PerformanceProfileObserver extends ContentObserver {
+ public PerformanceProfileObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ refreshState(getCurrentProfileIndex());
+ }
+
+ public void startObserving() {
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.PERFORMANCE_PROFILE),
+ false, this);
+ }
+
+ public void endObserving() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+ }
+
+ private int getCurrentProfileIndex() {
+ int index = 0;
+ int perfProfile = mPerformanceManager.getPowerProfile();
+
+ int count = mPerfProfileValues.length;
+ for (int i = 0; i < count; i++) {
+ if (mPerfProfileValues[i] == perfProfile) {
+ index = i;
+ break;
+ }
+ }
+
+ return index;
+ }
+
+ private void changeToProfile(int profileIndex) {
+ mPerformanceManager.setPowerProfile(mPerfProfileValues[profileIndex]); // content observer will notify
+ }
+
+ public static class ProfileState extends QSTile.State {
+ public int profile;
+
+ @Override
+ public boolean copyTo(State other) {
+ final ProfileState o = (ProfileState) other;
+ final boolean changed = profile != o.profile;
+ return super.copyTo(other) || changed;
+ }
+
+ @Override
+ protected StringBuilder toStringBuilder() {
+ final StringBuilder rt = super.toStringBuilder();
+ rt.insert(rt.length() - 1, ",profile=" + profile);
+ return rt;
+ }
+ }
+
+ private class PerfProfileDetailAdapter implements DetailAdapter,
+ AdapterView.OnItemClickListener {
+ private QSDetailItemsList mItems;
+
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_performance_profile_detail_title;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ return null;
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return BATTERY_SETTINGS;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+ // noop
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_PERF_PROFILE_DETAIL;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ mItems = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ ArrayAdapter adapter = new ArrayAdapter<String>(mContext,
+ android.R.layout.simple_list_item_single_choice, mEntries);
+ ListView listView = mItems.getListView();
+ listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ listView.setAdapter(adapter);
+ listView.setOnItemClickListener(this);
+ listView.setDivider(null);
+ listView.setItemChecked(getCurrentProfileIndex(), true);
+ return mItems;
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ changeToProfile(position);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ProfilesTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ProfilesTile.java
new file mode 100644
index 0000000..6f65f6c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ProfilesTile.java
@@ -0,0 +1,287 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.CheckedTextView;
+import android.widget.ListView;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSDetailItemsList;
+import com.android.systemui.qs.QSTile;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
+
+import cyanogenmod.app.Profile;
+import cyanogenmod.app.ProfileManager;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.providers.CMSettings;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public class ProfilesTile extends QSTile<QSTile.State> implements KeyguardMonitor.Callback {
+
+ private static final Intent PROFILES_SETTINGS =
+ new Intent("android.settings.PROFILES_SETTINGS");
+
+ private boolean mListening;
+ private ProfilesObserver mObserver;
+ private ProfileManager mProfileManager;
+ private QSDetailItemsList mDetails;
+ private ProfileAdapter mAdapter;
+ private KeyguardMonitor mKeyguardMonitor;
+
+ public ProfilesTile(Host host) {
+ super(host);
+ mProfileManager = ProfileManager.getInstance(mContext);
+ mObserver = new ProfilesObserver(mHandler);
+ mKeyguardMonitor = host.getKeyguardMonitor();
+ mKeyguardMonitor.addCallback(this);
+ }
+
+ @Override
+ protected void handleDestroy() {
+ mKeyguardMonitor.removeCallback(this);
+ }
+
+ @Override
+ protected State newTileState() {
+ return new State();
+ }
+
+ @Override
+ protected void handleClick() {
+ showDetail(true);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(PROFILES_SETTINGS);
+ }
+
+ @Override
+ protected void handleUpdateState(State state, Object arg) {
+ state.visible = true;
+
+
+
+ state.enabled = !mKeyguardMonitor.isShowing() || !mKeyguardMonitor.isSecure();
+ if (profilesEnabled()) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_profiles_on);
+ state.label = mProfileManager.getActiveProfile().getName();
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_profiles, state.label);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_profiles_off);
+ state.label = mContext.getString(R.string.quick_settings_profiles_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_profiles_off);
+ }
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (profilesEnabled()) {
+ return mContext.getString(R.string.accessibility_quick_settings_profiles_changed,
+ mState.label);
+ } else {
+ return mContext.getString(R.string.accessibility_quick_settings_profiles_changed_off);
+ }
+ }
+
+ private boolean profilesEnabled() {
+ return CMSettings.System.getInt(mContext.getContentResolver(),
+ CMSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_PROFILES;
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (listening) {
+ mObserver.startObserving();
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(ProfileManager.INTENT_ACTION_PROFILE_SELECTED);
+ filter.addAction(ProfileManager.INTENT_ACTION_PROFILE_UPDATED);
+ mContext.registerReceiver(mReceiver, filter);
+ refreshState();
+ } else {
+ mObserver.endObserving();
+ mContext.unregisterReceiver(mReceiver);
+ }
+ }
+
+ @Override
+ public DetailAdapter getDetailAdapter() {
+ return new ProfileDetailAdapter();
+ }
+
+ @Override
+ public void onKeyguardChanged() {
+ refreshState();
+ }
+
+ private class ProfileAdapter extends ArrayAdapter<Profile> {
+ public ProfileAdapter(Context context, List<Profile> profiles) {
+ super(context, android.R.layout.simple_list_item_single_choice, profiles);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ CheckedTextView label = (CheckedTextView) inflater.inflate(
+ android.R.layout.simple_list_item_single_choice, parent, false);
+
+ Profile p = getItem(position);
+ label.setText(p.getName());
+
+ return label;
+ }
+ }
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (ProfileManager.INTENT_ACTION_PROFILE_SELECTED.equals(intent.getAction())
+ || ProfileManager.INTENT_ACTION_PROFILE_UPDATED.equals(intent.getAction())) {
+ refreshState();
+ }
+ }
+ };
+
+ public class ProfileDetailAdapter implements DetailAdapter, AdapterView.OnItemClickListener {
+
+ private List<Profile> mProfilesList;
+
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_profiles;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ boolean enabled = profilesEnabled();
+ rebuildProfilesList(enabled);
+ return enabled;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_PROFILES_DETAIL;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ mDetails = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ mProfilesList = new ArrayList<>();
+ mDetails.setAdapter(mAdapter = new ProfileAdapter(context, mProfilesList));
+
+ final ListView list = mDetails.getListView();
+ list.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
+ list.setOnItemClickListener(this);
+
+ mDetails.setEmptyState(R.drawable.ic_qs_profiles_off,
+ R.string.quick_settings_profiles_off);
+
+ return mDetails;
+ }
+
+ private void rebuildProfilesList(boolean populate) {
+ mProfilesList.clear();
+ if (populate) {
+ int selected = -1;
+
+ final Profile[] profiles = mProfileManager.getProfiles();
+ final Profile activeProfile = mProfileManager.getActiveProfile();
+ final UUID activeUuid = activeProfile != null ? activeProfile.getUuid() : null;
+
+ for (int i = 0; i < profiles.length; i++) {
+ mProfilesList.add(profiles[i]);
+ if (activeUuid != null && activeUuid.equals(profiles[i].getUuid())) {
+ selected = i;
+ }
+ }
+ mDetails.getListView().setItemChecked(selected, true);
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return PROFILES_SETTINGS;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+ CMSettings.System.putInt(mContext.getContentResolver(),
+ CMSettings.System.SYSTEM_PROFILES_ENABLED, state ? 1 : 0);
+ fireToggleStateChanged(state);
+ rebuildProfilesList(state);
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ Profile selected = (Profile) parent.getItemAtPosition(position);
+ mProfileManager.setActiveProfile(selected.getUuid());
+ }
+ }
+
+ private class ProfilesObserver extends ContentObserver {
+ public ProfilesObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ refreshState();
+ }
+
+ public void startObserving() {
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.SYSTEM_PROFILES_ENABLED),
+ false, this);
+ }
+
+ public void endObserving() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
index 1a26a4d..f074d9d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
package com.android.systemui.qs.tiles;
+import android.content.Intent;
import android.content.res.Configuration;
import com.android.internal.logging.MetricsLogger;
@@ -26,6 +28,10 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock
/** Quick settings tile: Rotation **/
public class RotationLockTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent DISPLAY_ROTATION_SETTINGS =
+ new Intent("android.settings.DISPLAY_ROTATION_SETTINGS");
+
private final AnimationIcon mPortraitToAuto
= new AnimationIcon(R.drawable.ic_portrait_to_auto_rotate_animation);
private final AnimationIcon mAutoToPortrait
@@ -67,6 +73,11 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> {
}
@Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(DISPLAY_ROTATION_SETTINGS);
+ }
+
+ @Override
protected void handleUpdateState(BooleanState state, Object arg) {
if (mController == null) return;
final boolean rotationLocked = arg != null ? ((UserBoolean) arg).value
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenTimeoutTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenTimeoutTile.java
new file mode 100644
index 0000000..e933787
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenTimeoutTile.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.Settings;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSDetailItemsList;
+import com.android.systemui.qs.QSTile;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class ScreenTimeoutTile extends QSTile<ScreenTimeoutTile.TimeoutState> {
+
+ private static final Intent SETTINGS_INTENT = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
+ private static final String TIMEOUT_ENTRIES_NAME = "screen_timeout_entries";
+ private static final String TIMEOUT_VALUES_NAME = "screen_timeout_values";
+ private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
+
+ private final AnimationIcon mShort =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_short_avd);
+ private final AnimationIcon mShortReverse =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_short_reverse_avd);
+ private final AnimationIcon mMedium =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_med_avd);
+ private final AnimationIcon mMediumReverse =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_med_reverse_avd);
+ private final AnimationIcon mLong =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_long_avd);
+ private final AnimationIcon mLongReverse =
+ new AnimationIcon(R.drawable.ic_qs_screen_timeout_long_reverse_avd);
+
+ private String[] mEntries, mValues;
+
+ public ScreenTimeoutTile(Host host) {
+ super(host);
+ populateList();
+ }
+
+ private void populateList() {
+ try {
+ Context context = mContext.createPackageContext(SETTINGS_PACKAGE_NAME, 0);
+ Resources mSettingsResources = context.getResources();
+ int id = mSettingsResources.getIdentifier(TIMEOUT_ENTRIES_NAME,
+ "array", SETTINGS_PACKAGE_NAME);
+ if (id <= 0) {
+ return;
+ }
+ mEntries = mSettingsResources.getStringArray(id);
+ id = mSettingsResources.getIdentifier(TIMEOUT_VALUES_NAME,
+ "array", SETTINGS_PACKAGE_NAME);
+ if (id <= 0) {
+ return;
+ }
+ mValues = mSettingsResources.getStringArray(id);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private int getScreenTimeout() {
+ return Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.SCREEN_OFF_TIMEOUT, 0);
+ }
+
+ @Override
+ public DetailAdapter getDetailAdapter() {
+ return new ScreenTimeoutDetailAdapter();
+ }
+
+ private ContentObserver mObserver = new ContentObserver(mHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ refreshState();
+ }
+ };
+
+ @Override
+ public void setListening(boolean listening) {
+ if (listening) {
+ mContext.getContentResolver().registerContentObserver(
+ Settings.System.getUriFor(Settings.System.SCREEN_OFF_TIMEOUT),
+ false, mObserver);
+ } else {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ }
+ }
+
+ @Override
+ protected TimeoutState newTileState() {
+ return new TimeoutState();
+ }
+
+ @Override
+ protected void handleClick() {
+ if (mEntries.length > 0) {
+ showDetail(true);
+ }
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(SETTINGS_INTENT);
+ }
+
+ private String makeTimeoutSummaryString(int timeout) {
+ Resources res = mContext.getResources();
+ int resId;
+
+ /* ms -> seconds */
+ timeout /= 1000;
+
+ if (timeout >= 60 && timeout % 60 == 0) {
+ /* seconds -> minutes */
+ timeout /= 60;
+ if (timeout >= 60 && timeout % 60 == 0) {
+ /* minutes -> hours */
+ timeout /= 60;
+ resId = com.android.internal.R.plurals.duration_hours;
+ } else {
+ resId = com.android.internal.R.plurals.duration_minutes;
+ }
+ } else {
+ resId = com.android.internal.R.plurals.duration_seconds;
+ }
+
+ return res.getQuantityString(resId, timeout, timeout);
+ }
+
+ public static final class TimeoutState extends QSTile.State {
+ int previousTimeout;
+ }
+
+ private enum Bucket {
+ SMALL(0, 30000),
+ MEDIUM(60000,300000),
+ LARGE(600000, 1800000);
+ private final int start;
+ private final int stop;
+
+ Bucket(int start, int stop) {
+ this.start = start;
+ this.stop = stop;
+ }
+
+ public static Bucket getBucket(int value) {
+ for (Bucket item : Bucket.values()) {
+ if (value >= item.start && value <= item.stop) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ }
+ @Override
+ protected void handleUpdateState(final TimeoutState state, Object arg) {
+ int newTimeout = getScreenTimeout();
+
+ AnimationIcon d = null;
+ Bucket nextBucket = Bucket.getBucket(newTimeout);
+ Bucket previousBucket = Bucket.getBucket(state.previousTimeout);
+
+ if (state.previousTimeout < 60000) {
+ // Default
+ d = mMediumReverse;
+ if (nextBucket == Bucket.MEDIUM) {
+ // Medium
+ d = mShort;
+ } else if (nextBucket == Bucket.LARGE) {
+ // Large
+ d = mShortReverse;
+ }
+ } else if (state.previousTimeout < 600000) {
+ // Default
+ d = mShort;
+ if (nextBucket == Bucket.SMALL) {
+ // Small
+ d = mMediumReverse;
+ } else if (nextBucket == Bucket.LARGE) {
+ // Large
+ d = mMedium;
+ }
+ } else {
+ d = mMedium;
+ if (nextBucket == Bucket.MEDIUM) {
+ // Small
+ d = mLongReverse;
+ } else if (nextBucket == Bucket.SMALL) {
+ // Large
+ d = mLong;
+ }
+ }
+
+ if (state.icon == null || previousBucket != nextBucket) {
+ if (arg instanceof Boolean && (Boolean) arg) {
+ d.setAllowAnimation(true);
+ }
+ state.icon = d;
+ }
+
+ state.visible = true;
+ state.label = makeTimeoutSummaryString(newTimeout);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_screen_timeout, state.label);
+ state.previousTimeout = newTimeout;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_SCREEN_TIME_OUT;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ return mContext.getString(R.string.accessibility_quick_settings_screen_timeout_changed,
+ mState.label);
+ }
+
+ private class RadioAdapter extends ArrayAdapter<String> {
+
+ public RadioAdapter(Context context, int resource, String[] objects) {
+ super(context, resource, objects);
+ }
+
+ public RadioAdapter(Context context, int resource,
+ int textViewResourceId, String[] objects) {
+ super(context, resource, textViewResourceId, objects);
+ }
+
+ @Override
+ public View getView(int position, View view, ViewGroup parent) {
+ view = super.getView(position, view, parent);
+
+ view.setMinimumHeight(mContext.getResources() .getDimensionPixelSize(
+ R.dimen.qs_detail_item_height));
+
+ return view;
+ }
+
+ }
+ private class ScreenTimeoutDetailAdapter implements DetailAdapter,
+ AdapterView.OnItemClickListener {
+ private QSDetailItemsList mItems;
+
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_screen_timeout_detail_title;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ return null;
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return SETTINGS_INTENT;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+ // noop
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_SCREEN_TIME_OUT_DETAIL;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ mItems = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ ListView listView = mItems.getListView();
+ listView.setOnItemClickListener(this);
+ listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ listView.setDivider(null);
+ RadioAdapter adapter = new RadioAdapter(context,
+ android.R.layout.simple_list_item_single_choice, mEntries);
+ int indexOfSelection = Arrays.asList(mValues).indexOf(String.valueOf(getScreenTimeout()));
+ mItems.setAdapter(adapter);
+ listView.setItemChecked(indexOfSelection, true);
+ mItems.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ mUiHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ refreshState(true);
+ }
+ }, 100);
+
+ }
+ });
+ return mItems;
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ int selectedTimeout = Integer.valueOf(mValues[position]);
+ Settings.System.putInt(mContext.getContentResolver(),
+ Settings.System.SCREEN_OFF_TIMEOUT, selectedTimeout);
+ }
+ }
+} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/SyncTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/SyncTile.java
new file mode 100644
index 0000000..7ffebc7
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/SyncTile.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.content.SyncStatusObserver;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/** Quick settings tile: Sync **/
+public class SyncTile extends QSTile<QSTile.BooleanState> {
+
+ private Object mSyncObserverHandle = null;
+ private boolean mListening;
+
+ public SyncTile(Host host) {
+ super(host);
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ public void handleClick() {
+ ContentResolver.setMasterSyncAutomatically(!mState.value);
+ refreshState();
+ }
+
+ @Override
+ public void handleLongClick() {
+ Intent intent = new Intent("android.settings.SYNC_SETTINGS");
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ mHost.startActivityDismissingKeyguard(intent);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.value = ContentResolver.getMasterSyncAutomatically();
+ state.visible = true;
+ state.label = mContext.getString(R.string.quick_settings_sync_label);
+ if (state.value) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_sync_on);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_sync_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_sync_off);
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_sync_off);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_SYNC;
+ }
+
+ @Override
+ protected String composeChangeAnnouncement() {
+ if (mState.value) {
+ return mContext.getString(R.string.accessibility_quick_settings_sync_changed_on);
+ } else {
+ return mContext.getString(R.string.accessibility_quick_settings_sync_changed_off);
+ }
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+
+ if (listening) {
+ mSyncObserverHandle = ContentResolver.addStatusChangeListener(
+ ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncObserver);
+ } else {
+ ContentResolver.removeStatusChangeListener(mSyncObserverHandle);
+ mSyncObserverHandle = null;
+ }
+ }
+
+ private SyncStatusObserver mSyncObserver = new SyncStatusObserver() {
+ public void onStatusChanged(int which) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ refreshState();
+ }
+ });
+ }
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UsbTetherTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UsbTetherTile.java
new file mode 100644
index 0000000..1274195
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UsbTetherTile.java
@@ -0,0 +1,119 @@
+/*
+ * 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.systemui.qs.tiles;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.hardware.usb.UsbManager;
+import android.provider.Settings;
+import android.net.ConnectivityManager;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+/**
+ * USB Tether quick settings tile
+ */
+public class UsbTetherTile extends QSTile<QSTile.BooleanState> {
+ private static final Intent WIRELESS_SETTINGS = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
+
+ private final ConnectivityManager mConnectivityManager;
+
+ private boolean mListening;
+
+ private boolean mUsbTethered = false;
+ private boolean mUsbConnected = false;
+
+ public UsbTetherTile(Host host) {
+ super(host);
+ mConnectivityManager = (ConnectivityManager) mContext
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ }
+
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening)
+ return;
+ mListening = listening;
+ if (listening) {
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(UsbManager.ACTION_USB_STATE);
+ mContext.registerReceiver(mReceiver, filter);
+ } else {
+ mContext.unregisterReceiver(mReceiver);
+ }
+ }
+
+ @Override
+ protected void handleClick() {
+ mConnectivityManager.setUsbTethering(!mUsbTethered);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(WIRELESS_SETTINGS);
+ }
+
+ private void updateState() {
+ String[] tetheredIfaces = mConnectivityManager.getTetheredIfaces();
+ String[] usbRegexs = mConnectivityManager.getTetherableUsbRegexs();
+
+ mUsbTethered = false;
+ for (String s : tetheredIfaces) {
+ for (String regex : usbRegexs) {
+ if (s.matches(regex)) {
+ mUsbTethered = true;
+ return;
+ }
+ }
+ }
+ }
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mUsbConnected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
+ if (mUsbConnected && mConnectivityManager.isTetheringSupported()) {
+ updateState();
+ } else {
+ mUsbTethered = false;
+ }
+ refreshState();
+ }
+ };
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = mUsbConnected && mConnectivityManager.isTetheringSupported();
+ state.value = mUsbTethered;
+ state.label = mContext.getString(R.string.quick_settings_usb_tether_label);
+ state.icon = mUsbTethered ? ResourceIcon.get(R.drawable.ic_qs_usb_tether_on)
+ : ResourceIcon.get(R.drawable.ic_qs_usb_tether_off);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_USB_TETHER;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/VolumeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/VolumeTile.java
new file mode 100644
index 0000000..ae29f16
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/VolumeTile.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.qs.tiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.media.AudioManager;
+import android.provider.Settings;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
+public class VolumeTile extends QSTile<QSTile.BooleanState> {
+
+ private static final Intent SOUND_SETTINGS = new Intent("android.settings.SOUND_SETTINGS");
+
+ public VolumeTile(Host host) {
+ super(host);
+ }
+
+ @Override
+ protected void handleClick() {
+ AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+ am.adjustVolume(AudioManager.ADJUST_SAME, AudioManager.FLAG_SHOW_UI);
+ }
+
+ @Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(SOUND_SETTINGS);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = true;
+ state.label = mContext.getString(R.string.quick_settings_volume_panel_label);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_volume_panel); // TODO needs own icon
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.TILE_VOLUME;
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ // Do nothing
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index e654efd..abc9acd 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,16 +20,20 @@ package com.android.systemui.qs.tiles;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.Looper;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
import com.android.internal.logging.MetricsLogger;
import com.android.settingslib.wifi.AccessPoint;
+
import com.android.systemui.R;
-import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
+import com.android.systemui.qs.QSDetailItemsList;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.QSTileView;
import com.android.systemui.qs.SignalTileView;
@@ -37,6 +42,9 @@ import com.android.systemui.statusbar.policy.NetworkController.AccessPointContro
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+
+import java.util.ArrayList;
import java.util.List;
/** Quick settings tile: Wifi **/
@@ -58,7 +66,7 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
}
@Override
- public boolean supportsDualTargets() {
+ public boolean hasDualTargetsDetails() {
return true;
}
@@ -116,19 +124,36 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
}
@Override
+ protected void handleLongClick() {
+ mHost.startActivityDismissingKeyguard(WIFI_SETTINGS);
+ }
+
+ @Override
protected void handleUpdateState(SignalState state, Object arg) {
state.visible = true;
if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
- CallbackInfo cb = (CallbackInfo) arg;
- if (cb == null) {
+ final CallbackInfo cb;
+ if (arg == null) {
cb = mSignalCallback.mInfo;
+ } else {
+ cb = (CallbackInfo) arg;
}
boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null);
boolean enabledChanging = state.enabled != cb.enabled;
if (enabledChanging) {
- mDetailAdapter.setItemsVisible(cb.enabled);
+ if (Looper.myLooper() == Looper.getMainLooper()) {
+ // on main thread, bypass the handler
+ mDetailAdapter.setItemsVisible(cb.enabled);
+ } else {
+ mUiHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mDetailAdapter.setItemsVisible(cb.enabled);
+ }
+ });
+ }
fireToggleStateChanged(cb.enabled);
}
state.enabled = cb.enabled;
@@ -235,10 +260,12 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
};
private final class WifiDetailAdapter implements DetailAdapter,
- NetworkController.AccessPointController.AccessPointCallback, QSDetailItems.Callback {
+ AccessPointController.AccessPointCallback, AdapterView.OnItemClickListener {
- private QSDetailItems mItems;
- private AccessPoint[] mAccessPoints;
+ private QSDetailItemsList mItemsList;
+ private List<AccessPoint> mAccessPoints;
+ private List<Item> mDisplayedAccessPoints = new ArrayList<>();
+ private QSDetailItemsList.QSDetailListAdapter mAdapter;
@Override
public int getTitle() {
@@ -250,6 +277,11 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
}
@Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
public Boolean getToggleState() {
return mState.enabled;
}
@@ -273,19 +305,21 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
mAccessPoints = null;
mWifiController.scanForAccessPoints();
fireScanStateChanged(true);
- mItems = QSDetailItems.convertOrInflate(context, convertView, parent);
- mItems.setTagSuffix("Wifi");
- mItems.setCallback(this);
- mItems.setEmptyState(R.drawable.ic_qs_wifi_detail_empty,
+ mItemsList = QSDetailItemsList.convertOrInflate(context, convertView, parent);
+ ListView listView = mItemsList.getListView();
+ listView.setDivider(null);
+ listView.setOnItemClickListener(this);
+ listView.setAdapter(mAdapter =
+ new QSDetailItemsList.QSDetailListAdapter(context, mDisplayedAccessPoints));
+ mItemsList.setEmptyState(R.drawable.ic_qs_wifi_detail_empty,
R.string.quick_settings_wifi_detail_empty_text);
updateItems();
- setItemsVisible(mState.enabled);
- return mItems;
+ return mItemsList;
}
@Override
public void onAccessPointsChanged(final List<AccessPoint> accessPoints) {
- mAccessPoints = accessPoints.toArray(new AccessPoint[accessPoints.size()]);
+ mAccessPoints = accessPoints;
updateItems();
if (accessPoints != null && accessPoints.size() > 0) {
fireScanStateChanged(false);
@@ -297,35 +331,22 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
mHost.startActivityDismissingKeyguard(settingsIntent);
}
- @Override
- public void onDetailItemClick(Item item) {
- if (item == null || item.tag == null) return;
- final AccessPoint ap = (AccessPoint) item.tag;
- if (!ap.isActive()) {
- if (mWifiController.connect(ap)) {
- mHost.collapsePanels();
- }
- }
- showDetail(false);
- }
-
- @Override
- public void onDetailItemDisconnect(Item item) {
- // noop
- }
-
public void setItemsVisible(boolean visible) {
- if (mItems == null) return;
- mItems.setItemsVisible(visible);
+ if (mAdapter == null) return;
+ if (visible) {
+ updateItems();
+ } else {
+ mDisplayedAccessPoints.clear();
+ }
+ mAdapter.notifyDataSetChanged();
}
private void updateItems() {
- if (mItems == null) return;
- Item[] items = null;
+ if (mAdapter == null) return;
if (mAccessPoints != null) {
- items = new Item[mAccessPoints.length];
- for (int i = 0; i < mAccessPoints.length; i++) {
- final AccessPoint ap = mAccessPoints[i];
+ mDisplayedAccessPoints.clear();
+ for (int i = 0; i < mAccessPoints.size(); i++) {
+ final AccessPoint ap = mAccessPoints.get(i);
final Item item = new Item();
item.tag = ap;
item.icon = mWifiController.getIcon(ap);
@@ -334,10 +355,23 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
item.overlay = ap.getSecurity() != AccessPoint.SECURITY_NONE
? mContext.getDrawable(R.drawable.qs_ic_wifi_lock)
: null;
- items[i] = item;
+ mDisplayedAccessPoints.add(item);
+ }
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ Item item = (Item) parent.getItemAtPosition(position);
+ if (item == null || item.tag == null) return;
+ final AccessPoint ap = (AccessPoint) item.tag;
+ if (!ap.isActive()) {
+ if (mWifiController.connect(ap)) {
+ mHost.collapsePanels();
}
}
- mItems.setItems(items);
+ showDetail(false);
}
};
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Constants.java b/packages/SystemUI/src/com/android/systemui/recents/Constants.java
index a4acf83..b482a50 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Constants.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Constants.java
@@ -38,7 +38,7 @@ public class Constants {
// Enables the filtering of tasks according to their grouping
public static final boolean EnableTaskFiltering = false;
// Enables dismiss-all
- public static final boolean EnableDismissAll = false;
+ public static final boolean EnableDismissAll = true;
// Enables debug mode
public static final boolean EnableDebugMode = false;
// Enables the search bar layout
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
index 3917bab..b3a3dfd 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
@@ -46,6 +46,7 @@ import com.android.systemui.R;
import com.android.systemui.RecentsComponent;
import com.android.systemui.SystemUI;
import com.android.systemui.SystemUIApplication;
+import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.recents.misc.Console;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.recents.model.RecentsTaskLoadPlan;
@@ -61,6 +62,8 @@ import com.android.systemui.statusbar.phone.PhoneStatusBar;
import java.util.ArrayList;
+import cyanogenmod.providers.CMSettings;
+
/**
* Annotation for a method that is only called from the primary user's SystemUI process and will be
* proxied to the current user.
@@ -161,6 +164,35 @@ public class Recents extends SystemUI
}
}
+ class RecentsSettingsObserver extends UserContentObserver {
+
+ public RecentsSettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.RECENTS_SHOW_SEARCH_BAR),
+ false, this);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ protected void update() {
+ if (mConfig.updateShowSearch(mContext)) {
+ reloadHeaderBarLayout();
+ }
+ }
+ }
+
static RecentsComponent.Callbacks sRecentsComponentCallbacks;
static RecentsTaskLoadPlan sInstanceLoadPlan;
static Recents sInstance;
@@ -171,6 +203,7 @@ public class Recents extends SystemUI
TaskStackListenerImpl mTaskStackListener;
RecentsOwnerEventProxyReceiver mProxyBroadcastReceiver;
RecentsAppWidgetHost mAppWidgetHost;
+ RecentsSettingsObserver mSettingsObserver;
boolean mBootCompleted;
boolean mStartAnimationTriggered;
boolean mCanReuseTaskStackViews = true;
@@ -259,6 +292,9 @@ public class Recents extends SystemUI
// Load the header bar layout
reloadHeaderBarLayout();
+ mSettingsObserver = new RecentsSettingsObserver(mHandler);
+ mSettingsObserver.observe();
+
// When we start, preload the data associated with the previous recent tasks.
// We can use a new plan since the caches will be the same.
RecentsTaskLoader loader = RecentsTaskLoader.getInstance();
@@ -549,7 +585,8 @@ public class Recents extends SystemUI
// Try and pre-emptively bind the search widget on startup to ensure that we
// have the right thumbnail bounds to animate to.
// Note: We have to reload the widget id before we get the task stack bounds below
- if (mSystemServicesProxy.getOrBindSearchAppWidget(mContext, mAppWidgetHost) != null) {
+ if (mConfig.searchBarEnabled &&
+ mSystemServicesProxy.getOrBindSearchAppWidget(mContext, mAppWidgetHost) != null) {
mConfig.getSearchBarBounds(mWindowRect.width(), mWindowRect.height(),
mStatusBarHeight, searchBarBounds);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index d0876fa..9e08599 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -48,6 +48,7 @@ import com.android.systemui.recents.views.DebugOverlayView;
import com.android.systemui.recents.views.RecentsView;
import com.android.systemui.recents.views.SystemBarScrimViews;
import com.android.systemui.recents.views.ViewAnimation;
+import cyanogenmod.providers.CMSettings;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -84,6 +85,8 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
// Runnable to be executed after we paused ourselves
Runnable mAfterPauseRunnable;
+ private ReferenceCountedTrigger mExitTrigger;
+
/**
* A common Runnable to finish Recents either by calling finish() (with a custom animation) or
* launching Home with some ActivityOptions. Generally we always launch home when we exit
@@ -94,6 +97,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
class FinishRecentsRunnable implements Runnable {
Intent mLaunchIntent;
ActivityOptions mLaunchOpts;
+ boolean mAbort = false;
/**
* Creates a finish runnable that starts the specified intent, using the given
@@ -104,8 +108,15 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
mLaunchOpts = opts;
}
+ public void setAbort(boolean run) {
+ this.mAbort = run;
+ }
+
@Override
public void run() {
+ if (mAbort) {
+ return;
+ }
// Finish Recents
if (mLaunchIntent != null) {
try {
@@ -207,9 +218,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
ArrayList<TaskStack> stacks = plan.getAllTaskStacks();
mConfig.launchedWithNoRecentTasks = !plan.hasTasks();
- if (!mConfig.launchedWithNoRecentTasks) {
- mRecentsView.setTaskStacks(stacks);
- }
+ mRecentsView.setTaskStacks(stacks);
// Create the home intent runnable
Intent homeIntent = new Intent(Intent.ACTION_MAIN, null);
@@ -218,10 +227,8 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
mFinishLaunchHomeRunnable = new FinishRecentsRunnable(homeIntent,
ActivityOptions.makeCustomAnimation(this,
- mConfig.launchedFromSearchHome ? R.anim.recents_to_search_launcher_enter :
- R.anim.recents_to_launcher_enter,
- mConfig.launchedFromSearchHome ? R.anim.recents_to_search_launcher_exit :
- R.anim.recents_to_launcher_exit));
+ R.anim.recents_to_search_launcher_enter,
+ R.anim.recents_to_search_launcher_exit));
// Mark the task that is the launch target
int taskStackCount = stacks.size();
@@ -248,15 +255,26 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
mEmptyView = mEmptyViewStub.inflate();
}
mEmptyView.setVisibility(View.VISIBLE);
+ mEmptyView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ dismissRecentsToHome(true);
+ }
+ });
mRecentsView.setSearchBarVisibility(View.GONE);
} else {
if (mEmptyView != null) {
mEmptyView.setVisibility(View.GONE);
+ mEmptyView.setOnClickListener(null);
}
- if (mRecentsView.hasValidSearchBar()) {
- mRecentsView.setSearchBarVisibility(View.VISIBLE);
+ if (!mConfig.searchBarEnabled) {
+ mRecentsView.setSearchBarVisibility(View.GONE);
} else {
- refreshSearchWidgetView();
+ if (mRecentsView.hasValidSearchBar()) {
+ mRecentsView.setSearchBarVisibility(View.VISIBLE);
+ } else {
+ refreshSearchWidgetView();
+ }
}
}
@@ -309,13 +327,26 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
return false;
}
+ @Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+ if (!hasFocus && mExitTrigger != null && mExitTrigger.getCount() > 0) {
+ // we are animating recents out and the window has lost focus during the
+ // animation. we need to stop everything we're doing now and get out
+ // without any animations (since we were already animating)
+ mFinishLaunchHomeRunnable.setAbort(true);
+ finish();
+ overridePendingTransition(0, 0);
+ }
+ }
+
/** Dismisses Recents directly to Home. */
void dismissRecentsToHomeRaw(boolean animated) {
if (animated) {
- ReferenceCountedTrigger exitTrigger = new ReferenceCountedTrigger(this,
+ mExitTrigger = new ReferenceCountedTrigger(this,
null, mFinishLaunchHomeRunnable, null);
mRecentsView.startExitToHomeAnimation(
- new ViewAnimation.TaskViewExitContext(exitTrigger));
+ new ViewAnimation.TaskViewExitContext(mExitTrigger));
} else {
mFinishLaunchHomeRunnable.run();
}
@@ -431,6 +462,14 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
}
@Override
+ protected void onResume() {
+ if (mConfig.searchBarEnabled && mConfig.launchedFromHome) {
+ overridePendingTransition(0, 0);
+ }
+ super.onResume();
+ }
+
+ @Override
protected void onPause() {
super.onPause();
if (mAfterPauseRunnable != null) {
@@ -442,6 +481,9 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
@Override
protected void onStop() {
super.onStop();
+
+ mExitTrigger = null;
+
MetricsLogger.hidden(this, MetricsLogger.OVERVIEW_ACTIVITY);
RecentsTaskLoader loader = RecentsTaskLoader.getInstance();
SystemServicesProxy ssp = loader.getSystemServicesProxy();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
index dfe7e96..d7e8b99 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java
@@ -31,6 +31,7 @@ import com.android.systemui.R;
import com.android.systemui.recents.misc.Console;
import com.android.systemui.recents.misc.SystemServicesProxy;
+import cyanogenmod.providers.CMSettings;
/** A static Recents configuration for the current context
* NOTE: We should not hold any references to a Context from a static instance */
@@ -73,6 +74,7 @@ public class RecentsConfiguration {
public int maxNumTasksToLoad;
/** Search bar */
+ public boolean searchBarEnabled = true;
public int searchBarSpaceHeightPx;
/** Task stack */
@@ -175,6 +177,14 @@ public class RecentsConfiguration {
return sInstance;
}
+ /** Returns the current recents configuration or creates and populates it if required */
+ public static RecentsConfiguration getInstance(Context context, SystemServicesProxy ssp) {
+ if (sInstance == null) {
+ sInstance = reinitialize(context, ssp);
+ }
+ return sInstance;
+ }
+
/** Updates the state, given the specified context */
void update(Context context) {
Resources res = context.getResources();
@@ -271,6 +281,13 @@ public class RecentsConfiguration {
svelteLevel = res.getInteger(R.integer.recents_svelte_level);
}
+ public boolean updateShowSearch(Context context) {
+ boolean wasEnabled = searchBarEnabled;
+ searchBarEnabled = CMSettings.System.getInt(context.getContentResolver(),
+ CMSettings.System.RECENTS_SHOW_SEARCH_BAR, 1) == 1;
+ return wasEnabled != searchBarEnabled;
+ }
+
/** Updates the system insets */
public void updateSystemInsets(Rect insets) {
systemInsets.set(insets);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java
index cbf5c05..b1413c9 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java
@@ -30,9 +30,11 @@ import android.graphics.drawable.ColorDrawable;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.view.Gravity;
+import android.view.IWindowManager;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.DecelerateInterpolator;
import android.widget.Button;
@@ -49,6 +51,7 @@ public class ScreenPinningRequest implements View.OnClickListener {
private final AccessibilityManager mAccessibilityService;
private final WindowManager mWindowManager;
+ private final IWindowManager mWindowManagerService;
private RequestWindowView mRequestWindow;
@@ -58,6 +61,7 @@ public class ScreenPinningRequest implements View.OnClickListener {
mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
mWindowManager = (WindowManager)
mContext.getSystemService(Context.WINDOW_SERVICE);
+ mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
}
public void clearPrompt() {
@@ -215,19 +219,33 @@ public class ScreenPinningRequest implements View.OnClickListener {
.setVisibility(View.INVISIBLE);
}
- final int description = mAccessibilityService.isEnabled()
+ final int description;
+ if (hasNavigationBar()) {
+ description = mAccessibilityService.isEnabled()
? R.string.screen_pinning_description_accessible
: R.string.screen_pinning_description;
+ final int backBgVis =
+ mAccessibilityService.isEnabled() ? View.INVISIBLE : View.VISIBLE;
+ mLayout.findViewById(R.id.screen_pinning_back_bg).setVisibility(backBgVis);
+ mLayout.findViewById(R.id.screen_pinning_back_bg_light).setVisibility(backBgVis);
+ } else {
+ description = R.string.screen_pinning_description_no_navbar;
+ ((ViewGroup) buttons.getParent()).removeView(buttons);
+ }
((TextView) mLayout.findViewById(R.id.screen_pinning_description))
.setText(description);
- final int backBgVisibility =
- mAccessibilityService.isEnabled() ? View.INVISIBLE : View.VISIBLE;
- mLayout.findViewById(R.id.screen_pinning_back_bg).setVisibility(backBgVisibility);
- mLayout.findViewById(R.id.screen_pinning_back_bg_light).setVisibility(backBgVisibility);
-
+
addView(mLayout, getRequestLayoutParams(isLandscape));
}
+ private boolean hasNavigationBar() {
+ try {
+ return mWindowManagerService.hasNavigationBar();
+ } catch (RemoteException e) {
+ //ignore
+ }
+ return false;
+ }
private void swapChildrenIfRtlAndVertical(View group) {
if (mContext.getResources().getConfiguration().getLayoutDirection()
!= View.LAYOUT_DIRECTION_RTL) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
index ad25c85..4b3b391 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
@@ -458,7 +458,7 @@ public class RecentsTaskLoader {
/** Creates a new plan for loading the recent tasks. */
public RecentsTaskLoadPlan createLoadPlan(Context context) {
- RecentsConfiguration config = RecentsConfiguration.getInstance();
+ RecentsConfiguration config = RecentsConfiguration.getInstance(context, mSystemServicesProxy);
RecentsTaskLoadPlan plan = new RecentsTaskLoadPlan(context, config, mSystemServicesProxy);
return plan;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index 947c19c..2f11c56 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -31,6 +31,7 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Log;
+import android.util.EventLog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowInsets;
@@ -48,6 +49,8 @@ import com.android.systemui.recents.model.RecentsTaskLoader;
import com.android.systemui.recents.model.Task;
import com.android.systemui.recents.model.TaskStack;
+import com.android.systemui.EventLogTags;
+
import java.util.ArrayList;
import java.util.List;
@@ -267,6 +270,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
stackView.startEnterRecentsAnimation(ctx);
}
ctx.postAnimationTrigger.decrement();
+
+ EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_EVENT, 1 /* opened */);
}
/** Requests all task stacks to start their exit-recents animation */
@@ -323,7 +328,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
// Get the search bar bounds and measure the search bar layout
Rect searchBarSpaceBounds = new Rect();
- if (mSearchBar != null) {
+ if (mSearchBar != null && mConfig.searchBarEnabled) {
mConfig.getSearchBarBounds(width, height, mConfig.systemInsets.top, searchBarSpaceBounds);
mSearchBar.measure(
MeasureSpec.makeMeasureSpec(searchBarSpaceBounds.width(), MeasureSpec.EXACTLY),
@@ -360,7 +365,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
// Get the search bar bounds so that we lay it out
- if (mSearchBar != null) {
+ if (mSearchBar != null && mConfig.searchBarEnabled) {
Rect searchBarSpaceBounds = new Rect();
mConfig.getSearchBarBounds(getMeasuredWidth(), getMeasuredHeight(),
mConfig.systemInsets.top, searchBarSpaceBounds);
@@ -620,6 +625,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
launchRunnable.run();
}
}
+
+ EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_EVENT, 3 /* chose task */);
}
@Override
@@ -659,6 +666,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
// Keep track of all-deletions
MetricsLogger.count(getContext(), "overview_task_all_dismissed", 1);
+ EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_EVENT, 4 /* closed all */);
}
/** Final callback after Recents is finally hidden. */
@@ -670,6 +678,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
TaskStackView stackView = stackViews.get(i);
stackView.onRecentsHidden();
}
+ EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_EVENT, 2 /* closed */);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index 0068f84..43b9a3e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -17,18 +17,27 @@
package com.android.systemui.recents.views;
import android.animation.ValueAnimator;
+import android.app.ActivityManager;
+import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Bundle;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageDataObserver;
+import android.content.pm.PackageManager;
+import android.net.Uri;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
+import android.widget.PopupMenu;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
@@ -85,6 +94,9 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
boolean mDismissAllButtonAnimating;
int mFocusedTaskIndex = -1;
int mPrevAccessibilityFocusedIndex = -1;
+
+ private PopupMenu mPopup;
+
// Optimizations
int mStackViewsAnimationDuration;
boolean mStackViewsDirty = true;
@@ -1372,6 +1384,85 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
}
@Override
+ public void onTaskViewLongClicked(final TaskView tv) {
+ final PopupMenu popup = new PopupMenu(getContext(), tv.mHeaderView.mApplicationIcon);
+ mPopup = popup;
+ popup.getMenuInflater().inflate(R.menu.recent_popup_menu, popup.getMenu());
+
+ final Task task = tv.getTask();
+ final String packageName = task.key.baseIntent.getComponent().getPackageName();
+
+ try {
+ PackageManager pm = (PackageManager) getContext().getPackageManager();
+ ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
+ DevicePolicyManager dpm = (DevicePolicyManager) getContext()
+ .getSystemService(Context.DEVICE_POLICY_SERVICE);
+
+ boolean hasActiveAdmins = dpm.packageHasActiveAdmins(packageName);
+ boolean isClearable = (appInfo.flags &
+ (ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA | ApplicationInfo.FLAG_SYSTEM)) !=
+ ApplicationInfo.FLAG_SYSTEM;
+ if (!isClearable || hasActiveAdmins) {
+ popup.getMenu().findItem(R.id.recent_wipe_app).setEnabled(false);
+ popup.getMenu().findItem(R.id.recent_uninstall).setEnabled(false);
+ }
+ } catch (PackageManager.NameNotFoundException ex) {
+ }
+ popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.recent_remove_item:
+ onTaskViewDismissed(tv);
+ break;
+ case R.id.recent_inspect_item:
+ onTaskViewAppInfoClicked(tv);
+ break;
+ case R.id.recent_force_stop:
+ {
+ ActivityManager am = (ActivityManager) getContext()
+ .getSystemService(Context.ACTIVITY_SERVICE);
+ am.forceStopPackage(packageName);
+ onTaskViewDismissed(tv);
+ break;
+ }
+ case R.id.recent_wipe_app:
+ {
+ ActivityManager am = (ActivityManager) getContext()
+ .getSystemService(Context.ACTIVITY_SERVICE);
+ am.clearApplicationUserData(packageName, new IPackageDataObserver.Stub() {
+ @Override
+ public void onRemoveCompleted(String packageName, boolean succeeded) {}
+ });
+ onTaskViewDismissed(tv);
+ break;
+ }
+ case R.id.recent_uninstall:
+ {
+ Uri packageUri = Uri.parse("package:" + packageName);
+ Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
+ uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, true);
+ getContext().startActivity(uninstallIntent);
+ onTaskViewDismissed(tv);
+ break;
+ }
+ default:
+ return false;
+ }
+ return true;
+ }
+ });
+ popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
+ @Override
+ public void onDismiss(PopupMenu menu) {
+ mPopup = null;
+ }
+ });
+ popup.show();
+ }
+
+
+ @Override
public void onTaskViewClicked(TaskView tv, Task task, boolean lockToTask) {
// Cancel any doze triggers
mUIDozeTrigger.stopDozing();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
index cbfe842..b7e46f4 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
@@ -34,6 +34,7 @@ import com.android.systemui.recents.RecentsConfiguration;
import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.recents.model.Task;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
+import cyanogenmod.providers.CMSettings;
/* A task view */
public class TaskView extends FrameLayout implements Task.TaskCallbacks,
@@ -43,6 +44,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
interface TaskViewCallbacks {
public void onTaskViewAppIconClicked(TaskView tv);
public void onTaskViewAppInfoClicked(TaskView tv);
+ public void onTaskViewLongClicked(TaskView tv);
public void onTaskViewClicked(TaskView tv, Task task, boolean lockToTask);
public void onTaskViewDismissed(TaskView tv);
public void onTaskViewClipStateChanged(TaskView tv);
@@ -769,7 +771,14 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
public boolean onLongClick(View v) {
if (v == mHeaderView.mApplicationIcon) {
if (mCb != null) {
- mCb.onTaskViewAppInfoClicked(this);
+ boolean showDevShortcuts =
+ CMSettings.Secure.getInt(v.getContext().getContentResolver(),
+ CMSettings.Secure.DEVELOPMENT_SHORTCUT, 0) != 0;
+ if (showDevShortcuts) {
+ mCb.onTaskViewLongClicked(this);
+ } else {
+ mCb.onTaskViewAppInfoClicked(this);
+ }
return true;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 9e3cf37..260f625 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -430,6 +430,7 @@ class GlobalScreenshot {
private MediaActionSound mCameraSound;
+ private final int mSfHwRotation;
/**
* @param context everything needs a context :(
@@ -496,6 +497,9 @@ class GlobalScreenshot {
// Setup the Camera shutter sound
mCameraSound = new MediaActionSound();
mCameraSound.load(MediaActionSound.SHUTTER_CLICK);
+
+ // Load hardware rotation from prop
+ mSfHwRotation = android.os.SystemProperties.getInt("ro.sf.hwrotation",0) / 90;
}
/**
@@ -539,7 +543,10 @@ class GlobalScreenshot {
// only in the natural orientation of the device :!)
mDisplay.getRealMetrics(mDisplayMetrics);
float[] dims = {mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels};
- float degrees = getDegreesForRotation(mDisplay.getRotation());
+ int rot = mDisplay.getRotation();
+ // Allow for abnormal hardware orientation
+ rot = (rot + mSfHwRotation) % 4;
+ float degrees = getDegreesForRotation(rot);
boolean requiresRotation = (degrees > 0);
if (requiresRotation) {
// Get the dimensions of the device in its native orientation
diff --git a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
index 77c27fa..e74edd0 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
@@ -42,7 +42,7 @@ public class BrightnessController implements ToggleSlider.Listener {
* {@link android.provider.Settings.System#SCREEN_AUTO_BRIGHTNESS_ADJ} uses the range [-1, 1].
* Using this factor, it is converted to [0, BRIGHTNESS_ADJ_RESOLUTION] for the SeekBar.
*/
- private static final float BRIGHTNESS_ADJ_RESOLUTION = 2048;
+ public static final float BRIGHTNESS_ADJ_RESOLUTION = 2048;
private final int mMinimumBacklight;
private final int mMaximumBacklight;
diff --git a/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessController.java
new file mode 100644
index 0000000..617ef8f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessController.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2012-2015 The CyanogenMod 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.systemui.settings;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.systemui.R;
+
+import java.lang.Exception;
+import java.util.ArrayList;
+
+import cyanogenmod.providers.CMSettings;
+
+public class NotificationBrightnessController implements ToggleSlider.Listener {
+ private static final String TAG = "StatusBar.NotificationBrightnessController";
+
+ public static final int LIGHT_BRIGHTNESS_MINIMUM = 1;
+ public static final int LIGHT_BRIGHTNESS_MAXIMUM = 255;
+
+ // Minimum delay between LED notification updates
+ private final static long LED_UPDATE_DELAY_MS = 250;
+
+ private int mCurrentBrightness;
+ private final int mMinimumBrightness;
+ private final int mMaximumBrightness;
+
+ private final Context mContext;
+ private final ToggleSlider mControl;
+ private final CurrentUserTracker mUserTracker;
+ private final Handler mHandler;
+ private final NotificationBrightnessObserver mBrightnessObserver;
+
+ private ArrayList<BrightnessStateChangeCallback> mChangeCallbacks =
+ new ArrayList<BrightnessStateChangeCallback>();
+
+ private boolean mListening;
+ private boolean mExternalChange;
+
+ private boolean mNotificationAllow;
+ private final Bundle mNotificationBundle;
+ private final Notification.Builder mNotificationBuilder;
+ private NotificationManager mNotificationManager;
+
+ public interface BrightnessStateChangeCallback {
+ public void onBrightnessLevelChanged();
+ }
+
+ /** ContentObserver to watch brightness **/
+ private class NotificationBrightnessObserver extends ContentObserver {
+
+ private final Uri NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_URI =
+ CMSettings.System.getUriFor(CMSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL);
+
+ public NotificationBrightnessObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onChange(selfChange, null);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ if (selfChange) return;
+ try {
+ mExternalChange = true;
+ updateSlider();
+ for (BrightnessStateChangeCallback cb : mChangeCallbacks) {
+ cb.onBrightnessLevelChanged();
+ }
+ } finally {
+ mExternalChange = false;
+ }
+ }
+
+ public void startObserving() {
+ final ContentResolver cr = mContext.getContentResolver();
+ cr.unregisterContentObserver(this);
+ cr.registerContentObserver(
+ NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_URI,
+ false, this, UserHandle.USER_ALL);
+ }
+
+ public void stopObserving() {
+ final ContentResolver cr = mContext.getContentResolver();
+ cr.unregisterContentObserver(this);
+ }
+
+ }
+
+ public NotificationBrightnessController(Context context, ToggleSlider control) {
+ mContext = context;
+ mControl = control;
+ mHandler = new Handler();
+ mUserTracker = new CurrentUserTracker(mContext) {
+ @Override
+ public void onUserSwitched(int newUserId) {
+ updateSlider();
+ }
+ };
+ mBrightnessObserver = new NotificationBrightnessObserver(mHandler);
+
+ mMinimumBrightness = LIGHT_BRIGHTNESS_MINIMUM;
+ mMaximumBrightness = LIGHT_BRIGHTNESS_MAXIMUM;
+ mCurrentBrightness = LIGHT_BRIGHTNESS_MAXIMUM;
+
+ mNotificationManager =
+ (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+
+ mNotificationBundle = new Bundle();
+ mNotificationBuilder = new Notification.Builder(mContext);
+
+ mNotificationBundle.putBoolean(Notification.EXTRA_FORCE_SHOW_LIGHTS, true);
+ mNotificationBuilder.setExtras(mNotificationBundle)
+ .setContentTitle(mContext.getString(R.string.led_notification_title))
+ .setContentText(mContext.getString(R.string.led_notification_text))
+ .setSmallIcon(R.drawable.ic_settings)
+ .setOngoing(true);
+ }
+
+ private Handler mLedHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ updateNotification();
+ }
+ };
+
+ public void addStateChangedCallback(BrightnessStateChangeCallback cb) {
+ mChangeCallbacks.add(cb);
+ }
+
+ public boolean removeStateChangedCallback(BrightnessStateChangeCallback cb) {
+ return mChangeCallbacks.remove(cb);
+ }
+
+ @Override
+ public void onInit(ToggleSlider control) {
+ // Do nothing
+ }
+
+ public void registerCallbacks() {
+ if (mListening) {
+ return;
+ }
+
+ // Update the slider and mode before attaching the listener so we don't
+ // receive the onChanged notifications for the initial values.
+ mNotificationAllow = true;
+ updateSlider();
+
+ mBrightnessObserver.startObserving();
+ mUserTracker.startTracking();
+
+ mControl.setOnChangedListener(this);
+ mListening = true;
+ }
+
+ /** Unregister all call backs, both to and from the controller */
+ public void unregisterCallbacks() {
+ if (!mListening) {
+ return;
+ }
+
+ mNotificationAllow = false;
+ mBrightnessObserver.stopObserving();
+ mUserTracker.stopTracking();
+ mControl.setOnChangedListener(null);
+ mNotificationManager.cancel(1);
+ mListening = false;
+
+ CMSettings.System.putIntForUser(mContext.getContentResolver(),
+ CMSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
+ mCurrentBrightness, UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ public void onChanged(ToggleSlider view, boolean tracking, boolean automatic, int value,
+ boolean stopTracking) {
+ if (mExternalChange) return;
+
+ mCurrentBrightness = value + mMinimumBrightness;
+ updateNotification();
+
+ for (BrightnessStateChangeCallback cb : mChangeCallbacks) {
+ cb.onBrightnessLevelChanged();
+ }
+ }
+
+ /** Fetch the brightness from the system settings and update the slider */
+ private void updateSlider() {
+ mCurrentBrightness = CMSettings.System.getIntForUser(mContext.getContentResolver(),
+ CMSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
+ mMaximumBrightness, UserHandle.USER_CURRENT);
+
+ CMSettings.System.putIntForUser(mContext.getContentResolver(),
+ CMSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
+ mMaximumBrightness, UserHandle.USER_CURRENT);
+
+ mControl.setMax(mMaximumBrightness - mMinimumBrightness);
+ mControl.setValue(mCurrentBrightness - mMinimumBrightness);
+ updateNotification();
+ }
+
+ /** Fetch the brightness from the system settings and update the slider */
+ private void updateNotification() {
+ // Dampen rate of consecutive LED changes
+ if (mLedHandler.hasMessages(0)) {
+ return;
+ }
+
+ if (mNotificationAllow) {
+ mLedHandler.sendEmptyMessageDelayed(0, LED_UPDATE_DELAY_MS);
+
+ // Instead of canceling the notification, force it to update with the color.
+ // Use a white light for a better preview of the brightness.
+ int notificationColor = 0xFFFFFF | (mCurrentBrightness << 24);
+ mNotificationBuilder.setLights(notificationColor, 1, 0);
+ mNotificationManager.notify(1, mNotificationBuilder.build());
+ }
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessDialog.java b/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessDialog.java
new file mode 100644
index 0000000..82c1b3c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/settings/NotificationBrightnessDialog.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2012-2015 The CyanogenMod 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.systemui.settings;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.Window;
+import android.view.WindowManager;
+
+import com.android.systemui.R;
+
+/** A dialog that provides controls for adjusting the notifications brightness. */
+public class NotificationBrightnessDialog extends Activity {
+
+ private NotificationBrightnessController mNotificationBrightnessController;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ final Window window = getWindow();
+
+ window.setGravity(Gravity.TOP);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+ window.requestFeature(Window.FEATURE_NO_TITLE);
+
+ setContentView(R.layout.quick_settings_notification_brightness_dialog);
+
+ final ToggleSlider slider = (ToggleSlider) findViewById(R.id.notification_brightness_slider);
+ mNotificationBrightnessController = new NotificationBrightnessController(this, slider);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ mNotificationBrightnessController.registerCallbacks();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ mNotificationBrightnessController.unregisterCallbacks();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
+ || keyCode == KeyEvent.KEYCODE_VOLUME_UP
+ || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
+ finish();
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
index 7f17885..dba74de 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
@@ -34,6 +34,7 @@ import android.view.animation.LinearInterpolator;
import android.view.animation.PathInterpolator;
import com.android.systemui.R;
+import com.android.systemui.ViewInvertHelper;
/**
* Base class for both {@link ExpandableNotificationRow} and {@link NotificationOverflowContainer}
@@ -128,6 +129,8 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
private final int mNormalColor;
private final int mLowPriorityColor;
private boolean mIsBelowSpeedBump;
+ private ViewInvertHelper mBackgroundNormalInvertHelper;
+ private ViewInvertHelper mBackgroundDimmedInvertHelper;
public ActivatableNotificationView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -145,6 +148,9 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
mNormalColor = context.getColor(R.color.notification_material_background_color);
mLowPriorityColor = context.getColor(
R.color.notification_material_background_low_priority_color);
+ int roundedRectCornerRadius = getResources().getDimensionPixelSize(
+ R.dimen.notification_material_rounded_rect_radius);
+ setRoundCornerRadius(roundedRectCornerRadius); // Themes: For drop-shadow rounded corners
mTintedRippleColor = context.getColor(
R.color.notification_ripple_tinted_color);
mLowPriorityRippleColor = context.getColor(
@@ -160,6 +166,10 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
mBackgroundDimmed = (NotificationBackgroundView) findViewById(R.id.backgroundDimmed);
mBackgroundNormal.setCustomBackground(R.drawable.notification_material_bg);
mBackgroundDimmed.setCustomBackground(R.drawable.notification_material_bg_dim);
+ mBackgroundNormalInvertHelper =
+ new ViewInvertHelper(mBackgroundNormal, DARK_ANIMATION_LENGTH);
+ mBackgroundDimmedInvertHelper =
+ new ViewInvertHelper(mBackgroundDimmed, DARK_ANIMATION_LENGTH);
updateBackground();
updateBackgroundTint();
}
@@ -393,15 +403,15 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
*/
private void fadeInFromDark(long delay) {
final View background = mDimmed ? mBackgroundDimmed : mBackgroundNormal;
- background.setAlpha(0f);
- background.setPivotX(mBackgroundDimmed.getWidth() / 2f);
- background.setPivotY(getActualHeight() / 2f);
- background.setScaleX(DARK_EXIT_SCALE_START);
- background.setScaleY(DARK_EXIT_SCALE_START);
+ if (mDimmed) {
+ mBackgroundDimmedInvertHelper.fade(false, delay);
+ mBackgroundNormalInvertHelper.update(false);
+ } else {
+ mBackgroundDimmedInvertHelper.update(false);
+ mBackgroundNormalInvertHelper.fade(false, delay);
+ }
background.animate()
.alpha(1f)
- .scaleX(1f)
- .scaleY(1f)
.setDuration(DARK_ANIMATION_LENGTH)
.setStartDelay(delay)
.setInterpolator(mLinearOutSlowInInterpolator)
@@ -409,8 +419,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
@Override
public void onAnimationCancel(Animator animation) {
// Jump state if we are cancelled
- background.setScaleX(1f);
- background.setScaleY(1f);
background.setAlpha(1f);
}
})
@@ -463,9 +471,11 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
private void updateBackground() {
cancelFadeAnimations();
+ mBackgroundNormalInvertHelper.update(mDark);
+ mBackgroundDimmedInvertHelper.update(mDark);
if (mDark) {
mBackgroundDimmed.setVisibility(View.INVISIBLE);
- mBackgroundNormal.setVisibility(View.INVISIBLE);
+ mBackgroundNormal.setVisibility(View.VISIBLE);
} else if (mDimmed) {
mBackgroundDimmed.setVisibility(View.VISIBLE);
mBackgroundNormal.setVisibility(View.INVISIBLE);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 9ff86eb..e958ee1 100644..100755
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -29,6 +29,8 @@ import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
+import android.content.ContentResolver;
+import android.content.ContentValues;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
@@ -38,10 +40,13 @@ import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.content.res.ThemeConfig;
import android.database.ContentObserver;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.media.session.MediaController;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
@@ -87,6 +92,9 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.statusbar.StatusBarIconList;
+import com.android.internal.util.cm.SpamFilter;
+import com.android.internal.util.cm.SpamFilter.SpamContract.NotificationTable;
+import com.android.internal.util.cm.SpamFilter.SpamContract.PackageTable;
import com.android.internal.util.NotificationColorUtil;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -97,6 +105,7 @@ import com.android.systemui.SwipeHelper;
import com.android.systemui.SystemUI;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.recents.Recents;
+import com.android.systemui.cm.SpamMessageProvider;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.phone.NavigationBarView;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -109,6 +118,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import cyanogenmod.providers.CMSettings;
+
import static com.android.keyguard.KeyguardHostView.OnDismissAction;
public abstract class BaseStatusBar extends SystemUI implements
@@ -146,6 +157,14 @@ public abstract class BaseStatusBar extends SystemUI implements
private static final String BANNER_ACTION_SETUP =
"com.android.systemui.statusbar.banner_action_setup";
+ protected static final int SYSTEM_UI_VISIBILITY_MASK = 0xffffffff;
+
+ private static final Uri SPAM_MESSAGE_URI = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(SpamMessageProvider.AUTHORITY)
+ .appendPath("messages")
+ .build();
+
protected CommandQueue mCommandQueue;
protected IStatusBarService mBarService;
protected H mHandler = createHandler();
@@ -207,6 +226,8 @@ public abstract class BaseStatusBar extends SystemUI implements
protected WindowManager mWindowManager;
protected IWindowManager mWindowManagerService;
+ private NotificationManager mNoMan;
+
protected abstract void refreshLayout(int layoutDirection);
protected Display mDisplay;
@@ -237,6 +258,10 @@ public abstract class BaseStatusBar extends SystemUI implements
protected AssistManager mAssistManager;
+ // last theme that was applied in order to detect theme change (as opposed
+ // to some other configuration change).
+ protected ThemeConfig mCurrentTheme;
+
@Override // NotificationData.Environment
public boolean isDeviceProvisioned() {
return mDeviceProvisioned;
@@ -245,8 +270,8 @@ public abstract class BaseStatusBar extends SystemUI implements
protected final ContentObserver mSettingsObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
- final boolean provisioned = 0 != Settings.Global.getInt(
- mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0);
+ final boolean provisioned = 0 != CMSettings.Secure.getInt(
+ mContext.getContentResolver(), CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 0);
if (provisioned != mDeviceProvisioned) {
mDeviceProvisioned = provisioned;
updateNotifications();
@@ -270,6 +295,10 @@ public abstract class BaseStatusBar extends SystemUI implements
}
};
+ public RemoteViews.OnClickHandler getOnClickHandler() {
+ return mOnClickHandler;
+ }
+
private RemoteViews.OnClickHandler mOnClickHandler = new RemoteViews.OnClickHandler() {
@Override
public boolean onClickHandler(
@@ -405,9 +434,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
}
} else if (BANNER_ACTION_CANCEL.equals(action) || BANNER_ACTION_SETUP.equals(action)) {
- NotificationManager noMan = (NotificationManager)
- mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- noMan.cancel(R.id.notification_hidden);
+ mNoMan.cancel(R.id.notification_hidden);
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.SHOW_NOTE_ABOUT_NOTIFICATION_HIDING, 0);
@@ -536,6 +563,9 @@ public abstract class BaseStatusBar extends SystemUI implements
public void start() {
mWindowManager = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
+
+ mNoMan = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+
mDisplay = mWindowManager.getDefaultDisplay();
mDevicePolicyManager = (DevicePolicyManager)mContext.getSystemService(
Context.DEVICE_POLICY_SERVICE);
@@ -552,8 +582,8 @@ public abstract class BaseStatusBar extends SystemUI implements
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), true,
- mSettingsObserver);
+ CMSettings.Secure.getUriFor(CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED), false,
+ mSettingsObserver, UserHandle.USER_ALL);
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(Settings.Global.ZEN_MODE), false,
mSettingsObserver);
@@ -602,7 +632,7 @@ public abstract class BaseStatusBar extends SystemUI implements
mSettingsObserver.onChange(false); // set up
disable(switches[0], switches[6], false /* animate */);
- setSystemUiVisibility(switches[1], 0xffffffff);
+ setSystemUiVisibility(switches[1], SYSTEM_UI_VISIBILITY_MASK);
topAppWindowChanged(switches[2] != 0);
// StatusBarManagerService has a back up of IME token and it's restored here.
setImeWindowStatus(binders.get(0), switches[3], switches[4], switches[5] != 0);
@@ -701,9 +731,7 @@ public abstract class BaseStatusBar extends SystemUI implements
mContext.getString(R.string.hidden_notifications_setup),
setupIntent);
- NotificationManager noMan =
- (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- noMan.notify(R.id.notification_hidden, note.build());
+ mNoMan.notify(R.id.notification_hidden, note.build());
}
}
@@ -747,6 +775,10 @@ public abstract class BaseStatusBar extends SystemUI implements
return null;
}
+ protected MediaController getCurrentMediaController() {
+ return null;
+ }
+
@Override
public NotificationGroupManager getGroupManager() {
return mGroupManager;
@@ -915,6 +947,7 @@ public abstract class BaseStatusBar extends SystemUI implements
final View settingsButton = guts.findViewById(R.id.notification_inspect_item);
final View appSettingsButton
= guts.findViewById(R.id.notification_inspect_app_provided_settings);
+ final View filterButton = guts.findViewById(R.id.notification_inspect_filter_notification);
if (appUid >= 0) {
final int appUidF = appUid;
settingsButton.setOnClickListener(new View.OnClickListener() {
@@ -924,6 +957,26 @@ public abstract class BaseStatusBar extends SystemUI implements
}
});
+ Notification notification = sbn.getNotification();
+ filterButton.setVisibility(SpamFilter.hasFilterableContent(notification)
+ ? View.VISIBLE : View.GONE);
+ filterButton.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ AsyncTask.execute(new Runnable() {
+ @Override
+ public void run() {
+ ContentValues values = new ContentValues();
+ String message = SpamFilter.getNotificationContent(
+ sbn.getNotification());
+ values.put(NotificationTable.MESSAGE_TEXT, message);
+ values.put(PackageTable.PACKAGE_NAME, pkg);
+ mContext.getContentResolver().insert(SPAM_MESSAGE_URI, values);
+ }
+ });
+ removeNotification(sbn.getKey(), null);
+ }
+ });
+
final Intent appSettingsQueryIntent
= new Intent(Intent.ACTION_MAIN)
.addCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)
@@ -953,6 +1006,7 @@ public abstract class BaseStatusBar extends SystemUI implements
} else {
settingsButton.setVisibility(View.GONE);
appSettingsButton.setVisibility(View.GONE);
+ filterButton.setVisibility(View.GONE);
}
}
@@ -972,6 +1026,10 @@ public abstract class BaseStatusBar extends SystemUI implements
}
ExpandableNotificationRow row = (ExpandableNotificationRow) v;
+ if (v instanceof MediaExpandableNotificationRow
+ && !((MediaExpandableNotificationRow) v).inflateGuts()) {
+ return false;
+ }
bindGuts(row);
// Assume we are a status_bar_notification_row
@@ -1092,26 +1150,6 @@ public abstract class BaseStatusBar extends SystemUI implements
protected abstract View getStatusBarView();
- protected View.OnTouchListener mRecentsPreloadOnTouchListener = new View.OnTouchListener() {
- // additional optimization when we have software system buttons - start loading the recent
- // tasks on touch down
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- int action = event.getAction() & MotionEvent.ACTION_MASK;
- if (action == MotionEvent.ACTION_DOWN) {
- preloadRecents();
- } else if (action == MotionEvent.ACTION_CANCEL) {
- cancelPreloadingRecents();
- } else if (action == MotionEvent.ACTION_UP) {
- if (!v.isPressed()) {
- cancelPreloadingRecents();
- }
-
- }
- return false;
- }
- };
-
/** Proxy for RecentsComponent */
protected void showRecents(boolean triggeredFromAltTab) {
@@ -1258,6 +1296,20 @@ public abstract class BaseStatusBar extends SystemUI implements
}
protected boolean inflateViews(Entry entry, ViewGroup parent) {
+ final StatusBarNotification sbn = entry.notification;
+ String themePackageName = mCurrentTheme != null
+ ? mCurrentTheme.getOverlayPkgNameForApp(sbn.getPackageName()) : null;
+ boolean inflated = inflateViews(entry, parent, true);
+ if (!inflated && themePackageName != null
+ && !ThemeConfig.SYSTEM_DEFAULT.equals(themePackageName)) {
+ Log.w(TAG, "Couldn't expand themed RemoteViews, trying unthemed for: " + sbn);
+ inflated = inflateViews(entry, mStackScroller, false);
+ }
+
+ return inflated;
+ }
+
+ protected boolean inflateViews(Entry entry, ViewGroup parent, boolean isThemeable) {
PackageManager pmUser = getPackageManagerForUser(
entry.notification.getUser().getIdentifier());
@@ -1298,8 +1350,19 @@ public abstract class BaseStatusBar extends SystemUI implements
// create the row view
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
- row = (ExpandableNotificationRow) inflater.inflate(R.layout.status_bar_notification_row,
- parent, false);
+
+ // cannot use isMediaNotification()
+ if (sbn.getNotification().category != null
+ && sbn.getNotification().category.equals(Notification.CATEGORY_TRANSPORT)) {
+ row = (MediaExpandableNotificationRow) inflater.inflate(
+ R.layout.status_bar_notification_row_media, parent, false);
+ ((MediaExpandableNotificationRow)row).setMediaController(
+ getCurrentMediaController());
+ } else {
+ row = (ExpandableNotificationRow) inflater.inflate(
+ R.layout.status_bar_notification_row,
+ parent, false);
+ }
row.setExpansionLogger(this, entry.notification.getKey());
row.setGroupManager(mGroupManager);
}
@@ -1323,22 +1386,52 @@ public abstract class BaseStatusBar extends SystemUI implements
View contentViewLocal = null;
View bigContentViewLocal = null;
View headsUpContentViewLocal = null;
+ String themePackageName = (isThemeable && mCurrentTheme != null)
+ ? mCurrentTheme.getOverlayPkgNameForApp(sbn.getPackageName())
+ : ThemeConfig.SYSTEM_DEFAULT;
+ String statusBarThemePackageName = (isThemeable && mCurrentTheme != null)
+ ? mCurrentTheme.getOverlayForStatusBar()
+ : ThemeConfig.SYSTEM_DEFAULT;
+
try {
contentViewLocal = contentView.apply(
sbn.getPackageContext(mContext),
contentContainer,
- mOnClickHandler);
+ mOnClickHandler,
+ statusBarThemePackageName);
+
+ final int platformTemplateRootViewId =
+ com.android.internal.R.id.status_bar_latest_event_content;
+ final String inflationThemePackageName;
+ if (themePackageName != null
+ && !TextUtils.equals(themePackageName, statusBarThemePackageName)
+ && contentViewLocal.getId() != platformTemplateRootViewId) {
+ // This notification uses custom RemoteViews, and its app uses a different
+ // theme than the status bar. Re-inflate the views using the app's theme,
+ // as the RemoteViews likely will contain resources of the app, not the platform
+ inflationThemePackageName = themePackageName;
+ contentViewLocal = contentView.apply(
+ sbn.getPackageContext(mContext),
+ contentContainer,
+ mOnClickHandler,
+ inflationThemePackageName);
+ } else {
+ inflationThemePackageName = statusBarThemePackageName;
+ }
+
if (bigContentView != null) {
bigContentViewLocal = bigContentView.apply(
sbn.getPackageContext(mContext),
contentContainer,
- mOnClickHandler);
+ mOnClickHandler,
+ inflationThemePackageName);
}
if (headsUpContentView != null) {
headsUpContentViewLocal = headsUpContentView.apply(
sbn.getPackageContext(mContext),
contentContainer,
- mOnClickHandler);
+ mOnClickHandler,
+ inflationThemePackageName);
}
}
catch (RuntimeException e) {
@@ -1389,8 +1482,10 @@ public abstract class BaseStatusBar extends SystemUI implements
}
if (publicViewLocal == null) {
+ final Context layoutContext = isThemeable ? mContext
+ : maybeGetThemedContext(mContext, ThemeConfig.SYSTEM_DEFAULT);
// Add a basic notification template
- publicViewLocal = LayoutInflater.from(mContext).inflate(
+ publicViewLocal = LayoutInflater.from(layoutContext).inflate(
R.layout.notification_public_default,
contentContainerPublic, false);
publicViewLocal.setIsRootNamespace(true);
@@ -1403,49 +1498,12 @@ public abstract class BaseStatusBar extends SystemUI implements
title.setText(entry.notification.getPackageName());
}
- final ImageView icon = (ImageView) publicViewLocal.findViewById(R.id.icon);
- final ImageView profileBadge = (ImageView) publicViewLocal.findViewById(
- R.id.profile_badge_line3);
-
- final StatusBarIcon ic = new StatusBarIcon(
- entry.notification.getUser(),
- entry.notification.getPackageName(),
- entry.notification.getNotification().getSmallIcon(),
- entry.notification.getNotification().iconLevel,
- entry.notification.getNotification().number,
- entry.notification.getNotification().tickerText);
-
- Drawable iconDrawable = StatusBarIconView.getIcon(mContext, ic);
- icon.setImageDrawable(iconDrawable);
- if (entry.targetSdk >= Build.VERSION_CODES.LOLLIPOP
- || mNotificationColorUtil.isGrayscaleIcon(iconDrawable)) {
- icon.setBackgroundResource(
- com.android.internal.R.drawable.notification_icon_legacy_bg);
- int padding = mContext.getResources().getDimensionPixelSize(
- com.android.internal.R.dimen.notification_large_icon_circle_padding);
- icon.setPadding(padding, padding, padding, padding);
- if (sbn.getNotification().color != Notification.COLOR_DEFAULT) {
- icon.getBackground().setColorFilter(
- sbn.getNotification().color, PorterDuff.Mode.SRC_ATOP);
- }
- }
-
- if (profileBadge != null) {
- Drawable profileDrawable = mContext.getPackageManager().getUserBadgeForDensity(
- entry.notification.getUser(), 0);
- if (profileDrawable != null) {
- profileBadge.setImageDrawable(profileDrawable);
- profileBadge.setVisibility(View.VISIBLE);
- } else {
- profileBadge.setVisibility(View.GONE);
- }
- }
+ updatePublicViewProperties(publicViewLocal, entry);
final View privateTime = contentViewLocal.findViewById(com.android.internal.R.id.time);
final DateTimeView time = (DateTimeView) publicViewLocal.findViewById(R.id.time);
if (privateTime != null && privateTime.getVisibility() == View.VISIBLE) {
time.setVisibility(View.VISIBLE);
- time.setTime(entry.notification.getNotification().when);
}
final TextView text = (TextView) publicViewLocal.findViewById(R.id.text);
@@ -1862,7 +1920,18 @@ public abstract class BaseStatusBar extends SystemUI implements
}
private boolean shouldShowOnKeyguard(StatusBarNotification sbn) {
- return mShowLockscreenNotifications && !mNotificationData.isAmbient(sbn.getKey());
+ if (!mShowLockscreenNotifications || mNotificationData.isAmbient(sbn.getKey())) {
+ return false;
+ }
+ final int showOnKeyguard = mNoMan.getShowNotificationForPackageOnKeyguard(
+ sbn.getPackageName(), sbn.getUid());
+ boolean isKeyguardAllowedForApp =
+ (showOnKeyguard & Notification.SHOW_ALL_NOTI_ON_KEYGUARD) != 0;
+ if (isKeyguardAllowedForApp && sbn.isOngoing()) {
+ isKeyguardAllowedForApp =
+ (showOnKeyguard & Notification.SHOW_NO_ONGOING_NOTI_ON_KEYGUARD) == 0;
+ }
+ return isKeyguardAllowedForApp;
}
protected void setZenMode(int mode) {
@@ -1914,8 +1983,9 @@ public abstract class BaseStatusBar extends SystemUI implements
boolean shouldInterrupt = shouldInterrupt(entry, notification);
boolean alertAgain = alertAgain(entry, n);
+ final StatusBarNotification oldNotification = entry.notification;
entry.notification = notification;
- mGroupManager.onEntryUpdated(entry, entry.notification);
+ mGroupManager.onEntryUpdated(entry, oldNotification);
boolean updateSuccessful = false;
if (applyInPlace) {
@@ -1957,7 +2027,9 @@ public abstract class BaseStatusBar extends SystemUI implements
entry.icon.set(ic);
inflateViews(entry, mStackScroller);
}
- updateHeadsUp(key, entry, shouldInterrupt, alertAgain);
+ if (mUseHeadsUp) {
+ updateHeadsUp(key, entry, shouldInterrupt, alertAgain);
+ }
mNotificationData.updateRanking(ranking);
updateNotifications();
@@ -2051,6 +2123,7 @@ public abstract class BaseStatusBar extends SystemUI implements
final Notification publicVersion = notification.getNotification().publicVersion;
final RemoteViews publicContentView = publicVersion != null ? publicVersion.contentView
: null;
+ final View publicLocalView = entry.getPublicContentView();
// Reapply the RemoteViews
contentView.reapply(mContext, entry.getContentView(), mOnClickHandler);
@@ -2064,13 +2137,18 @@ public abstract class BaseStatusBar extends SystemUI implements
headsUpContentView.reapply(notification.getPackageContext(mContext),
headsUpChild, mOnClickHandler);
}
- if (publicContentView != null && entry.getPublicContentView() != null) {
- publicContentView.reapply(notification.getPackageContext(mContext),
- entry.getPublicContentView(), mOnClickHandler);
+ if (publicLocalView != null) {
+ if (publicContentView != null) {
+ publicContentView.reapply(notification.getPackageContext(mContext),
+ publicLocalView, mOnClickHandler);
+ } else {
+ updatePublicViewProperties(publicLocalView, entry);
+ }
}
// update the contentIntent
mNotificationClicker.register(entry.row, notification);
+ applyColorsAndBackgrounds(notification, entry);
entry.row.setStatusBarNotification(notification);
entry.row.notifyContentUpdated();
entry.row.resetHeight();
@@ -2080,6 +2158,55 @@ public abstract class BaseStatusBar extends SystemUI implements
maybeEscalateHeadsUp();
}
+ private void updatePublicViewProperties(View publicView, Entry entry) {
+ final StatusBarNotification n = entry.notification;
+ final ImageView icon = (ImageView) publicView.findViewById(R.id.icon);
+ final ImageView profileBadge =
+ (ImageView) publicView.findViewById(R.id.profile_badge_line3);
+ final DateTimeView time = (DateTimeView) publicView.findViewById(R.id.time);
+
+ if (icon != null) {
+ final StatusBarIcon ic = new StatusBarIcon(
+ n.getUser(), n.getPackageName(),
+ n.getNotification().getSmallIcon(),
+ n.getNotification().iconLevel,
+ n.getNotification().number,
+ n.getNotification().tickerText);
+
+ Drawable iconDrawable = StatusBarIconView.getIcon(mContext, ic);
+ icon.setImageDrawable(iconDrawable);
+ if (entry.targetSdk >= Build.VERSION_CODES.LOLLIPOP
+ || mNotificationColorUtil.isGrayscaleIcon(iconDrawable)) {
+ icon.setBackgroundResource(
+ com.android.internal.R.drawable.notification_icon_legacy_bg);
+ int padding = mContext.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.notification_large_icon_circle_padding);
+ icon.setPadding(padding, padding, padding, padding);
+ if (n.getNotification().color != Notification.COLOR_DEFAULT) {
+ icon.getBackground().setColorFilter(
+ n.getNotification().color, PorterDuff.Mode.SRC_ATOP);
+ }
+ } else {
+ icon.setBackgroundDrawable(null);
+ }
+ }
+
+ if (time != null) {
+ time.setTime(entry.notification.getNotification().when);
+ }
+
+ if (profileBadge != null) {
+ Drawable profileDrawable = mContext.getPackageManager().getUserBadgeForDensity(
+ n.getUser(), 0);
+ if (profileDrawable != null) {
+ profileBadge.setImageDrawable(profileDrawable);
+ profileBadge.setVisibility(View.VISIBLE);
+ } else {
+ profileBadge.setVisibility(View.GONE);
+ }
+ }
+ }
+
private boolean alertAgain(Entry oldEntry, Notification newNotification) {
return oldEntry == null || !oldEntry.hasInterrupted()
|| (newNotification.flags & Notification.FLAG_ONLY_ALERT_ONCE) == 0;
@@ -2215,4 +2342,24 @@ public abstract class BaseStatusBar extends SystemUI implements
mAssistManager.startAssist(args);
}
}
+
+ /**
+ * Returns a context with the given theme applied or the original context if we fail to get a
+ * themed context.
+ */
+ private Context maybeGetThemedContext(Context context, String themePkg) {
+ Context themedContext;
+ try {
+ ApplicationInfo ai = context.getPackageManager().getApplicationInfo(
+ context.getPackageName(), 0);
+ themedContext = context.createApplicationContext(ai, themePkg,
+ 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ themedContext = null;
+ }
+ if (themedContext == null) {
+ themedContext = context;
+ }
+ return themedContext;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index 897f5e5..83b2fb5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -78,6 +78,7 @@ public class CommandQueue extends IStatusBar.Stub {
private StatusBarIconList mList;
private Callbacks mCallbacks;
private Handler mHandler = new H();
+ private boolean mPaused = false;
/**
* These methods are called back on the main thread.
@@ -295,6 +296,14 @@ public class CommandQueue extends IStatusBar.Stub {
}
}
+ public void pause() {
+ mPaused = true;
+ }
+
+ public void resume() {
+ mPaused = false;
+ }
+
@Override
public void onCameraLaunchGestureDetected(int source) {
synchronized (mList) {
@@ -305,6 +314,10 @@ public class CommandQueue extends IStatusBar.Stub {
private final class H extends Handler {
public void handleMessage(Message msg) {
+ if (mPaused) {
+ this.sendMessageAtFrontOfQueue(Message.obtain(msg));
+ return;
+ }
final int what = msg.what & MSG_MASK;
switch (what) {
case MSG_ICON: {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CustomTileData.java b/packages/SystemUI/src/com/android/systemui/statusbar/CustomTileData.java
new file mode 100644
index 0000000..42974ba
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CustomTileData.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import cyanogenmod.app.StatusBarPanelCustomTile;
+
+import android.util.ArrayMap;
+
+/**
+ * Custom tile data to keep track of created 3rd party tiles
+ */
+public class CustomTileData {
+ public static final class Entry {
+ public final String key;
+ public final StatusBarPanelCustomTile sbc;
+
+ public Entry(StatusBarPanelCustomTile sbc) {
+ this.key = sbc.persistableKey();
+ this.sbc = sbc;
+ }
+ }
+
+ private final ArrayMap<String, Entry> mEntries = new ArrayMap<>();
+
+ public ArrayMap<String, Entry> getEntries() {
+ return mEntries;
+ }
+
+ public void add(Entry entry) {
+ mEntries.put(entry.key, entry);
+ }
+
+ public Entry remove(String key) {
+ Entry removed = mEntries.remove(key);
+ if (removed == null) return null;
+ return removed;
+ }
+
+ public Entry get(String key) {
+ return mEntries.get(key);
+ }
+
+ public Entry get(int i) {
+ return mEntries.valueAt(i);
+ }
+
+ public void clear() {
+ mEntries.clear();
+ }
+
+ public int size() {
+ return mEntries.size();
+ }
+} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index 56e9af5..be51e57 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -64,7 +64,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
private boolean mShowingPublic;
private boolean mSensitive;
private boolean mShowingPublicInitialized;
- private boolean mHideSensitiveForIntrinsicHeight;
+ protected boolean mHideSensitiveForIntrinsicHeight;
/**
* Is this notification expanded by the system. The expansion state can be overridden by the
@@ -77,10 +77,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
*/
private boolean mExpansionDisabled;
- private NotificationContentView mPublicLayout;
- private NotificationContentView mPrivateLayout;
- private int mMaxExpandHeight;
- private int mHeadsUpHeight;
+ protected NotificationContentView mPublicLayout;
+ protected NotificationContentView mPrivateLayout;
+ protected int mMaxExpandHeight;
+ protected int mHeadsUpHeight;
private View mVetoButton;
private boolean mClearable;
private ExpansionLogger mLogger;
@@ -101,7 +101,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
private ValueAnimator mChildExpandAnimator;
private float mChildrenExpandProgress;
private float mExpandButtonStart;
- private ViewStub mGutsStub;
+ protected ViewStub mGutsStub;
private boolean mHasExpandAction;
private boolean mIsSystemChildExpanded;
private boolean mIsPinned;
@@ -443,10 +443,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
mVetoButton = findViewById(R.id.veto);
}
- public void inflateGuts() {
+ public boolean inflateGuts() {
if (mGuts == null) {
mGutsStub.inflate();
}
+ return false;
}
private void updateChildrenVisibility(boolean animated) {
@@ -531,6 +532,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
public void setExpandable(boolean expandable) {
mExpandable = expandable;
+ setClipToOutline(expandable);
}
/**
@@ -644,7 +646,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
} else if (mChildrenExpanded) {
maxContentHeight = mChildrenContainer.getIntrinsicHeight();
} else {
- maxContentHeight = getMaxExpandHeight();
+ maxContentHeight = mMaxExpandHeight;
}
return maxContentHeight + getBottomDecorHeight();
}
@@ -668,7 +670,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
*
* @return whether the view state is currently expanded.
*/
- private boolean isExpanded() {
+ protected boolean isExpanded() {
return !mExpansionDisabled
&& (!hasUserChangedExpansion() && (isSystemExpanded() || isSystemChildExpanded())
|| isUserExpanded());
@@ -702,7 +704,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
return super.isChildInvisible(child) || isInvisibleChildContainer;
}
- private void updateMaxHeights() {
+ protected void updateMaxHeights() {
int intrinsicBefore = getIntrinsicHeight();
View expandedChild = mPrivateLayout.getExpandedChild();
if (expandedChild == null) {
@@ -901,10 +903,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
}
}
- public int getMaxExpandHeight() {
- return mMaxExpandHeight;
- }
-
@Override
public boolean isContentExpandable() {
NotificationContentView showingLayout = getShowingLayout();
@@ -960,7 +958,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
return mMaxExpandHeight != 0;
}
- private NotificationContentView getShowingLayout() {
+ protected NotificationContentView getShowingLayout() {
return mShowingPublic ? mPublicLayout : mPrivateLayout;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java
index a6fc4bb..cc50e49 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableOutlineView.java
@@ -34,6 +34,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
private final Rect mOutlineRect = new Rect();
protected final int mRoundedRectCornerRadius;
private boolean mCustomOutline;
+ private float mRoundCornerRadius = 0;
private float mOutlineAlpha = 1f;
public ExpandableOutlineView(Context context, AttributeSet attrs) {
@@ -44,12 +45,12 @@ public abstract class ExpandableOutlineView extends ExpandableView {
@Override
public void getOutline(View view, Outline outline) {
if (!mCustomOutline) {
- outline.setRect(0,
+ outline.setRoundRect(0,
mClipTopAmount,
getWidth(),
- Math.max(getActualHeight(), mClipTopAmount));
+ Math.max(getActualHeight(), mClipTopAmount), mRoundCornerRadius);
} else {
- outline.setRoundRect(mOutlineRect, mRoundedRectCornerRadius);
+ outline.setRoundRect(mOutlineRect, mRoundCornerRadius);
}
outline.setAlpha(mOutlineAlpha);
}
@@ -96,4 +97,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
invalidateOutline();
}
+ protected void setRoundCornerRadius(float roundRadius) {
+ mRoundCornerRadius = roundRadius;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index 71baf57..76858ab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -42,7 +42,7 @@ public abstract class ExpandableView extends FrameLayout {
private boolean mDark;
private ArrayList<View> mMatchParentViews = new ArrayList<View>();
private int mClipTopOptimization;
- private static Rect mClipRect = new Rect();
+ private Rect mClipRect = new Rect();
private boolean mWillBeGone;
private int mMinClipTopAmount = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
index 8058933..1f7e687 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
@@ -25,9 +25,13 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.CanvasProperty;
import android.graphics.Color;
+import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PorterDuff;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.support.v7.graphics.Palette;
import android.util.AttributeSet;
import android.view.DisplayListCanvas;
import android.view.RenderNodeAnimator;
@@ -45,7 +49,7 @@ import com.android.systemui.statusbar.phone.PhoneStatusBar;
* An ImageView which does not have overlapping renderings commands and therefore does not need a
* layer when alpha is changed.
*/
-public class KeyguardAffordanceView extends ImageView {
+public class KeyguardAffordanceView extends ImageView implements Palette.PaletteAsyncListener {
private static final long CIRCLE_APPEAR_DURATION = 80;
private static final long CIRCLE_DISAPPEAR_MAX_DURATION = 200;
@@ -81,6 +85,7 @@ public class KeyguardAffordanceView extends ImageView {
private boolean mSupportHardware;
private boolean mFinishing;
private boolean mLaunchingAffordance;
+ private ColorFilter mDefaultFilter;
private CanvasProperty<Float> mHwCircleRadius;
private CanvasProperty<Float> mHwCenterX;
@@ -162,21 +167,66 @@ public class KeyguardAffordanceView extends ImageView {
canvas.restore();
}
+
+ @Override
+ public void setImageDrawable(Drawable drawable) {
+ super.setImageDrawable(drawable);
+ doPaletteIfNecessary();
+ }
+
+ private void doPaletteIfNecessary() {
+ if (mDefaultFilter != null && getDrawable() instanceof BitmapDrawable) {
+ Palette.generateAsync(((BitmapDrawable) getDrawable()).getBitmap(), this);
+ }
+ }
+
+
public void setPreviewView(View v) {
View oldPreviewView = mPreviewView;
mPreviewView = v;
if (mPreviewView != null) {
mPreviewView.setVisibility(mLaunchingAffordance
? oldPreviewView.getVisibility() : INVISIBLE);
+ mPreviewView.setVisibility(GONE);
+ addOverlay();
+ }
+ }
+
+ private void addOverlay() {
+ if (mPreviewView != null) {
+ mPreviewView.getOverlay().clear();
+ if (mDefaultFilter != null) {
+ ColorDrawable d = new ColorDrawable(mCircleColor);
+ d.setBounds(0, 0, mPreviewView.getWidth(), mPreviewView.getHeight());
+ mPreviewView.getOverlay().add(d);
+ }
}
}
+ public void setDefaultFilter(ColorFilter filter) {
+ mDefaultFilter = filter;
+ mCircleColor = Color.WHITE;
+ addOverlay();
+ updateIconColor();
+ }
+
private void updateIconColor() {
+ if (getDrawable() == null) {
+ return;
+ }
Drawable drawable = getDrawable().mutate();
float alpha = mCircleRadius / mMinBackgroundRadius;
alpha = Math.min(1.0f, alpha);
int color = (int) mColorInterpolator.evaluate(alpha, mNormalColor, mInverseColor);
- drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+ if (mDefaultFilter != null) {
+ if (alpha == 0) {
+ drawable.setColorFilter(mDefaultFilter);
+ } else {
+ drawable.setColorFilter(color, PorterDuff.Mode.DST_IN);
+ }
+ } else {
+ drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+ }
}
private void drawBackgroundCircle(Canvas canvas) {
@@ -233,7 +283,7 @@ public class KeyguardAffordanceView extends ImageView {
});
animatorToRadius.start();
setImageAlpha(0, true);
- if (mPreviewView != null) {
+ if (mPreviewView != null && mPreviewView.getVisibility() == View.VISIBLE) {
mPreviewView.setVisibility(View.VISIBLE);
mPreviewClipper = ViewAnimationUtils.createCircularReveal(
mPreviewView, getLeft() + mCenterX, getTop() + mCenterY, mCircleRadius,
@@ -336,7 +386,7 @@ public class KeyguardAffordanceView extends ImageView {
invalidate();
if (nowHidden) {
if (mPreviewView != null) {
- mPreviewView.setVisibility(View.INVISIBLE);
+ mPreviewView.setVisibility(View.GONE);
}
}
} else if (!mCircleWillBeHidden) {
@@ -375,7 +425,7 @@ public class KeyguardAffordanceView extends ImageView {
mPreviewClipper.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- mPreviewView.setVisibility(View.INVISIBLE);
+ mPreviewView.setVisibility(View.GONE);
}
});
mPreviewClipper.start();
@@ -551,4 +601,10 @@ public class KeyguardAffordanceView extends ImageView {
public void setLaunchingAffordance(boolean launchingAffordance) {
mLaunchingAffordance = launchingAffordance;
}
+
+ @Override
+ public void onGenerated(Palette palette) {
+ mCircleColor = palette.getDarkVibrantColor(Color.WHITE);
+ addOverlay();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index fd84345..e4a0196 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -20,6 +20,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Color;
import android.hardware.fingerprint.FingerprintManager;
@@ -74,16 +75,20 @@ public class KeyguardIndicationController {
private int mChargingSpeed;
private int mChargingCurrent;
private String mMessageToShowOnScreenOn;
+ private IndicationDirection mIndicationDirection;
+ private boolean mScreenOnHintsEnabled;
public KeyguardIndicationController(Context context, KeyguardIndicationTextView textView,
LockIcon lockIcon) {
mContext = context;
mTextView = textView;
mLockIcon = lockIcon;
+ mIndicationDirection = IndicationDirection.NONE;
Resources res = context.getResources();
mSlowThreshold = res.getInteger(R.integer.config_chargingSlowlyThreshold);
mFastThreshold = res.getInteger(R.integer.config_chargingFastThreshold);
+ mScreenOnHintsEnabled = res.getBoolean(R.bool.config_showScreenOnLockScreenHints);
mBatteryInfo = IBatteryStats.Stub.asInterface(
@@ -121,6 +126,20 @@ public class KeyguardIndicationController {
/**
* Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
*/
+ public void showTransientIndication(int transientIndication, IndicationDirection direction) {
+ showTransientIndication(mContext.getResources().getString(transientIndication), direction);
+ }
+
+ /**
+ * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
+ */
+ public void showTransientIndication(String transientIndication, IndicationDirection direction) {
+ showTransientIndication(transientIndication, Color.WHITE, direction);
+ }
+
+ /**
+ * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
+ */
public void showTransientIndication(int transientIndication) {
showTransientIndication(mContext.getResources().getString(transientIndication));
}
@@ -129,15 +148,24 @@ public class KeyguardIndicationController {
* Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
*/
public void showTransientIndication(String transientIndication) {
- showTransientIndication(transientIndication, Color.WHITE);
+ showTransientIndication(transientIndication, Color.WHITE, IndicationDirection.NONE);
}
/**
* Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
*/
public void showTransientIndication(String transientIndication, int textColor) {
+ showTransientIndication(transientIndication, textColor, IndicationDirection.NONE);
+ }
+
+ /**
+ * Shows {@param transientIndication} until it is hidden by {@link #hideTransientIndication}.
+ */
+ public void showTransientIndication(String transientIndication, int textColor,
+ IndicationDirection direction) {
mTransientIndication = transientIndication;
mTransientTextColor = textColor;
+ mIndicationDirection = direction;
mHandler.removeMessages(MSG_HIDE_TRANSIENT);
updateIndication();
}
@@ -153,10 +181,38 @@ public class KeyguardIndicationController {
}
}
+ public void cleanup() {
+ KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitor);
+ mContext.unregisterReceiver(mReceiver);
+ }
+
private void updateIndication() {
if (mVisible) {
+ final int color = computeColor();
mTextView.switchIndication(computeIndication());
- mTextView.setTextColor(computeColor());
+ mTextView.setTextColor(color);
+ int top = 0, left = 0, right = 0;
+ // pad the bottom using ic_empty_space to keep text vertically aligned if needed
+ int bottom = mScreenOnHintsEnabled ? R.drawable.ic_empty_space : 0;
+ switch (mIndicationDirection) {
+ case UP:
+ top = R.drawable.ic_keyboard_arrow_up;
+ break;
+ case DOWN:
+ bottom = R.drawable.ic_keyboard_arrow_down;
+ break;
+ case LEFT:
+ left = R.drawable.ic_keyboard_arrow_left;
+ break;
+ case RIGHT:
+ right = R.drawable.ic_keyboard_arrow_right;
+ break;
+ case NONE:
+ default:
+ break;
+ }
+ mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
+ mTextView.setCompoundDrawableTintList(ColorStateList.valueOf(color));
}
}
@@ -171,6 +227,7 @@ public class KeyguardIndicationController {
if (!TextUtils.isEmpty(mTransientIndication)) {
return mTransientIndication;
}
+ mIndicationDirection = IndicationDirection.NONE;
if (mPowerPluggedIn) {
String indication = computePowerIndication();
if (DEBUG_CHARGING_CURRENT) {
@@ -321,4 +378,12 @@ public class KeyguardIndicationController {
StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
}
+
+ public enum IndicationDirection {
+ NONE,
+ UP,
+ DOWN,
+ LEFT,
+ RIGHT
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/MediaExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/MediaExpandableNotificationRow.java
new file mode 100644
index 0000000..c25f146
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/MediaExpandableNotificationRow.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.media.session.MediaController;
+import android.os.Build;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+
+import cyanogenmod.providers.CMSettings;
+
+public class MediaExpandableNotificationRow extends ExpandableNotificationRow {
+
+ private static final String TAG = MediaExpandableNotificationRow.class.getSimpleName();
+ public static final boolean DEBUG = false;
+
+ public static final int MAX_QUEUE_ENTRIES = 3;
+
+ private QueueView mQueue;
+
+ private int mMaxQueueHeight;
+ private int mRowHeight;
+ private int mShadowHeight;
+ private int mDisplayedRows;
+
+ private SettingsObserver mSettingsObserver;
+ private boolean mQueueEnabled;
+
+ public MediaExpandableNotificationRow(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mSettingsObserver = new SettingsObserver(new Handler());
+ mQueueEnabled = isQueueEnabled(context);
+
+ Resources res = mContext.getResources();
+
+ // 3 * queue_row_height + shadow height
+ mRowHeight = res.getDimensionPixelSize(R.dimen.queue_row_height);
+ mShadowHeight = res.getDimensionPixelSize(R.dimen.queue_top_shadow);
+ }
+
+ public boolean inflateGuts() {
+ if (getGuts() == null) {
+ mGutsStub.inflate();
+ }
+ if (!mQueueEnabled) {
+ return true;
+ }
+ return !mQueue.isUserSelectingRow();
+ }
+
+ @Override
+ protected void updateMaxHeights() {
+ // update queue height based on number of rows
+ int rows = mQueue != null ? mQueue.getCurrentQueueRowCount() : 0;
+ if (rows != mDisplayedRows) {
+ mMaxQueueHeight = rows * mRowHeight;
+ if (mMaxQueueHeight > 0) {
+ mMaxQueueHeight += mShadowHeight;
+ }
+ mDisplayedRows = rows;
+ }
+
+ int intrinsicBefore = getIntrinsicHeight();
+ View expandedChild = mPrivateLayout.getExpandedChild();
+ if (expandedChild == null) {
+ expandedChild = mPrivateLayout.getContractedChild();
+ }
+ mMaxExpandHeight = expandedChild.getHeight() + mMaxQueueHeight;
+
+ View headsUpChild = mPrivateLayout.getHeadsUpChild();
+ if (headsUpChild == null) {
+ headsUpChild = mPrivateLayout.getContractedChild();
+ }
+ mHeadsUpHeight = headsUpChild.getHeight();
+ if (intrinsicBefore != getIntrinsicHeight()) {
+ notifyHeightChanged(false /* needsAnimation */);
+ }
+ invalidateOutline();
+ }
+
+ @Override
+ public int getIntrinsicHeight() {
+ if (getGuts() != null && getGuts().isShown()) {
+ return getGuts().getActualHeight();
+ }
+ if (!mQueueEnabled) {
+ return super.getIntrinsicHeight();
+ }
+ if (mHideSensitiveForIntrinsicHeight) {
+ return getMinHeight();
+ }
+ if (isUserLocked()) {
+ return getActualHeight();
+ }
+ boolean inExpansionState = isExpanded();
+ if (!inExpansionState) {
+ // not expanded, so we return the collapsed size
+ return getMinHeight();
+ }
+ return getMaxContentHeight();
+ }
+
+ @Override
+ public int getMaxContentHeight() {
+ /**
+ * calls into NotificationContentView.getMaxHeight()
+ */
+ return getShowingLayout().getMaxHeight() + mMaxQueueHeight;
+ }
+
+ @Override
+ public void setHeightRange(int rowMinHeight, int rowMaxHeight) {
+ super.setHeightRange(rowMinHeight, rowMaxHeight);
+ mMaxViewHeight = Math.max(rowMaxHeight, getMaxContentHeight());
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mQueue = (QueueView) findViewById(R.id.queue_view);
+ mQueue.setQueueEnabled(mQueueEnabled);
+ mQueue.setVisibility(mQueueEnabled ? View.VISIBLE : View.GONE);
+ }
+
+ public void setMediaController(MediaController mediaController) {
+ if (DEBUG) Log.d(TAG, "setMediaController() called with "
+ + "mediaController = [" + mediaController + "]");
+ if (mQueue.setController(mediaController) && mQueueEnabled) {
+ notifyHeightChanged(true);
+ }
+ }
+
+ @Override
+ public boolean dispatchGenericMotionEvent(MotionEvent ev) {
+ if (filterMotionEvent(ev)) {
+ return super.dispatchGenericMotionEvent(ev);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ if (filterMotionEvent(ev)) {
+ return super.dispatchTouchEvent(ev);
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean filterMotionEvent(MotionEvent event) {
+ if (!mQueueEnabled) {
+ return super.filterMotionEvent(event);
+ }
+ if (isExpanded() && mQueue.isUserSelectingRow()
+ && event.getActionMasked() != MotionEvent.ACTION_DOWN
+ && event.getActionMasked() != MotionEvent.ACTION_UP
+ && event.getActionMasked() != MotionEvent.ACTION_CANCEL) {
+ // this is for hotspot propogation?
+ return false;
+ }
+ return super.filterMotionEvent(event);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mSettingsObserver.observe();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mSettingsObserver.unobserve();
+ }
+
+ private class SettingsObserver extends UserContentObserver {
+
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.NOTIFICATION_PLAY_QUEUE),
+ true, this);
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ protected void update() {
+ mQueueEnabled = isQueueEnabled(mContext);
+ mQueue.setQueueEnabled(mQueueEnabled);
+ mQueue.setVisibility(mQueueEnabled ? View.VISIBLE : View.GONE);
+ requestLayout();
+ }
+ }
+
+ public static boolean isQueueEnabled(Context context) {
+ return CMSettings.System.getInt(context.getContentResolver(),
+ CMSettings.System.NOTIFICATION_PLAY_QUEUE, 1) == 1;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/MediaNotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/MediaNotificationGuts.java
new file mode 100644
index 0000000..14ce8e1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/MediaNotificationGuts.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+import android.widget.TextView;
+import com.android.systemui.R;
+import cyanogenmod.providers.CMSettings;
+
+/**
+ * The guts of a media notification revealed when performing a long press.
+ */
+public class MediaNotificationGuts extends NotificationGuts {
+
+ private static final String TAG = MediaNotificationGuts.class.getSimpleName();
+
+ private ViewGroup mQueueGroup;
+ private TextView mText;
+ private Switch mSwitch;
+
+ public MediaNotificationGuts(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ setWillNotDraw(true);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ // do nothing!
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mQueueGroup = (ViewGroup) findViewById(R.id.queue_group);
+ mSwitch = (Switch) findViewById(R.id.queue_switch);
+ mSwitch.setChecked(MediaExpandableNotificationRow.isQueueEnabled(getContext()));
+ mText = (TextView) findViewById(R.id.switch_label);
+ mText.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mSwitch.toggle();
+ }
+ });
+ mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ buttonView.setChecked(isChecked);
+ CMSettings.System.putInt(getContext().getContentResolver(),
+ CMSettings.System.NOTIFICATION_PLAY_QUEUE,
+ isChecked ? 1 : 0);
+ }
+ });
+ }
+
+
+ @Override
+ public void setActualHeight(int actualHeight) {
+ super.setActualHeight(actualHeight);
+ }
+
+ @Override
+ public int getActualHeight() {
+ return getHeight();
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+
+ // Prevents this view from creating a layer when alpha is animating.
+ return false;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index aedae52..c8c318b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -191,6 +191,14 @@ public class NotificationData {
return mEntries.get(key);
}
+ public Entry get(int i) {
+ return mEntries.valueAt(i);
+ }
+
+ public RankingMap getRankingMap() {
+ return mRankingMap;
+ }
+
public void add(Entry entry, RankingMap ranking) {
mEntries.put(entry.notification.getKey(), entry);
updateRankingAndSort(ranking);
@@ -288,6 +296,14 @@ public class NotificationData {
return false;
}
+ public void clear() {
+ mEntries.clear();
+ }
+
+ public int size() {
+ return mEntries.size();
+ }
+
// Q: What kinds of notifications should show during setup?
// A: Almost none! Only things coming from the system (package is "android") that also
// have special "kind" tags marking them as relevant for setup (see below).
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
index 46e0bf8..23912c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
@@ -28,9 +28,9 @@ import com.android.systemui.R;
*/
public class NotificationGuts extends FrameLayout {
- private Drawable mBackground;
- private int mClipTopAmount;
- private int mActualHeight;
+ protected Drawable mBackground;
+ protected int mClipTopAmount;
+ protected int mActualHeight;
public NotificationGuts(Context context, AttributeSet attrs) {
super(context, attrs);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/QueueView.java b/packages/SystemUI/src/com/android/systemui/statusbar/QueueView.java
new file mode 100644
index 0000000..1da2e5e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/QueueView.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.media.MediaDescription;
+import android.media.MediaMetadata;
+import android.media.session.MediaController;
+import android.media.session.MediaSession;
+import android.media.session.PlaybackState;
+import android.os.Handler;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class QueueView extends LinearLayout implements
+ QueueViewRow.UserRowInteractionListener, AdapterView.OnItemClickListener,
+ AdapterView.OnItemLongClickListener {
+
+ private static final String TAG = QueueView.class.getSimpleName();
+ private static final boolean DEBUG = MediaExpandableNotificationRow.DEBUG;
+
+ private MediaController mController;
+
+ private List<MediaSession.QueueItem> mQueue = new ArrayList<>(getMaxQueueRowCount());
+
+ private QueueItemAdapter mAdapter;
+ private ListView mList;
+ private boolean mQueueEnabled;
+
+ long mLastUserInteraction = -1;
+
+ private MediaController.Callback mCallback = new MediaController.Callback() {
+ @Override
+ public void onPlaybackStateChanged(@NonNull PlaybackState state) {
+ super.onPlaybackStateChanged(state);
+
+ if (getParent() != null && updateQueue(mController.getQueue())) {
+ getParent().requestLayout();
+ }
+ }
+
+ @Override
+ public void onSessionDestroyed() {
+ if (DEBUG) Log.d(TAG, "onSessionDestroyed() called with " + "");
+ super.onSessionDestroyed();
+ setController(null);
+ }
+ };
+
+ public QueueView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mAdapter = new QueueItemAdapter(context);
+ setClipToOutline(false);
+ setClipToPadding(false);
+ }
+
+ public void setQueueEnabled(boolean enabled) {
+ mQueueEnabled = enabled;
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mList = (ListView) findViewById(R.id.queue_list);
+ mList.setItemsCanFocus(true);
+ mList.setDrawSelectorOnTop(true);
+ mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ mList.setAdapter(mAdapter);
+ mList.setOnItemLongClickListener(this);
+ mList.setOnItemClickListener(this);
+ mList.setVerticalScrollBarEnabled(false);
+ }
+
+ private class QueueItemAdapter extends ArrayAdapter<MediaSession.QueueItem> {
+
+ public QueueItemAdapter(Context context) {
+ super(context, R.layout.queue_adapter_row, mQueue);
+ }
+
+ @Override
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ if (position > getCount() - 1) {
+ return -1;
+ }
+ return getItem(position).getQueueId();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ final MediaSession.QueueItem queueItem = getItem(position);
+
+ if (convertView == null) {
+ convertView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.queue_adapter_row, parent, false);
+ }
+
+ QueueViewRow row = (QueueViewRow) convertView;
+ row.setHotSpotChangeListener(QueueView.this);
+
+ row.setQueueItem(queueItem);
+
+ return convertView;
+ }
+
+ @Override
+ public int getCount() {
+ if (!mQueueEnabled) {
+ return 0;
+ }
+ return super.getCount();
+ }
+ }
+
+ public boolean isUserSelectingRow() {
+ final long delta = System.currentTimeMillis() - mLastUserInteraction;
+ if (DEBUG) Log.i(TAG, "isUserSelectingRow() delta=" + delta);
+
+ if (mLastUserInteraction > 0 && delta < 500) {
+ if (DEBUG) Log.w(TAG, "user selecting row bc of hotspot change.");
+ return true;
+ }
+
+ return false;
+ }
+
+ public int getMaxQueueRowCount() {
+ return MediaExpandableNotificationRow.MAX_QUEUE_ENTRIES;
+ }
+
+ public int getCurrentQueueRowCount() {
+ if (mAdapter == null) {
+ return 0;
+ }
+ return mAdapter.getCount();
+ }
+
+ @Override
+ public void onHotSpotChanged(float x, float y) {
+ mLastUserInteraction = System.currentTimeMillis();
+ }
+
+ @Override
+ public void onDrawableStateChanged() {
+ mLastUserInteraction = System.currentTimeMillis();
+ }
+
+ /**
+ * @param queue
+ * @return whether the queue size has changed
+ */
+ public boolean updateQueue(List<MediaSession.QueueItem> queue) {
+ int queueSizeBefore = mAdapter.getCount();
+
+ mQueue.clear();
+
+ if (queue != null) {
+ // add everything *after* the currently playing item
+ boolean foundNowPlaying = false;
+
+ final PlaybackState playbackState = mController.getPlaybackState();
+
+ long activeQueueId = -1;
+ if (playbackState != null) {
+ activeQueueId = playbackState.getActiveQueueItemId();
+ }
+
+ for (int i = 0; i < queue.size() && mQueue.size() < getMaxQueueRowCount(); i++) {
+ final MediaSession.QueueItem item = queue.get(i);
+ if (!foundNowPlaying
+ && activeQueueId != -1
+ && activeQueueId == item.getQueueId()) {
+ foundNowPlaying = true;
+ continue;
+ }
+ if (foundNowPlaying) {
+ mQueue.add(item);
+ }
+ }
+
+ // add everything
+ if (!foundNowPlaying) {
+ for(int i = 0; i < getMaxQueueRowCount() && i < queue.size(); i++) {
+ mQueue.add(queue.get(i));
+ }
+ }
+ }
+ mAdapter.notifyDataSetChanged();
+
+ return mAdapter.getCount() != queueSizeBefore;
+ }
+
+ public boolean setController(MediaController controller) {
+ if (mController != null) {
+ mController.unregisterCallback(mCallback);
+ }
+ mController = controller;
+ if (mController != null) {
+ mController.registerCallback(mCallback);
+ }
+
+ return updateQueue(mController != null
+ ? mController.getQueue() : null);
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ final MediaSession.QueueItem itemAtPosition = (MediaSession.QueueItem)
+ parent.getItemAtPosition(position);
+ if (itemAtPosition != null && mController != null) {
+ mController.getTransportControls().skipToQueueItem(itemAtPosition.getQueueId());
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
+ return true;
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/QueueViewRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/QueueViewRow.java
new file mode 100644
index 0000000..dab89ff
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/QueueViewRow.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.media.MediaDescription;
+import android.media.session.MediaSession;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import com.android.systemui.R;
+
+public class QueueViewRow extends RelativeLayout {
+
+ private static final String TAG = QueueViewRow.class.getSimpleName();
+
+ private UserRowInteractionListener mHotSpotChangeListener;
+
+ private ImageView mArt;
+ private TextView mTitle;
+ private TextView mSummary;
+
+ public QueueViewRow(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mArt = (ImageView) findViewById(R.id.art);
+ mTitle = (TextView) findViewById(R.id.title);
+ mSummary = (TextView) findViewById(R.id.summary);
+ }
+
+ @Override
+ protected void drawableStateChanged() {
+ super.drawableStateChanged();
+ if (mHotSpotChangeListener != null) {
+ mHotSpotChangeListener.onDrawableStateChanged();
+ }
+ }
+
+ @Override
+ public void dispatchDrawableHotspotChanged(float x, float y) {
+ super.dispatchDrawableHotspotChanged(x, y);
+ if (mHotSpotChangeListener != null) {
+ mHotSpotChangeListener.onHotSpotChanged(x, y);
+ }
+ }
+
+ public void setHotSpotChangeListener(UserRowInteractionListener listener) {
+ mHotSpotChangeListener = listener;
+ }
+
+ public TextView getTitle() {
+ return mTitle;
+ }
+
+ public TextView getSummary() {
+ return mSummary;
+ }
+
+ public void setQueueItem(MediaSession.QueueItem queueItem) {
+ setTag(queueItem);
+
+ MediaDescription metadata = queueItem.getDescription();
+
+ final Bitmap bitmap = metadata.getIconBitmap();
+ mArt.setImageBitmap(bitmap);
+ mArt.setVisibility(bitmap != null ? View.VISIBLE : View.GONE);
+
+ mTitle.setText(metadata.getTitle());
+ mSummary.setText(metadata.getSubtitle());
+ }
+
+ /* package */ interface UserRowInteractionListener {
+ public void onHotSpotChanged(float x, float y);
+ public void onDrawableStateChanged();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index cc30882..ecaa809 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -88,8 +88,6 @@ public class SignalClusterView
private int mWideTypeIconStartPadding;
private int mSecondaryTelephonyPadding;
- private int mEndPadding;
- private int mEndPaddingNothingVisible;
private boolean mBlockAirplane;
private boolean mBlockMobile;
@@ -138,9 +136,14 @@ public class SignalClusterView
public void setSecurityController(SecurityController sc) {
if (DEBUG) Log.d(TAG, "SecurityController=" + sc);
+ if (sc == null && mSC != null) {
+ mSC.removeCallback(this);
+ }
mSC = sc;
- mSC.addCallback(this);
- mVpnVisible = mSC.isVpnEnabled();
+ if (mSC != null) {
+ mSC.addCallback(this);
+ mVpnVisible = mSC.isVpnEnabled();
+ }
}
@Override
@@ -150,10 +153,6 @@ public class SignalClusterView
R.dimen.wide_type_icon_start_padding);
mSecondaryTelephonyPadding = getContext().getResources().getDimensionPixelSize(
R.dimen.secondary_telephony_padding);
- mEndPadding = getContext().getResources().getDimensionPixelSize(
- R.dimen.signal_cluster_battery_padding);
- mEndPaddingNothingVisible = getContext().getResources().getDimensionPixelSize(
- R.dimen.no_signal_cluster_battery_padding);
}
@Override
@@ -204,8 +203,10 @@ public class SignalClusterView
post(new Runnable() {
@Override
public void run() {
- mVpnVisible = mSC.isVpnEnabled();
- apply();
+ if (mSC != null) {
+ mVpnVisible = mSC.isVpnEnabled();
+ apply();
+ }
}
});
}
@@ -223,7 +224,7 @@ public class SignalClusterView
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ String description, boolean isWide, boolean showRoamingIndicator, int subId) {
PhoneState state = getState(subId);
if (state == null) {
return;
@@ -234,6 +235,7 @@ public class SignalClusterView
state.mMobileDescription = statusIcon.contentDescription;
state.mMobileTypeDescription = typeContentDescription;
state.mIsMobileTypeIconWide = statusType != 0 && isWide;
+ state.mShowRoamingIndicator = showRoamingIndicator;
apply();
}
@@ -351,10 +353,13 @@ public class SignalClusterView
for (PhoneState state : mPhoneStates) {
if (state.mMobile != null) {
+ state.maybeStopAnimatableDrawable(state.mMobile);
state.mMobile.setImageDrawable(null);
+ state.mLastMobileStrengthId = -1;
}
if (state.mMobileType != null) {
state.mMobileType.setImageDrawable(null);
+ state.mLastMobileTypeId = -1;
}
}
@@ -447,10 +452,6 @@ public class SignalClusterView
}
mNoSimsCombo.setVisibility(mNoSimsVisible ? View.VISIBLE : View.GONE);
-
- boolean anythingVisible = mNoSimsVisible || mWifiVisible || mIsAirplaneMode
- || anyMobileVisible || mVpnVisible || mEthernetVisible;
- setPaddingRelative(0, 0, anythingVisible ? mEndPadding : mEndPaddingNothingVisible, 0);
}
public void setIconTint(int tint, float darkIntensity) {
@@ -486,11 +487,15 @@ public class SignalClusterView
private final int mSubId;
private boolean mMobileVisible = false;
private int mMobileStrengthId = 0, mMobileTypeId = 0;
+ private int mLastMobileStrengthId = -1;
+ private int mLastMobileTypeId = -1;
private boolean mIsMobileTypeIconWide;
private String mMobileDescription, mMobileTypeDescription;
+ private boolean mShowRoamingIndicator;
private ViewGroup mMobileGroup;
private ImageView mMobile, mMobileDark, mMobileType;
+ private ImageView mMobileRoaming;
public PhoneState(int subId, Context context) {
ViewGroup root = (ViewGroup) LayoutInflater.from(context)
@@ -504,32 +509,25 @@ public class SignalClusterView
mMobile = (ImageView) root.findViewById(R.id.mobile_signal);
mMobileDark = (ImageView) root.findViewById(R.id.mobile_signal_dark);
mMobileType = (ImageView) root.findViewById(R.id.mobile_type);
+ mMobileRoaming = (ImageView) root.findViewById(R.id.mobile_roaming);
}
public boolean apply(boolean isSecondaryIcon) {
if (mMobileVisible && !mIsAirplaneMode) {
- mMobile.setImageResource(mMobileStrengthId);
- Drawable mobileDrawable = mMobile.getDrawable();
- if (mobileDrawable instanceof Animatable) {
- Animatable ad = (Animatable) mobileDrawable;
- if (!ad.isRunning()) {
- ad.start();
- }
+ if (mLastMobileStrengthId != mMobileStrengthId) {
+ updateAnimatableIcon(mMobile, mMobileStrengthId);
+ updateAnimatableIcon(mMobileDark, mMobileStrengthId);
+ mLastMobileStrengthId = mMobileStrengthId;
}
- mMobileDark.setImageResource(mMobileStrengthId);
- Drawable mobileDarkDrawable = mMobileDark.getDrawable();
- if (mobileDarkDrawable instanceof Animatable) {
- Animatable ad = (Animatable) mobileDarkDrawable;
- if (!ad.isRunning()) {
- ad.start();
- }
+ if (mLastMobileTypeId != mMobileTypeId) {
+ mMobileType.setImageResource(mMobileTypeId);
+ mLastMobileTypeId = mMobileTypeId;
}
-
- mMobileType.setImageResource(mMobileTypeId);
mMobileGroup.setContentDescription(mMobileTypeDescription
+ " " + mMobileDescription);
mMobileGroup.setVisibility(View.VISIBLE);
+ mMobileRoaming.setVisibility(mShowRoamingIndicator ? View.VISIBLE : View.GONE);
} else {
mMobileGroup.setVisibility(View.GONE);
}
@@ -550,6 +548,32 @@ public class SignalClusterView
return mMobileVisible;
}
+ private void updateAnimatableIcon(ImageView view, int resId) {
+ maybeStopAnimatableDrawable(view);
+ view.setImageResource(resId);
+ maybeStartAnimatableDrawable(view);
+ }
+
+ private void maybeStopAnimatableDrawable(ImageView view) {
+ Drawable drawable = view.getDrawable();
+ if (drawable instanceof Animatable) {
+ Animatable ad = (Animatable) drawable;
+ if (ad.isRunning()) {
+ ad.stop();
+ }
+ }
+ }
+
+ private void maybeStartAnimatableDrawable(ImageView view) {
+ Drawable drawable = view.getDrawable();
+ if (drawable instanceof Animatable) {
+ Animatable ad = (Animatable) drawable;
+ if (!ad.isRunning()) {
+ ad.start();
+ }
+ }
+ }
+
public void populateAccessibilityEvent(AccessibilityEvent event) {
if (mMobileVisible && mMobileGroup != null
&& mMobileGroup.getContentDescription() != null) {
@@ -560,6 +584,7 @@ public class SignalClusterView
public void setIconTint(int tint, float darkIntensity) {
applyDarkIntensity(darkIntensity, mMobile, mMobileDark);
setTint(mMobileType, tint);
+ setTint(mMobileRoaming, tint);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StackScrollerDecorView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StackScrollerDecorView.java
index 2f66c41..9103525 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StackScrollerDecorView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StackScrollerDecorView.java
@@ -87,6 +87,7 @@ public abstract class StackScrollerDecorView extends ExpandableView {
mAnimating = true;
mContent.animate()
.alpha(endValue)
+ .withLayer()
.setInterpolator(interpolator)
.setDuration(260)
.withEndAction(new Runnable() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index baac8ac..4371cce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -19,12 +19,16 @@ package com.android.systemui.statusbar;
import android.app.Notification;
import android.content.Context;
import android.content.res.Resources;
+import android.content.res.ThemeConfig;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.graphics.Typeface;
+import android.os.Handler;
import android.os.UserHandle;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
@@ -34,8 +38,12 @@ import android.widget.ImageView;
import com.android.internal.statusbar.StatusBarIcon;
import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
import java.text.NumberFormat;
+import java.util.ArrayList;
+
+import cyanogenmod.providers.CMSettings;
public class StatusBarIconView extends AnimatedImageView {
private static final String TAG = "StatusBarIconView";
@@ -43,12 +51,14 @@ public class StatusBarIconView extends AnimatedImageView {
private StatusBarIcon mIcon;
@ViewDebug.ExportedProperty private String mSlot;
private Drawable mNumberBackground;
- private Paint mNumberPain;
+ private Paint mNumberPaint;
private int mNumberX;
private int mNumberY;
private String mNumberText;
private Notification mNotification;
private final boolean mBlocked;
+ private boolean mShowNotificationCount;
+ private GlobalSettingsObserver mObserver;
public StatusBarIconView(Context context, String slot, Notification notification) {
this(context, slot, notification, false);
@@ -60,12 +70,10 @@ public class StatusBarIconView extends AnimatedImageView {
final Resources res = context.getResources();
mBlocked = blocked;
mSlot = slot;
- mNumberPain = new Paint();
- mNumberPain.setTextAlign(Paint.Align.CENTER);
- mNumberPain.setColor(context.getColor(R.drawable.notification_number_text_color));
- mNumberPain.setAntiAlias(true);
setNotification(notification);
+ mObserver = GlobalSettingsObserver.getInstance(context);
+
// We do not resize and scale system icons (on the right), only notification icons (on the
// left).
if (notification != null) {
@@ -81,6 +89,8 @@ public class StatusBarIconView extends AnimatedImageView {
public void setNotification(Notification notification) {
mNotification = notification;
+ mShowNotificationCount = CMSettings.System.getIntForUser(mContext.getContentResolver(),
+ CMSettings.System.STATUS_BAR_NOTIF_COUNT, 0, UserHandle.USER_CURRENT) == 1;
setContentDescription(notification);
}
@@ -124,6 +134,10 @@ public class StatusBarIconView extends AnimatedImageView {
* Returns whether the set succeeded.
*/
public boolean set(StatusBarIcon icon) {
+ return set(icon, false);
+ }
+
+ private boolean set(StatusBarIcon icon, boolean force) {
final boolean iconEquals = mIcon != null && equalIcons(mIcon.icon, icon.icon);
final boolean levelEquals = iconEquals
&& mIcon.iconLevel == icon.iconLevel;
@@ -133,17 +147,25 @@ public class StatusBarIconView extends AnimatedImageView {
&& mIcon.number == icon.number;
mIcon = icon.clone();
setContentDescription(icon.contentDescription);
- if (!iconEquals) {
+ if (!iconEquals || force) {
if (!updateDrawable(false /* no clear */)) return false;
}
- if (!levelEquals) {
+ if (!levelEquals || force) {
setImageLevel(icon.iconLevel);
}
- if (!numberEquals) {
- if (icon.number > 0 && getContext().getResources().getBoolean(
- R.bool.config_statusBarShowNumber)) {
+ if (!numberEquals || force) {
+ if (icon.number > 1 && mShowNotificationCount) {
if (mNumberBackground == null) {
+ final Resources res = mContext.getResources();
+ final float densityMultiplier = res.getDisplayMetrics().density;
+ final float scaledPx = 8 * densityMultiplier;
+ mNumberPaint = new Paint();
+ mNumberPaint.setTextAlign(Paint.Align.CENTER);
+ mNumberPaint.setColor(res.getColor(R.drawable.notification_number_text_color));
+ mNumberPaint.setAntiAlias(true);
+ mNumberPaint.setTypeface(Typeface.DEFAULT_BOLD);
+ mNumberPaint.setTextSize(scaledPx);
mNumberBackground = getContext().getResources().getDrawable(
R.drawable.ic_notification_overlay);
}
@@ -151,10 +173,11 @@ public class StatusBarIconView extends AnimatedImageView {
} else {
mNumberBackground = null;
mNumberText = null;
+ mNumberPaint = null;
}
invalidate();
}
- if (!visibilityEquals) {
+ if (!visibilityEquals || force) {
setVisibility(icon.visible && !mBlocked ? VISIBLE : GONE);
}
return true;
@@ -211,6 +234,10 @@ public class StatusBarIconView extends AnimatedImageView {
}
}
+ public String getStatusBarSlot() {
+ return mSlot;
+ }
+
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
@@ -231,7 +258,25 @@ public class StatusBarIconView extends AnimatedImageView {
if (mNumberBackground != null) {
mNumberBackground.draw(canvas);
- canvas.drawText(mNumberText, mNumberX, mNumberY, mNumberPain);
+ canvas.drawText(mNumberText, mNumberX, mNumberY, mNumberPaint);
+ }
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ if (mObserver != null) {
+ mObserver.attach(this);
+ }
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ if (mObserver != null) {
+ mObserver.detach(this);
}
}
@@ -248,7 +293,7 @@ public class StatusBarIconView extends AnimatedImageView {
android.R.integer.status_bar_notification_info_maxnum);
if (mIcon.number > tooBig) {
str = getContext().getResources().getString(
- android.R.string.status_bar_notification_info_overflow);
+ R.string.status_bar_notification_info_overflow);
} else {
NumberFormat f = NumberFormat.getIntegerInstance();
str = f.format(mIcon.number);
@@ -258,7 +303,7 @@ public class StatusBarIconView extends AnimatedImageView {
final int w = getWidth();
final int h = getHeight();
final Rect r = new Rect();
- mNumberPain.getTextBounds(str, 0, str.length(), r);
+ mNumberPaint.getTextBounds(str, 0, str.length(), r);
final int tw = r.right - r.left;
final int th = r.bottom - r.top;
mNumberBackground.getPadding(r);
@@ -292,4 +337,63 @@ public class StatusBarIconView extends AnimatedImageView {
public String getSlot() {
return mSlot;
}
+
+ static class GlobalSettingsObserver extends UserContentObserver {
+ private static GlobalSettingsObserver sInstance;
+ private ArrayList<StatusBarIconView> mIconViews = new ArrayList<StatusBarIconView>();
+ private Context mContext;
+
+ GlobalSettingsObserver(Handler handler, Context context) {
+ super(handler);
+ mContext = context.getApplicationContext();
+ }
+
+ static GlobalSettingsObserver getInstance(Context context) {
+ if (sInstance == null) {
+ sInstance = new GlobalSettingsObserver(new Handler(), context);
+ }
+ return sInstance;
+ }
+
+ void attach(StatusBarIconView sbiv) {
+ if (mIconViews.isEmpty()) {
+ observe();
+ }
+ mIconViews.add(sbiv);
+ }
+
+ void detach(StatusBarIconView sbiv) {
+ mIconViews.remove(sbiv);
+ if (mIconViews.isEmpty()) {
+ unobserve();
+ }
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.STATUS_BAR_NOTIF_COUNT),
+ false, this);
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+ boolean showIconCount = CMSettings.System.getIntForUser(mContext.getContentResolver(),
+ CMSettings.System.STATUS_BAR_NOTIF_COUNT, 0, UserHandle.USER_CURRENT) == 1;
+ for (StatusBarIconView sbiv : mIconViews) {
+ sbiv.mShowNotificationCount = showIconCount;
+ sbiv.set(sbiv.mIcon, true);
+ }
+ }
+ }
}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/VisualizerView.java b/packages/SystemUI/src/com/android/systemui/statusbar/VisualizerView.java
new file mode 100644
index 0000000..538140c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/VisualizerView.java
@@ -0,0 +1,395 @@
+/*
+* Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar;
+
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.media.audiofx.Visualizer;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.support.v7.graphics.Palette;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+
+import com.android.systemui.cm.UserContentObserver;
+import cyanogenmod.providers.CMSettings;
+
+public class VisualizerView extends View implements Palette.PaletteAsyncListener {
+
+ private static final String TAG = VisualizerView.class.getSimpleName();
+ private static final boolean DEBUG = false;
+
+ private Paint mPaint;
+ private Visualizer mVisualizer;
+ private ObjectAnimator mVisualizerColorAnimator;
+
+ private ValueAnimator[] mValueAnimators;
+ private float[] mFFTPoints;
+
+ private int mStatusBarState;
+ private boolean mVisualizerEnabled = false;
+ private boolean mVisible = false;
+ private boolean mPlaying = false;
+ private boolean mPowerSaveMode = false;
+ private boolean mDisplaying = false; // the state we're animating to
+ private boolean mDozing = false;
+ private boolean mOccluded = false;
+
+ private int mColor;
+ private Bitmap mCurrentBitmap;
+
+ private SettingsObserver mObserver;
+
+ private Visualizer.OnDataCaptureListener mVisualizerListener =
+ new Visualizer.OnDataCaptureListener() {
+ byte rfk, ifk;
+ int dbValue;
+ float magnitude;
+
+ @Override
+ public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
+ }
+
+ @Override
+ public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {
+ for (int i = 0; i < 32; i++) {
+ mValueAnimators[i].cancel();
+ rfk = fft[i * 2 + 2];
+ ifk = fft[i * 2 + 3];
+ magnitude = rfk * rfk + ifk * ifk;
+ dbValue = magnitude > 0 ? (int) (10 * Math.log10(magnitude)) : 0;
+
+ mValueAnimators[i].setFloatValues(mFFTPoints[i * 4 + 1],
+ mFFTPoints[3] - (dbValue * 16f));
+ mValueAnimators[i].start();
+ }
+ }
+ };
+
+ private final Runnable mLinkVisualizer = new Runnable() {
+ @Override
+ public void run() {
+ if (DEBUG) {
+ Log.w(TAG, "+++ mLinkVisualizer run()");
+ }
+
+ try {
+ mVisualizer = new Visualizer(0);
+ } catch (Exception e) {
+ Log.e(TAG, "error initializing visualizer", e);
+ return;
+ }
+
+ mVisualizer.setEnabled(false);
+ mVisualizer.setCaptureSize(66);
+ mVisualizer.setDataCaptureListener(mVisualizerListener,Visualizer.getMaxCaptureRate(),
+ false, true);
+ mVisualizer.setEnabled(true);
+
+ if (DEBUG) {
+ Log.w(TAG, "--- mLinkVisualizer run()");
+ }
+ }
+ };
+
+ private final Runnable mAsyncUnlinkVisualizer = new Runnable() {
+ @Override
+ public void run() {
+ AsyncTask.execute(mUnlinkVisualizer);
+ }
+ };
+
+ private final Runnable mUnlinkVisualizer = new Runnable() {
+ @Override
+ public void run() {
+ if (DEBUG) {
+ Log.w(TAG, "+++ mUnlinkVisualizer run(), mVisualizer: " + mVisualizer);
+ }
+ if (mVisualizer != null) {
+ mVisualizer.setEnabled(false);
+ mVisualizer.release();
+ mVisualizer = null;
+ }
+ if (DEBUG) {
+ Log.w(TAG, "--- mUninkVisualizer run()");
+ }
+ }
+ };
+
+ public VisualizerView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ mColor = Color.TRANSPARENT;
+
+ mPaint = new Paint();
+ mPaint.setAntiAlias(true);
+ mPaint.setColor(mColor);
+
+ mFFTPoints = new float[128];
+ mValueAnimators = new ValueAnimator[32];
+ for (int i = 0; i < 32; i++) {
+ final int j = i * 4 + 1;
+ mValueAnimators[i] = new ValueAnimator();
+ mValueAnimators[i].setDuration(128);
+ mValueAnimators[i].addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ mFFTPoints[j] = (float) animation.getAnimatedValue();
+ postInvalidate();
+ }
+ });
+ }
+ }
+
+ public VisualizerView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public VisualizerView(Context context) {
+ this(context, null, 0);
+ }
+
+ private void updateViewVisibility() {
+ final int curVis = getVisibility();
+ final int newVis = mStatusBarState != StatusBarState.SHADE
+ && mVisualizerEnabled ? View.VISIBLE : View.GONE;
+ if (curVis != newVis) {
+ setVisibility(newVis);
+ checkStateChanged();
+ }
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mObserver = new SettingsObserver(new Handler());
+ mObserver.observe();
+ mObserver.update();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mObserver.unobserve();
+ mObserver = null;
+ mCurrentBitmap = null;
+ }
+
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+
+ float barUnit = w / 32f;
+ float barWidth = barUnit * 8f / 9f;
+ barUnit = barWidth + (barUnit - barWidth) * 32f / 31f;
+ mPaint.setStrokeWidth(barWidth);
+
+ for (int i = 0; i < 32; i++) {
+ mFFTPoints[i * 4] = mFFTPoints[i * 4 + 2] = i * barUnit + (barWidth / 2);
+ mFFTPoints[i * 4 + 1] = h;
+ mFFTPoints[i * 4 + 3] = h;
+ }
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return false;
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ if (mVisualizer != null) {
+ canvas.drawLines(mFFTPoints, mPaint);
+ }
+ }
+
+ public void setVisible(boolean visible) {
+ if (mVisible != visible) {
+ if (DEBUG) {
+ Log.i(TAG, "setVisible() called with visible = [" + visible + "]");
+ }
+ mVisible = visible;
+ checkStateChanged();
+ }
+ }
+
+ public void setDozing(boolean dozing) {
+ if (mDozing != dozing) {
+ if (DEBUG) {
+ Log.i(TAG, "setDozing() called with dozing = [" + dozing + "]");
+ }
+ mDozing = dozing;
+ checkStateChanged();
+ }
+ }
+
+ public void setPlaying(boolean playing) {
+ if (mPlaying != playing) {
+ if (DEBUG) {
+ Log.i(TAG, "setPlaying() called with playing = [" + playing + "]");
+ }
+ mPlaying = playing;
+ checkStateChanged();
+ }
+ }
+
+ public void setPowerSaveMode(boolean powerSaveMode) {
+ if (mPowerSaveMode != powerSaveMode) {
+ if (DEBUG) {
+ Log.i(TAG, "setPowerSaveMode() called with powerSaveMode = [" + powerSaveMode + "]");
+ }
+ mPowerSaveMode = powerSaveMode;
+ checkStateChanged();
+ }
+ }
+
+ public void setOccluded(boolean occluded) {
+ if (mOccluded != occluded) {
+ if (DEBUG) {
+ Log.i(TAG, "setOccluded() called with occluded = [" + occluded + "]");
+ }
+ mOccluded = occluded;
+ checkStateChanged();
+ }
+ }
+
+ public void setStatusBarState(int statusBarState) {
+ if (mStatusBarState != statusBarState) {
+ mStatusBarState = statusBarState;
+ updateViewVisibility();
+ }
+ }
+
+ public void setBitmap(Bitmap bitmap) {
+ if (mCurrentBitmap == bitmap) {
+ return;
+ }
+ mCurrentBitmap = bitmap;
+ if (bitmap != null) {
+ Palette.generateAsync(bitmap, this);
+ } else {
+ setColor(Color.TRANSPARENT);
+ }
+ }
+
+ @Override
+ public void onGenerated(Palette palette) {
+ int color = Color.TRANSPARENT;
+
+ color = palette.getVibrantColor(color);
+ if (color == Color.TRANSPARENT) {
+ color = palette.getLightVibrantColor(color);
+ if (color == Color.TRANSPARENT) {
+ color = palette.getDarkVibrantColor(color);
+ }
+ }
+
+ setColor(color);
+ }
+
+ private void setColor(int color) {
+ if (color == Color.TRANSPARENT) {
+ color = Color.WHITE;
+ }
+
+ color = Color.argb(140, Color.red(color), Color.green(color), Color.blue(color));
+
+ if (mColor != color) {
+ mColor = color;
+
+ if (mVisualizer != null) {
+ if (mVisualizerColorAnimator != null) {
+ mVisualizerColorAnimator.cancel();
+ }
+
+ mVisualizerColorAnimator = ObjectAnimator.ofArgb(mPaint, "color",
+ mPaint.getColor(), mColor);
+ mVisualizerColorAnimator.setStartDelay(600);
+ mVisualizerColorAnimator.setDuration(1200);
+ mVisualizerColorAnimator.start();
+ } else {
+ mPaint.setColor(mColor);
+ }
+ }
+ }
+
+ private void checkStateChanged() {
+ if (getVisibility() == View.VISIBLE && mVisible && mPlaying && !mDozing && !mPowerSaveMode
+ && mVisualizerEnabled && !mOccluded) {
+ if (!mDisplaying) {
+ mDisplaying = true;
+ AsyncTask.execute(mLinkVisualizer);
+ animate()
+ .alpha(1f)
+ .withEndAction(null)
+ .setDuration(800);
+ }
+ } else {
+ if (mDisplaying) {
+ mDisplaying = false;
+ if (mVisible) {
+ animate()
+ .alpha(0f)
+ .withEndAction(mAsyncUnlinkVisualizer)
+ .setDuration(600);
+ } else {
+ animate().
+ alpha(0f)
+ .withEndAction(mAsyncUnlinkVisualizer)
+ .setDuration(0);
+ }
+ }
+ }
+ }
+
+ private class SettingsObserver extends UserContentObserver {
+
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void update() {
+ mVisualizerEnabled = CMSettings.Secure.getInt(getContext().getContentResolver(),
+ CMSettings.Secure.LOCKSCREEN_VISUALIZER_ENABLED, 1) != 0;
+ checkStateChanged();
+ updateViewVisibility();
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ getContext().getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.LOCKSCREEN_VISUALIZER_ENABLED),
+ false, this, UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ getContext().getContentResolver().unregisterContentObserver(this);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BackButtonDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BackButtonDrawable.java
new file mode 100644
index 0000000..c76b5d3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BackButtonDrawable.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.statusbar.phone;
+
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
+import android.annotation.NonNull;
+import android.app.ActivityManager;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.util.FloatProperty;
+import android.util.Property;
+
+public class BackButtonDrawable extends Drawable {
+ private final Drawable mWrappedDrawable;
+ private float mRotation;
+ private Animator mCurrentAnimator;
+
+ private static final int ANIMATION_DURATION = 200;
+ public static final Property<BackButtonDrawable, Float> ROTATION
+ = new FloatProperty<BackButtonDrawable>("rotation") {
+ @Override
+ public void setValue(BackButtonDrawable object, float value) {
+ object.setRotation(value);
+ }
+
+ @Override
+ public Float get(BackButtonDrawable object) {
+ return object.getRotation();
+ }
+ };
+
+ public BackButtonDrawable(Drawable wrappedDrawable) {
+ mWrappedDrawable = wrappedDrawable;
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ final Rect bounds = mWrappedDrawable.getBounds();
+ final int boundsCenterX = bounds.width() / 2;
+ final int boundsCenterY = bounds.height() / 2;
+
+ canvas.translate(boundsCenterX, boundsCenterY);
+ canvas.rotate(mRotation);
+ canvas.translate(- boundsCenterX, - boundsCenterY);
+
+ mWrappedDrawable.draw(canvas);
+ }
+
+ @Override
+ public void setBounds(Rect bounds) {
+ mWrappedDrawable.setBounds(bounds);
+ }
+
+ @Override
+ public void setBounds(int left, int top, int right, int bottom) {
+ mWrappedDrawable.setBounds(left, top, right, bottom);
+ }
+
+ @Override
+ protected void onBoundsChange(Rect bounds) {
+ mWrappedDrawable.setBounds(bounds);
+ }
+
+ @Override
+ public void setAlpha(int alpha) {
+ mWrappedDrawable.setAlpha(alpha);
+ if (mCurrentAnimator != null) {
+ mCurrentAnimator.end();
+ }
+ }
+
+ @Override
+ public int getAlpha() {
+ return mWrappedDrawable.getAlpha();
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter cf) {
+ }
+
+ @Override
+ public int getOpacity() {
+ return mWrappedDrawable.getOpacity();
+ }
+
+ @Override
+ public int getIntrinsicWidth() {
+ return mWrappedDrawable.getIntrinsicWidth();
+ }
+
+ @Override
+ public int getIntrinsicHeight() {
+ return mWrappedDrawable.getIntrinsicHeight();
+ }
+
+ public void setRotation(float rotation) {
+ mRotation = rotation;
+ invalidateSelf();
+ }
+
+ public float getRotation() {
+ return mRotation;
+ }
+
+ public void setImeVisible(boolean ime) {
+ if (mCurrentAnimator != null) {
+ mCurrentAnimator.cancel();
+ }
+
+ final float nextRotation = ime ? - 90 : 0;
+ if (mRotation == nextRotation) {
+ return;
+ }
+
+ if (isVisible() && ActivityManager.isHighEndGfx()) {
+ mCurrentAnimator = ObjectAnimator.ofFloat(this, ROTATION, nextRotation)
+ .setDuration(ANIMATION_DURATION);
+ mCurrentAnimator.start();
+ } else {
+ setRotation(nextRotation);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java
index 1601b83..093d18c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java
@@ -57,15 +57,28 @@ public class BarTransitions {
private int mMode;
- public BarTransitions(View view, int gradientResourceId) {
+ public BarTransitions(View view, int gradientResourceId, int opaqueColorResourceId,
+ int semiTransparentColorResourceId, int transparentColorResourceId,
+ int warningColorResourceId) {
mTag = "BarTransitions." + view.getClass().getSimpleName();
mView = view;
- mBarBackground = new BarBackgroundDrawable(mView.getContext(), gradientResourceId);
+ mBarBackground = new BarBackgroundDrawable(mView.getContext(), gradientResourceId,
+ opaqueColorResourceId, semiTransparentColorResourceId,
+ transparentColorResourceId, warningColorResourceId);
if (HIGH_END) {
mView.setBackground(mBarBackground);
}
}
+ protected void setGradientResourceId(int gradientResourceId) {
+ mBarBackground.setGradientResourceId(mView.getContext().getResources(),
+ gradientResourceId);
+ }
+
+ public void updateResources(Resources res) {
+ mBarBackground.updateResources(res);
+ }
+
public int getMode() {
return mMode;
}
@@ -119,11 +132,11 @@ public class BarTransitions {
}
private static class BarBackgroundDrawable extends Drawable {
- private final int mOpaque;
- private final int mSemiTransparent;
- private final int mTransparent;
- private final int mWarning;
- private final Drawable mGradient;
+ private int mOpaque;
+ private int mSemiTransparent;
+ private int mTransparent;
+ private int mWarning;
+ private Drawable mGradient;
private final TimeInterpolator mInterpolator;
private int mMode = -1;
@@ -137,7 +150,15 @@ public class BarTransitions {
private int mGradientAlphaStart;
private int mColorStart;
- public BarBackgroundDrawable(Context context, int gradientResourceId) {
+ private int mGradientResourceId;
+ private final int mOpaqueColorResourceId;
+ private final int mSemiTransparentColorResourceId;
+ private final int mTransparentColorResourceId;
+ private final int mWarningColorResourceId;
+
+ public BarBackgroundDrawable(Context context, int gradientResourceId,
+ int opaqueColorResourceId, int semiTransparentColorResourceId,
+ int transparentColorResourceId, int warningColorResourceId) {
final Resources res = context.getResources();
if (DEBUG_COLORS) {
mOpaque = 0xff0000ff;
@@ -145,13 +166,36 @@ public class BarTransitions {
mTransparent = 0x2f0000ff;
mWarning = 0xffff0000;
} else {
- mOpaque = context.getColor(R.color.system_bar_background_opaque);
- mSemiTransparent = context.getColor(R.color.system_bar_background_semi_transparent);
- mTransparent = context.getColor(R.color.system_bar_background_transparent);
- mWarning = context.getColor(com.android.internal.R.color.battery_saver_mode_color);
+ mOpaque = res.getColor(R.color.system_bar_background_opaque);
+ mSemiTransparent = res.getColor(R.color.system_bar_background_semi_transparent);
+ mTransparent = res.getColor(transparentColorResourceId);
+ mWarning = res.getColor(warningColorResourceId);
}
mGradient = context.getDrawable(gradientResourceId);
mInterpolator = new LinearInterpolator();
+ mGradientResourceId = gradientResourceId;
+ mOpaqueColorResourceId = opaqueColorResourceId;
+ mSemiTransparentColorResourceId = semiTransparentColorResourceId;
+ mTransparentColorResourceId = transparentColorResourceId;
+ mWarningColorResourceId = warningColorResourceId;
+ }
+
+ public void setGradientResourceId(Resources res, int gradientResourceId) {
+ mGradient = res.getDrawable(gradientResourceId);
+ mGradientResourceId = gradientResourceId;
+ }
+
+ public void updateResources(Resources res) {
+ mOpaque = res.getColor(mOpaqueColorResourceId);
+ mSemiTransparent = res.getColor(mSemiTransparentColorResourceId);
+ mTransparent = res.getColor(mTransparentColorResourceId);
+ mWarning = res.getColor(mWarningColorResourceId);
+ // Retrieve the current bounds for mGradient so they can be set to
+ // the new drawable being loaded, otherwise the bounds will be (0, 0, 0, 0)
+ // and the gradient will not be drawn.
+ Rect bounds = mGradient.getBounds();
+ mGradient = res.getDrawable(mGradientResourceId);
+ mGradient.setBounds(bounds);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BlurLayer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BlurLayer.java
new file mode 100644
index 0000000..a966409
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BlurLayer.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.android.systemui.statusbar.phone;
+
+import android.graphics.PixelFormat;
+import android.util.Slog;
+import android.view.SurfaceControl;
+import android.view.SurfaceSession;
+
+import java.io.PrintWriter;
+
+public class BlurLayer {
+ private static final String TAG = "BlurLayer";
+ private static final boolean DEBUG = true;
+ private SurfaceControl mBlurSurface;
+ private int mLayer = -1;
+ private float mAlpha = 0;
+ private float mBlur = 0;
+ private int mX, mY;
+ private int mW, mH;
+ private boolean mIsShow;
+
+ public BlurLayer(SurfaceSession mFxSession, int w, int h, String tag) {
+ this(mFxSession, 0, 0, w, h, tag);
+ }
+
+ public BlurLayer(SurfaceSession mFxSession, int x, int y, int w, int h, String tag) {
+ mX = x;
+ mY = y;
+ mW = w;
+ mH = h;
+ mIsShow = false;
+
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface = new SurfaceControl(mFxSession, TAG+"_"+tag, 16, 16, PixelFormat.OPAQUE,
+ SurfaceControl.FX_SURFACE_BLUR | SurfaceControl.HIDDEN);
+ mBlurSurface.setLayerStack(0);
+ mBlurSurface.setPosition(mX, mY);
+ mBlurSurface.setSize(mW, mH);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception creating BlurLayer surface", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+
+ public void setSize(int w, int h) {
+ if (mBlurSurface != null && (mW != w || mH != h) ) {
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface.setSize(w, h);
+ mW = w;
+ mH = h;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting setSize immediately", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception setSize", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void setPosition(int x, int y) {
+ if (mBlurSurface != null && (mX != x || mY != y) ) {
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface.setPosition(x, y);
+ mX = x;
+ mY = y;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting setPosition immediately", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception setPosition", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void setLayer(int layer) {
+ if (mBlurSurface != null && mLayer != layer) {
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface.setLayer(layer);
+ mLayer = layer;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting setLayer immediately", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception setLayer", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void setAlpha(float alpha){
+ if(mBlurSurface != null && mAlpha != alpha){
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface.setAlpha(alpha);
+ mAlpha = alpha;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting alpha immediately", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception setAlpha", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void setBlur(float blur){
+ if(mBlurSurface != null && mBlur != blur ){
+ SurfaceControl.openTransaction();
+ try {
+ mBlurSurface.setBlur(blur);
+ mBlur = blur;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting blur immediately", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception setBlur", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void show() {
+ if(mBlurSurface != null && !mIsShow ){
+ try {
+ mBlurSurface.show();
+ mIsShow = true;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure show()", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception show()", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void hide(){
+ if(mBlurSurface != null && mIsShow ){
+ try {
+ mBlurSurface.hide();
+ mIsShow = false;
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure hide()", e);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception hide()", e);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ }
+
+ public void destroySurface() {
+ if (DEBUG) Slog.v(TAG, "destroySurface.");
+ if (mBlurSurface != null) {
+ mBlurSurface.destroy();
+ mBlurSurface = null;
+ }
+ }
+
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ClockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ClockController.java
new file mode 100644
index 0000000..84eeb31
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ClockController.java
@@ -0,0 +1,149 @@
+package com.android.systemui.statusbar.phone;
+
+import com.android.systemui.FontSizeUtils;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.graphics.Color;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.view.View;
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.statusbar.policy.Clock;
+
+import cyanogenmod.providers.CMSettings;
+
+/**
+ * To control your...clock
+ */
+public class ClockController {
+
+ public static final int STYLE_HIDE_CLOCK = 0;
+ public static final int STYLE_CLOCK_RIGHT = 1;
+ public static final int STYLE_CLOCK_CENTER = 2;
+ public static final int STYLE_CLOCK_LEFT = 3;
+
+ private final IconMerger mNotificationIcons;
+ private final Context mContext;
+ private final SettingsObserver mSettingsObserver;
+ private Clock mRightClock, mCenterClock, mLeftClock, mActiveClock;
+
+ private int mClockLocation;
+ private int mAmPmStyle;
+ private int mIconTint = Color.WHITE;
+
+ class SettingsObserver extends UserContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_AM_PM), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_CLOCK), false, this, UserHandle.USER_ALL);
+ updateSettings();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+ updateSettings();
+ }
+ }
+
+ public ClockController(View statusBar, IconMerger notificationIcons, Handler handler) {
+ mRightClock = (Clock) statusBar.findViewById(R.id.clock);
+ mCenterClock = (Clock) statusBar.findViewById(R.id.center_clock);
+ mLeftClock = (Clock) statusBar.findViewById(R.id.left_clock);
+ mNotificationIcons = notificationIcons;
+ mContext = statusBar.getContext();
+
+ mActiveClock = mRightClock;
+ mSettingsObserver = new SettingsObserver(handler);
+ mSettingsObserver.observe();
+ }
+
+ private Clock getClockForCurrentLocation() {
+ Clock clockForAlignment;
+ switch (mClockLocation) {
+ case STYLE_CLOCK_CENTER:
+ clockForAlignment = mCenterClock;
+ break;
+ case STYLE_CLOCK_LEFT:
+ clockForAlignment = mLeftClock;
+ break;
+ case STYLE_CLOCK_RIGHT:
+ case STYLE_HIDE_CLOCK:
+ default:
+ clockForAlignment = mRightClock;
+ break;
+ }
+ return clockForAlignment;
+ }
+
+ private void updateActiveClock() {
+ mActiveClock.setVisibility(View.GONE);
+ if (mClockLocation == STYLE_HIDE_CLOCK) {
+ return;
+ }
+
+ mActiveClock = getClockForCurrentLocation();
+ mActiveClock.setVisibility(View.VISIBLE);
+ mActiveClock.setAmPmStyle(mAmPmStyle);
+
+ setClockAndDateStatus();
+ setTextColor(mIconTint);
+ updateFontSize();
+ }
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mAmPmStyle = CMSettings.System.getIntForUser(resolver,
+ CMSettings.System.STATUS_BAR_AM_PM, Clock.AM_PM_STYLE_GONE,
+ UserHandle.USER_CURRENT);
+ mClockLocation = CMSettings.System.getIntForUser(
+ resolver, CMSettings.System.STATUS_BAR_CLOCK, STYLE_CLOCK_RIGHT,
+ UserHandle.USER_CURRENT);
+ updateActiveClock();
+ }
+
+ private void setClockAndDateStatus() {
+ if (mNotificationIcons != null) {
+ mNotificationIcons.setClockAndDateStatus(mClockLocation);
+ }
+ }
+
+ public void setVisibility(boolean visible) {
+ if (mActiveClock != null) {
+ mActiveClock.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ public void setTextColor(int iconTint) {
+ mIconTint = iconTint;
+ if (mActiveClock != null) {
+ mActiveClock.setTextColor(iconTint);
+ }
+ }
+
+ public void updateFontSize() {
+ if (mActiveClock != null) {
+ FontSizeUtils.updateFontSize(mActiveClock, R.dimen.status_bar_clock_size);
+ }
+ }
+
+ public void cleanup() {
+ mSettingsObserver.unobserve();
+ }
+} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 1d890d0..9897098 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -22,6 +22,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.MathUtils;
+import com.android.systemui.doze.DozeLog;
import com.android.systemui.R;
import java.io.PrintWriter;
@@ -46,17 +47,20 @@ public class DozeParameters {
public void dump(PrintWriter pw) {
pw.println(" DozeParameters:");
pw.print(" getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
- pw.print(" getPulseDuration(pickup=false): "); pw.println(getPulseDuration(false));
- pw.print(" getPulseDuration(pickup=true): "); pw.println(getPulseDuration(true));
- pw.print(" getPulseInDuration(pickup=false): "); pw.println(getPulseInDuration(false));
- pw.print(" getPulseInDuration(pickup=true): "); pw.println(getPulseInDuration(true));
+ pw.print(" getPulseDuration(notification): "); pw.println(getPulseDuration(DozeLog.PULSE_REASON_NOTIFICATION));
+ pw.print(" getPulseDuration(pickup): "); pw.println(getPulseDuration(DozeLog.PULSE_REASON_SENSOR_PICKUP));
+ pw.print(" getPulseDuration(intent): "); pw.println(getPulseDuration(DozeLog.PULSE_REASON_INTENT));
+ pw.print(" getPulseInDuration(notification): "); pw.println(getPulseInDuration(DozeLog.PULSE_REASON_NOTIFICATION));
+ pw.print(" getPulseInDuration(pickup): "); pw.println(getPulseInDuration(DozeLog.PULSE_REASON_SENSOR_PICKUP));
+ pw.print(" getPulseInDuration(intent): "); pw.println(getPulseInDuration(DozeLog.PULSE_REASON_INTENT));
pw.print(" getPulseInVisibleDuration(): "); pw.println(getPulseVisibleDuration());
pw.print(" getPulseOutDuration(): "); pw.println(getPulseOutDuration());
pw.print(" getPulseOnSigMotion(): "); pw.println(getPulseOnSigMotion());
pw.print(" getVibrateOnSigMotion(): "); pw.println(getVibrateOnSigMotion());
pw.print(" getPulseOnPickup(): "); pw.println(getPulseOnPickup());
pw.print(" getVibrateOnPickup(): "); pw.println(getVibrateOnPickup());
- pw.print(" getProxCheckBeforePulse(): "); pw.println(getProxCheckBeforePulse());
+ pw.print(" getProxCheckBeforePulse(pickup): "); pw.println(getProxCheckBeforePulse(DozeLog.PULSE_REASON_SENSOR_PICKUP));
+ pw.print(" getProxCheckBeforePulse(intent): "); pw.println(getProxCheckBeforePulse(DozeLog.PULSE_REASON_INTENT));
pw.print(" getPulseOnNotifications(): "); pw.println(getPulseOnNotifications());
pw.print(" getPulseSchedule(): "); pw.println(getPulseSchedule());
pw.print(" getPulseScheduleResets(): "); pw.println(getPulseScheduleResets());
@@ -68,14 +72,19 @@ public class DozeParameters {
return getBoolean("doze.display.supported", R.bool.doze_display_state_supported);
}
- public int getPulseDuration(boolean pickup) {
- return getPulseInDuration(pickup) + getPulseVisibleDuration() + getPulseOutDuration();
+ public int getPulseDuration(int reason) {
+ return getPulseInDuration(reason) + getPulseVisibleDuration() + getPulseOutDuration();
}
- public int getPulseInDuration(boolean pickup) {
- return pickup
- ? getInt("doze.pulse.duration.in.pickup", R.integer.doze_pulse_duration_in_pickup)
- : getInt("doze.pulse.duration.in", R.integer.doze_pulse_duration_in);
+ public int getPulseInDuration(int reason) {
+ switch(reason) {
+ case DozeLog.PULSE_REASON_SENSOR_PICKUP:
+ return getInt("doze.pulse.duration.in.pickup", R.integer.doze_pulse_duration_in_pickup);
+ case DozeLog.PULSE_REASON_INTENT:
+ return getInt("doze.pulse.duration.in.intent", R.integer.doze_pulse_duration_in_intent);
+ default:
+ return getInt("doze.pulse.duration.in", R.integer.doze_pulse_duration_in);
+ }
}
public int getPulseVisibleDuration() {
@@ -102,8 +111,15 @@ public class DozeParameters {
return SystemProperties.getBoolean("doze.vibrate.pickup", false);
}
- public boolean getProxCheckBeforePulse() {
- return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse);
+ public boolean getProxCheckBeforePulse(int reason) {
+ switch(reason) {
+ case DozeLog.PULSE_REASON_SENSOR_PICKUP:
+ return getBoolean("doze.pulse.proxcheck.pickup", R.bool.doze_proximity_check_before_pulse);
+ case DozeLog.PULSE_REASON_INTENT:
+ return getBoolean("doze.pulse.proxcheck.intent", R.bool.doze_proximity_check_before_pulse_intent);
+ default:
+ return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse);
+ }
}
public boolean getPickupPerformsProxCheck() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
index 3ff69c9..b3e0104 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
@@ -115,7 +115,7 @@ public class DozeScrimController {
if (isPulsing()) {
final boolean pickup = mPulseReason == DozeLog.PULSE_REASON_SENSOR_PICKUP;
startScrimAnimation(true /* inFront */, 0f,
- mDozeParameters.getPulseInDuration(pickup),
+ mDozeParameters.getPulseInDuration(mPulseReason),
pickup ? mPulseInInterpolatorPickup : mPulseInInterpolator,
mPulseInFinished);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
index 2912963..7135836 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
@@ -173,7 +173,7 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback {
if (DEBUG_FP_WAKELOCK) {
Log.i(TAG, "fp wakelock: Authenticated, waking up...");
}
- mPowerManager.wakeUp(SystemClock.uptimeMillis());
+ mPowerManager.wakeUp(SystemClock.uptimeMillis(), "android.policy:FINGERPRINT");
}
releaseFingerprintWakeLock();
switch (mMode) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
index 50ead3d..5750372 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
@@ -22,12 +22,14 @@ import android.view.View;
import android.widget.LinearLayout;
import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.Clock;
public class IconMerger extends LinearLayout {
private static final String TAG = "IconMerger";
private static final boolean DEBUG = false;
private int mIconSize;
+ private int mClockLocation;
private View mMoreView;
public IconMerger(Context context, AttributeSet attrs) {
@@ -50,6 +52,10 @@ public class IconMerger extends LinearLayout {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// we need to constrain this to an integral multiple of our children
int width = getMeasuredWidth();
+ if (mClockLocation == ClockController.STYLE_CLOCK_CENTER) {
+ int totalWidth = getResources().getDisplayMetrics().widthPixels;
+ width = totalWidth / 2 - mIconSize * 2;
+ }
setMeasuredDimension(width - (width % mIconSize), getMeasuredHeight());
}
@@ -69,7 +75,14 @@ public class IconMerger extends LinearLayout {
}
final boolean overflowShown = (mMoreView.getVisibility() == View.VISIBLE);
// let's assume we have one more slot if the more icon is already showing
- if (overflowShown) visibleChildren --;
+ if (overflowShown) {
+ int totalWidth = getResources().getDisplayMetrics().widthPixels;
+ if ((mClockLocation != ClockController.STYLE_CLOCK_CENTER &&
+ mClockLocation != ClockController.STYLE_CLOCK_LEFT) ||
+ (visibleChildren > (totalWidth / mIconSize / 2 + 1))) {
+ visibleChildren--;
+ }
+ }
final boolean moreRequired = visibleChildren * mIconSize > width;
if (moreRequired != overflowShown) {
post(new Runnable() {
@@ -80,4 +93,9 @@ public class IconMerger extends LinearLayout {
});
}
}
+
+ public void setClockAndDateStatus(int mode) {
+ mClockLocation = mode;
+
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
index 60ebfdf..e1a345f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
@@ -49,7 +49,7 @@ public class KeyguardAffordanceHelper {
private VelocityTracker mVelocityTracker;
private boolean mSwipingInProgress;
private float mInitialTouchX;
- private float mInitialTouchY;
+ private float mInitialTouchYRaw;
private float mTranslation;
private float mTranslationOnDown;
private int mTouchSlop;
@@ -128,7 +128,7 @@ public class KeyguardAffordanceHelper {
if (mMotionCancelled && action != MotionEvent.ACTION_DOWN) {
return false;
}
- final float y = event.getY();
+ final float y = event.getRawY();
final float x = event.getX();
boolean isUp = false;
@@ -146,7 +146,7 @@ public class KeyguardAffordanceHelper {
}
startSwiping(targetView);
mInitialTouchX = x;
- mInitialTouchY = y;
+ mInitialTouchYRaw = y;
mTranslationOnDown = mTranslation;
initVelocityTracker();
trackMovement(event);
@@ -159,7 +159,7 @@ public class KeyguardAffordanceHelper {
case MotionEvent.ACTION_MOVE:
trackMovement(event);
float xDist = x - mInitialTouchX;
- float yDist = y - mInitialTouchY;
+ float yDist = y - mInitialTouchYRaw;
float distance = (float) Math.hypot(xDist, yDist);
if (!mTouchSlopExeeded && distance > mTouchSlop) {
mTouchSlopExeeded = true;
@@ -211,8 +211,9 @@ public class KeyguardAffordanceHelper {
}
private boolean isOnIcon(View icon, float x, float y) {
+ int[] location = icon.getLocationOnScreen();
float iconX = icon.getX() + icon.getWidth() / 2.0f;
- float iconY = icon.getY() + icon.getHeight() / 2.0f;
+ float iconY = location[1] + icon.getHeight() / 2.0f;
double distance = Math.hypot(x - iconX, y - iconY);
return distance <= mTouchTargetSize / 2;
}
@@ -241,6 +242,13 @@ public class KeyguardAffordanceHelper {
return false;
}
+ public boolean isOnLockIcon(MotionEvent event) {
+ final float x = event.getX();
+ final float y = event.getRawY();
+
+ return isOnIcon(mCenterIcon, x, y);
+ }
+
public void startHintAnimation(boolean right,
Runnable onFinishedListener) {
cancelAnimation();
@@ -488,7 +496,7 @@ public class KeyguardAffordanceHelper {
float aX = mVelocityTracker.getXVelocity();
float aY = mVelocityTracker.getYVelocity();
float bX = lastX - mInitialTouchX;
- float bY = lastY - mInitialTouchY;
+ float bY = lastY - mInitialTouchYRaw;
float bLen = (float) Math.hypot(bX, bY);
// Project the velocity onto the distance vector: a * b / |b|
float projectedVelocity = (aX * bX + aY * bY) / bLen;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index 14176a6..b244e26 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -29,6 +29,10 @@ import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
+import android.graphics.PixelFormat;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
@@ -42,14 +46,16 @@ import android.telecom.TelecomManager;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.TextView;
-
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -57,6 +63,8 @@ import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
import com.android.systemui.R;
import com.android.systemui.assist.AssistManager;
+import com.android.systemui.cm.LockscreenShortcutsHelper;
+import com.android.systemui.cm.LockscreenShortcutsHelper.Shortcuts;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.KeyguardAffordanceView;
import com.android.systemui.statusbar.KeyguardIndicationController;
@@ -64,6 +72,8 @@ import com.android.systemui.statusbar.policy.AccessibilityController;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.PreviewInflater;
+import java.util.Objects;
+
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
@@ -72,7 +82,7 @@ import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityActi
* text.
*/
public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickListener,
- UnlockMethodCache.OnUnlockMethodChangedListener,
+ UnlockMethodCache.OnUnlockMethodChangedListener, LockscreenShortcutsHelper.OnChangeListener,
AccessibilityController.AccessibilityStateChangedCallback, View.OnLongClickListener {
final static String TAG = "PhoneStatusBar/KeyguardBottomAreaView";
@@ -80,6 +90,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public static final String CAMERA_LAUNCH_SOURCE_AFFORDANCE = "lockscreen_affordance";
public static final String CAMERA_LAUNCH_SOURCE_WIGGLE = "wiggle_gesture";
public static final String CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = "power_double_tap";
+ public static final String CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE = "screen_gesture";
public static final String EXTRA_CAMERA_LAUNCH_SOURCE
= "com.android.systemui.camera_launch_source";
@@ -110,11 +121,20 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private KeyguardIndicationController mIndicationController;
private AccessibilityController mAccessibilityController;
private PhoneStatusBar mPhoneStatusBar;
+ private LockscreenShortcutsHelper mShortcutHelper;
+ private final ColorMatrixColorFilter mGrayScaleFilter;
private final Interpolator mLinearOutSlowInInterpolator;
private boolean mUserSetupComplete;
private boolean mPrewarmBound;
private Messenger mPrewarmMessenger;
+ private final WindowManager mWindowManager;
+ private boolean mBottomAreaAttached;
+ private final WindowManager.LayoutParams mWindowLayoutParams;
+ private OnInterceptTouchEventListener mInterceptTouchListener;
+ private BroadcastReceiver mDevicePolicyReceiver;
+ private Intent mLastCameraIntent;
+
private final ServiceConnection mPrewarmConnection = new ServiceConnection() {
@Override
@@ -128,7 +148,48 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
};
- private boolean mLeftIsVoiceAssist;
+ @Override
+ public void setVisibility(int visibility) {
+ if (visibility == View.VISIBLE) {
+ if (!mBottomAreaAttached) {
+ addKeyguardBottomArea(false);
+ }
+ } else if (mBottomAreaAttached) {
+ removeKeyguardBottomArea();
+ }
+ super.setVisibility(visibility);
+ }
+
+ public void expand(boolean expand) {
+ addKeyguardBottomArea(expand);
+ }
+
+ private void addKeyguardBottomArea(boolean fullyExpand) {
+ mWindowLayoutParams.height = fullyExpand ? WindowManager.LayoutParams.MATCH_PARENT :
+ WindowManager.LayoutParams.WRAP_CONTENT;
+ if (!mBottomAreaAttached) {
+ try {
+ mWindowManager.addView(this, mWindowLayoutParams);
+ } catch (IllegalStateException e) {
+ Log.e(TAG, e.getMessage());
+ }
+ mBottomAreaAttached = true;
+ } else {
+ mWindowManager.updateViewLayout(this, mWindowLayoutParams);
+ }
+ }
+
+ private void removeKeyguardBottomArea() {
+ if (mBottomAreaAttached) {
+ try {
+ mWindowManager.removeView(this);
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, e.getMessage());
+ }
+ mBottomAreaAttached = false;
+ }
+ }
+
private AssistManager mAssistManager;
public KeyguardBottomAreaView(Context context) {
@@ -148,6 +209,23 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
super(context, attrs, defStyleAttr, defStyleRes);
mLinearOutSlowInInterpolator =
AnimationUtils.loadInterpolator(context, android.R.interpolator.linear_out_slow_in);
+ ColorMatrix cm = new ColorMatrix();
+ cm.setSaturation(0);
+ mGrayScaleFilter = new ColorMatrixColorFilter(cm);
+ mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+
+ mWindowLayoutParams = new WindowManager.LayoutParams();
+ mWindowLayoutParams.type = WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL;
+ mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+ mWindowLayoutParams.privateFlags =
+ WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
+ mWindowLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
+ mWindowLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+ mWindowLayoutParams.format = PixelFormat.TRANSPARENT;
+ mWindowLayoutParams.setTitle("KeyguardBottomArea");
+ mWindowLayoutParams.gravity = Gravity.BOTTOM;
}
private AccessibilityDelegate mAccessibilityDelegate = new AccessibilityDelegate() {
@@ -158,12 +236,20 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
if (host == mLockIcon) {
label = getResources().getString(R.string.unlock_label);
} else if (host == mCameraImageView) {
- label = getResources().getString(R.string.camera_label);
+ if (isTargetCustom(Shortcuts.RIGHT_SHORTCUT)) {
+ label = mShortcutHelper.getFriendlyNameForUri(Shortcuts.RIGHT_SHORTCUT);
+ } else {
+ label = getResources().getString(R.string.camera_label);
+ }
} else if (host == mLeftAffordanceView) {
- if (mLeftIsVoiceAssist) {
- label = getResources().getString(R.string.voice_assist_label);
+ if (isTargetCustom(Shortcuts.LEFT_SHORTCUT)) {
+ label = mShortcutHelper.getFriendlyNameForUri(Shortcuts.LEFT_SHORTCUT);
} else {
- label = getResources().getString(R.string.phone_label);
+ if (isLeftVoiceAssist()) {
+ label = getResources().getString(R.string.voice_assist_label);
+ } else {
+ label = getResources().getString(R.string.phone_label);
+ }
}
}
info.addAction(new AccessibilityAction(ACTION_CLICK, label));
@@ -197,20 +283,47 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
mLeftAffordanceView = (KeyguardAffordanceView) findViewById(R.id.left_button);
mLockIcon = (LockIcon) findViewById(R.id.lock_icon);
mIndicationText = (TextView) findViewById(R.id.keyguard_indication_text);
+ mShortcutHelper = new LockscreenShortcutsHelper(mContext, this);
watchForCameraPolicyChanges();
updateCameraVisibility();
+ updateLeftButtonVisibility();
mUnlockMethodCache = UnlockMethodCache.getInstance(getContext());
mUnlockMethodCache.addListener(this);
mLockIcon.update();
setClipChildren(false);
setClipToPadding(false);
mPreviewInflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
- inflateCameraPreview();
mLockIcon.setOnClickListener(this);
mLockIcon.setOnLongClickListener(this);
mCameraImageView.setOnClickListener(this);
mLeftAffordanceView.setOnClickListener(this);
initAccessibility();
+ updateCustomShortcuts();
+ }
+
+ private void updateCustomShortcuts() {
+ updateLeftAffordanceIcon();
+ updateRightAffordanceIcon();
+ inflateCameraPreview();
+ }
+
+ private void updateRightAffordanceIcon() {
+ Drawable drawable;
+ String contentDescription;
+ boolean shouldGrayScale = false;
+ if (isTargetCustom(Shortcuts.RIGHT_SHORTCUT)) {
+ drawable = mShortcutHelper.getDrawableForTarget(Shortcuts.RIGHT_SHORTCUT);
+ shouldGrayScale = true;
+ contentDescription = mShortcutHelper.getFriendlyNameForUri(Shortcuts.RIGHT_SHORTCUT);
+ } else {
+ drawable = mContext.getDrawable(R.drawable.ic_camera_alt_24dp);
+ contentDescription = mContext.getString(R.string.accessibility_camera_button);
+ }
+ mCameraImageView.setImageDrawable(drawable);
+ mCameraImageView.setContentDescription(contentDescription);
+ mCameraImageView.setDefaultFilter(shouldGrayScale ? mGrayScaleFilter : null);
+ updateCameraVisibility();
+ updateLeftButtonVisibility();
}
private void initAccessibility() {
@@ -253,11 +366,13 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void setPhoneStatusBar(PhoneStatusBar phoneStatusBar) {
mPhoneStatusBar = phoneStatusBar;
updateCameraVisibility(); // in case onFinishInflate() was called too early
+ updateLeftButtonVisibility();
}
public void setUserSetupComplete(boolean userSetupComplete) {
mUserSetupComplete = userSetupComplete;
updateCameraVisibility();
+ updateLeftButtonVisibility();
updateLeftAffordanceIcon();
}
@@ -278,38 +393,66 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
KeyguardUpdateMonitor.getCurrentUser());
}
+ private void updateLeftButtonVisibility() {
+ if (mLeftAffordanceView == null) {
+ return;
+ }
+ boolean visible = mUserSetupComplete;
+ if (visible) {
+ if (isTargetCustom(Shortcuts.LEFT_SHORTCUT)) {
+ visible = !mShortcutHelper.isTargetEmpty(Shortcuts.LEFT_SHORTCUT);
+ } else {
+ // Display left shortcut
+ }
+ }
+ mLeftAffordanceView.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
private void updateCameraVisibility() {
if (mCameraImageView == null) {
// Things are not set up yet; reply hazy, ask again later
return;
}
- ResolveInfo resolved = resolveCameraIntent();
- boolean visible = !isCameraDisabledByDpm() && resolved != null
- && getResources().getBoolean(R.bool.config_keyguardShowCameraAffordance)
- && mUserSetupComplete;
+ boolean visible = mUserSetupComplete;
+ if (visible) {
+ if (isTargetCustom(Shortcuts.RIGHT_SHORTCUT)) {
+ visible = !mShortcutHelper.isTargetEmpty(Shortcuts.RIGHT_SHORTCUT);
+ } else {
+ ResolveInfo resolved = resolveCameraIntent();
+ visible = !isCameraDisabledByDpm() && resolved != null
+ && getResources().getBoolean(R.bool.config_keyguardShowCameraAffordance);
+ }
+ }
mCameraImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
}
private void updateLeftAffordanceIcon() {
- mLeftIsVoiceAssist = canLaunchVoiceAssist();
- int drawableId;
- int contentDescription;
+ Drawable drawable;
+ String contentDescription;
+ boolean shouldGrayScale = false;
boolean visible = mUserSetupComplete;
- if (mLeftIsVoiceAssist) {
- drawableId = R.drawable.ic_mic_26dp;
- contentDescription = R.string.accessibility_voice_assist_button;
+ if (mShortcutHelper.isTargetCustom(Shortcuts.LEFT_SHORTCUT)) {
+ drawable = mShortcutHelper.getDrawableForTarget(Shortcuts.LEFT_SHORTCUT);
+ shouldGrayScale = true;
+ contentDescription = mShortcutHelper.getFriendlyNameForUri(Shortcuts.LEFT_SHORTCUT);
+ visible |= !mShortcutHelper.isTargetEmpty(Shortcuts.LEFT_SHORTCUT);
+ } else if (canLaunchVoiceAssist()) {
+ drawable = mContext.getDrawable(R.drawable.ic_mic_26dp);
+ contentDescription = mContext.getString(R.string.accessibility_voice_assist_button);
} else {
visible &= isPhoneVisible();
- drawableId = R.drawable.ic_phone_24dp;
- contentDescription = R.string.accessibility_phone_button;
+ drawable = mContext.getDrawable(R.drawable.ic_phone_24dp);
+ contentDescription = mContext.getString(R.string.accessibility_phone_button);
}
mLeftAffordanceView.setVisibility(visible ? View.VISIBLE : View.GONE);
- mLeftAffordanceView.setImageDrawable(mContext.getDrawable(drawableId));
- mLeftAffordanceView.setContentDescription(mContext.getString(contentDescription));
+ mLeftAffordanceView.setImageDrawable(drawable);
+ mLeftAffordanceView.setContentDescription(contentDescription);
+ mLeftAffordanceView.setDefaultFilter(shouldGrayScale ? mGrayScaleFilter : null);
+ updateLeftButtonVisibility();
}
public boolean isLeftVoiceAssist() {
- return mLeftIsVoiceAssist;
+ return !isTargetCustom(Shortcuts.LEFT_SHORTCUT) && canLaunchVoiceAssist();
}
private boolean isPhoneVisible() {
@@ -339,6 +482,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private void watchForCameraPolicyChanges() {
final IntentFilter filter = new IntentFilter();
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
+ mDevicePolicyReceiver = new DevicePolicyBroadcastReceiver();
getContext().registerReceiverAsUser(mDevicePolicyReceiver,
UserHandle.ALL, filter, null, null);
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback);
@@ -425,8 +569,15 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
public void launchCamera(String source) {
- final Intent intent = getCameraIntent();
- intent.putExtra(EXTRA_CAMERA_LAUNCH_SOURCE, source);
+ final Intent intent;
+ if (source.equals(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) ||
+ source.equals(CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE) ||
+ !mShortcutHelper.isTargetCustom(LockscreenShortcutsHelper.Shortcuts.RIGHT_SHORTCUT)) {
+ intent = getCameraIntent();
+ } else {
+ intent = mShortcutHelper.getIntent(LockscreenShortcutsHelper.Shortcuts.RIGHT_SHORTCUT);
+ intent.putExtra(EXTRA_CAMERA_LAUNCH_SOURCE, source);
+ }
boolean wouldLaunchResolverActivity = PreviewInflater.wouldLaunchResolverActivity(
mContext, intent, KeyguardUpdateMonitor.getCurrentUser());
if (intent == SECURE_CAMERA_INTENT && !wouldLaunchResolverActivity) {
@@ -475,7 +626,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
public void launchLeftAffordance() {
- if (mLeftIsVoiceAssist) {
+ if (mShortcutHelper.isTargetCustom(Shortcuts.LEFT_SHORTCUT)) {
+ Intent intent = mShortcutHelper.getIntent(Shortcuts.LEFT_SHORTCUT);
+ mActivityStarter.startActivity(intent, false /* dismissShade */);
+ } else if (isLeftVoiceAssist()) {
launchVoiceAssist();
} else {
launchPhone();
@@ -499,6 +653,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
private boolean canLaunchVoiceAssist() {
+ if (mAssistManager == null) {
+ return false;
+ }
return mAssistManager.canVoiceAssistBeLaunchedFromKeyguard();
}
@@ -523,6 +680,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
if (changedView == this && visibility == VISIBLE) {
mLockIcon.update();
updateCameraVisibility();
+ updateLeftButtonVisibility();
}
}
@@ -559,13 +717,27 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void onUnlockMethodStateChanged() {
mLockIcon.update();
updateCameraVisibility();
+ updateLeftButtonVisibility();
}
private void inflateCameraPreview() {
- mCameraPreview = mPreviewInflater.inflatePreview(getCameraIntent());
- if (mCameraPreview != null) {
- mPreviewContainer.addView(mCameraPreview);
- mCameraPreview.setVisibility(View.INVISIBLE);
+ if (isTargetCustom(Shortcuts.RIGHT_SHORTCUT)) {
+ mPreviewContainer.removeView(mCameraPreview);
+ } else {
+ Intent cameraIntent = getCameraIntent();
+ if (!Objects.equals(cameraIntent, mLastCameraIntent)) {
+ if (mCameraPreview != null) {
+ mPreviewContainer.removeView(mCameraPreview);
+ }
+ mCameraPreview = mPreviewInflater.inflatePreview(cameraIntent);
+ if (mCameraPreview != null) {
+ mPreviewContainer.addView(mCameraPreview);
+ }
+ }
+ mLastCameraIntent = cameraIntent;
+ if (mCameraPreview != null) {
+ mCameraPreview.setVisibility(View.GONE);
+ }
}
}
@@ -574,7 +746,11 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
if (previewBefore != null) {
mPreviewContainer.removeView(previewBefore);
}
- if (mLeftIsVoiceAssist) {
+ if (isTargetCustom(Shortcuts.LEFT_SHORTCUT)) {
+ // Custom shortcuts don't support previews
+ return;
+ }
+ if (isLeftVoiceAssist()) {
mLeftPreview = mPreviewInflater.inflatePreviewFromService(
mAssistManager.getVoiceInteractorComponentName());
} else {
@@ -582,7 +758,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
if (mLeftPreview != null) {
mPreviewContainer.addView(mLeftPreview);
- mLeftPreview.setVisibility(View.INVISIBLE);
+ mLeftPreview.setVisibility(View.GONE);
}
}
@@ -615,13 +791,18 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
.setDuration(DOZE_ANIMATION_ELEMENT_DURATION);
}
- private final BroadcastReceiver mDevicePolicyReceiver = new BroadcastReceiver() {
+ public void cleanup() {
+ removeKeyguardBottomArea();
+ }
+
+ private final class DevicePolicyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
post(new Runnable() {
@Override
public void run() {
updateCameraVisibility();
+ updateLeftButtonVisibility();
}
});
}
@@ -632,6 +813,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
@Override
public void onUserSwitchComplete(int userId) {
updateCameraVisibility();
+ updateLeftButtonVisibility();
}
@Override
@@ -684,4 +866,92 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
updateLeftAffordanceIcon();
updateLeftPreview();
}
+
+ private String getIndexHint(LockscreenShortcutsHelper.Shortcuts shortcut) {
+ if (mShortcutHelper.isTargetCustom(shortcut)) {
+ boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
+ String label = mShortcutHelper.getFriendlyNameForUri(shortcut);
+ int resId = 0;
+ switch (shortcut) {
+ case LEFT_SHORTCUT:
+ resId = isRtl ? R.string.right_shortcut_hint : R.string.left_shortcut_hint;
+ break;
+ case RIGHT_SHORTCUT:
+ resId = isRtl ? R.string.left_shortcut_hint : R.string.right_shortcut_hint;
+ break;
+ }
+ return mContext.getString(resId, label);
+ } else {
+ return null;
+ }
+ }
+
+ public String getLeftHint() {
+ String label = getIndexHint(LockscreenShortcutsHelper.Shortcuts.LEFT_SHORTCUT);
+ if (label == null) {
+ if (isLeftVoiceAssist()) {
+ label = mContext.getString(R.string.voice_hint);
+ } else {
+ label = mContext.getString(R.string.phone_hint);
+ }
+ }
+ return label;
+ }
+
+ public String getRightHint() {
+ String label = getIndexHint(LockscreenShortcutsHelper.Shortcuts.RIGHT_SHORTCUT);
+ if (label == null) {
+ label = mContext.getString(R.string.camera_hint);
+ }
+ return label;
+ }
+
+ public boolean isTargetCustom(LockscreenShortcutsHelper.Shortcuts shortcut) {
+ return mShortcutHelper.isTargetCustom(shortcut);
+ }
+
+ @Override
+ public void onChange() {
+ updateCustomShortcuts();
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ if (mAccessibilityController != null) {
+ mAccessibilityController.addStateChangedCallback(this);
+ }
+ mShortcutHelper.registerAndFetchTargets();
+ updateCustomShortcuts();
+ mUnlockMethodCache.addListener(this);
+ watchForCameraPolicyChanges();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mAccessibilityController.removeStateChangedCallback(this);
+ if (mDevicePolicyReceiver != null) {
+ mContext.unregisterReceiver(mDevicePolicyReceiver);
+ mDevicePolicyReceiver = null;
+ }
+ mShortcutHelper.cleanup();
+ mUnlockMethodCache.removeListener(this);
+ }
+
+ public interface OnInterceptTouchEventListener {
+ boolean onInterceptTouchEvent(MotionEvent e);
+ }
+
+ public void setOnInterceptTouchListener(OnInterceptTouchEventListener listener) {
+ mInterceptTouchListener = listener;
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ if (mInterceptTouchListener != null) {
+ return mInterceptTouchListener.onInterceptTouchEvent(ev);
+ }
+ return super.onInterceptTouchEvent(ev);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
index 893b352..d992b17 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
@@ -32,6 +32,8 @@ import com.android.keyguard.R;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.DejankUtils;
+import org.cyanogenmod.internal.util.CmLockPatternUtils;
+
import static com.android.keyguard.KeyguardHostView.OnDismissAction;
import static com.android.keyguard.KeyguardSecurityModel.SecurityMode;
@@ -40,15 +42,21 @@ import static com.android.keyguard.KeyguardSecurityModel.SecurityMode;
*/
public class KeyguardBouncer {
+ public static final int UNLOCK_SEQUENCE_DEFAULT = 0;
+ public static final int UNLOCK_SEQUENCE_BOUNCER_FIRST = 1;
+ public static final int UNLOCK_SEQUENCE_FORCE_BOUNCER = 2;
+
private Context mContext;
private ViewMediatorCallback mCallback;
private LockPatternUtils mLockPatternUtils;
+ private CmLockPatternUtils mCmLockPatternUtils;
private ViewGroup mContainer;
private StatusBarWindowManager mWindowManager;
private KeyguardHostView mKeyguardView;
private ViewGroup mRoot;
private boolean mShowingSoon;
private int mBouncerPromptReason;
+ private PhoneStatusBar mPhoneStatusBar;
private KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
new KeyguardUpdateMonitorCallback() {
@Override
@@ -59,12 +67,14 @@ public class KeyguardBouncer {
public KeyguardBouncer(Context context, ViewMediatorCallback callback,
LockPatternUtils lockPatternUtils, StatusBarWindowManager windowManager,
- ViewGroup container) {
+ ViewGroup container, PhoneStatusBar phoneStatusBar) {
mContext = context;
mCallback = callback;
mLockPatternUtils = lockPatternUtils;
mContainer = container;
mWindowManager = windowManager;
+ mCmLockPatternUtils = new CmLockPatternUtils(mContext);
+ mPhoneStatusBar = phoneStatusBar;
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback);
}
@@ -78,7 +88,15 @@ public class KeyguardBouncer {
if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) {
return;
}
-
+ // ensure external keyguard view does not have focus
+ mPhoneStatusBar.unfocusKeyguardExternalView();
+ mPhoneStatusBar.getScrimController().forceHideScrims(false);
+ // Don't hide bottom area if we are in the middle of a affordance
+ // launch transition, since once the animation is finished, NPV
+ // will take care of setting it invisible.
+ if (!mPhoneStatusBar.mNotificationPanel.isLaunchTransitionRunning()) {
+ mPhoneStatusBar.mKeyguardBottomArea.setVisibility(View.GONE);
+ }
// Try to dismiss the Keyguard. If no security pattern is set, this will dismiss the whole
// Keyguard. If we need to authenticate, show the bouncer.
if (!mKeyguardView.dismiss()) {
@@ -195,7 +213,7 @@ public class KeyguardBouncer {
mRoot.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME);
}
- private void removeView() {
+ void removeView() {
if (mRoot != null && mRoot.getParent() == mContainer) {
mContainer.removeView(mRoot);
mRoot = null;
@@ -207,28 +225,42 @@ public class KeyguardBouncer {
}
/**
- * @return True if and only if the security method should be shown before showing the
- * notifications on Keyguard, like SIM PIN/PUK.
+ * @return Whether the bouncer should be shown first, this could be because of SIM PIN/PUK
+ * or it just could be chosen to be shown first.
*/
- public boolean needsFullscreenBouncer() {
+ public int needsFullscreenBouncer() {
ensureView();
if (mKeyguardView != null) {
SecurityMode mode = mKeyguardView.getSecurityMode();
- return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk;
+ if (mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk)
+ return UNLOCK_SEQUENCE_FORCE_BOUNCER;
+ // "Bouncer first" mode currently only available to some security methods.
+ else if ((mode == SecurityMode.Pattern || mode == SecurityMode.Password
+ || mode == SecurityMode.PIN) && (mLockPatternUtils != null &&
+ mCmLockPatternUtils.shouldPassToSecurityView(
+ KeyguardUpdateMonitor.getCurrentUser())))
+ return UNLOCK_SEQUENCE_BOUNCER_FIRST;
}
- return false;
+ return UNLOCK_SEQUENCE_DEFAULT;
}
/**
* Like {@link #needsFullscreenBouncer}, but uses the currently visible security method, which
* makes this method much faster.
*/
- public boolean isFullscreenBouncer() {
+ public int isFullscreenBouncer() {
if (mKeyguardView != null) {
SecurityMode mode = mKeyguardView.getCurrentSecurityMode();
- return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk;
+ if (mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk)
+ return UNLOCK_SEQUENCE_FORCE_BOUNCER;
+ // "Bouncer first" mode currently only available to some security methods.
+ else if ((mode == SecurityMode.Pattern || mode == SecurityMode.Password
+ || mode == SecurityMode.PIN) && (mLockPatternUtils != null &&
+ mCmLockPatternUtils.shouldPassToSecurityView(
+ KeyguardUpdateMonitor.getCurrentUser())))
+ return UNLOCK_SEQUENCE_BOUNCER_FIRST;
}
- return false;
+ return UNLOCK_SEQUENCE_DEFAULT;
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index b93fc76..ec307de 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 The Android Open Source Project
- *
+ * Copyright (C) 2016 The CyanogenMod 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
@@ -29,37 +29,37 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import com.android.systemui.BatteryLevelTextView;
import com.android.systemui.BatteryMeterView;
+import com.android.systemui.DockBatteryMeterView;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.DockBatteryController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
-import java.text.NumberFormat;
-
/**
* The header group on Keyguard.
*/
-public class KeyguardStatusBarView extends RelativeLayout
- implements BatteryController.BatteryStateChangeCallback {
+public class KeyguardStatusBarView extends RelativeLayout {
- private boolean mBatteryCharging;
private boolean mKeyguardUserSwitcherShowing;
- private boolean mBatteryListening;
private TextView mCarrierLabel;
private View mSystemIconsSuperContainer;
private MultiUserSwitch mMultiUserSwitch;
private ImageView mMultiUserAvatar;
- private TextView mBatteryLevel;
+ private BatteryLevelTextView mBatteryLevel;
+ private BatteryLevelTextView mDockBatteryLevel;
- private BatteryController mBatteryController;
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private int mSystemIconsSwitcherHiddenExpandedMargin;
private Interpolator mFastOutSlowInInterpolator;
+ private UserInfoController mUserInfoController;
+
public KeyguardStatusBarView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -70,12 +70,14 @@ public class KeyguardStatusBarView extends RelativeLayout
mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container);
mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch);
mMultiUserAvatar = (ImageView) findViewById(R.id.multi_user_avatar);
- mBatteryLevel = (TextView) findViewById(R.id.battery_level);
+ mBatteryLevel = (BatteryLevelTextView) findViewById(R.id.battery_level_text);
+ mDockBatteryLevel = (BatteryLevelTextView) findViewById(R.id.dock_battery_level_text);
mCarrierLabel = (TextView) findViewById(R.id.keyguard_carrier_text);
loadDimens();
mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(getContext(),
android.R.interpolator.fast_out_slow_in);
updateUserSwitcher();
+ updateVisibilities();
}
@Override
@@ -86,8 +88,14 @@ public class KeyguardStatusBarView extends RelativeLayout
mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimensionPixelSize(
com.android.internal.R.dimen.text_size_small_material));
- mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getResources().getDimensionPixelSize(R.dimen.battery_level_text_size));
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ if (mUserInfoController != null) {
+ mUserInfoController.removeListener(mUserInfoChangedListener);
+ }
}
private void loadDimens() {
@@ -104,7 +112,10 @@ public class KeyguardStatusBarView extends RelativeLayout
} else if (mMultiUserSwitch.getParent() == this && mKeyguardUserSwitcherShowing) {
removeView(mMultiUserSwitch);
}
- mBatteryLevel.setVisibility(mBatteryCharging ? View.VISIBLE : View.GONE);
+ mBatteryLevel.setVisibility(View.VISIBLE);
+ if (mDockBatteryLevel != null) {
+ mDockBatteryLevel.setVisibility(View.VISIBLE);
+ }
}
private void updateSystemIconsLayoutParams() {
@@ -117,18 +128,6 @@ public class KeyguardStatusBarView extends RelativeLayout
}
}
- public void setListening(boolean listening) {
- if (listening == mBatteryListening) {
- return;
- }
- mBatteryListening = listening;
- if (mBatteryListening) {
- mBatteryController.addStateChangedCallback(this);
- } else {
- mBatteryController.removeStateChangedCallback(this);
- }
- }
-
private void updateUserSwitcher() {
boolean keyguardSwitcherAvailable = mKeyguardUserSwitcher != null;
mMultiUserSwitch.setClickable(keyguardSwitcherAvailable);
@@ -137,37 +136,43 @@ public class KeyguardStatusBarView extends RelativeLayout
}
public void setBatteryController(BatteryController batteryController) {
- mBatteryController = batteryController;
- ((BatteryMeterView) findViewById(R.id.battery)).setBatteryController(batteryController);
+ BatteryMeterView v = ((BatteryMeterView) findViewById(R.id.battery));
+ v.setBatteryStateRegistar(batteryController);
+ v.setBatteryController(batteryController);
+ mBatteryLevel.setBatteryStateRegistar(batteryController);
}
- public void setUserSwitcherController(UserSwitcherController controller) {
- mMultiUserSwitch.setUserSwitcherController(controller);
+ public void setDockBatteryController(DockBatteryController dockBatteryController) {
+ DockBatteryMeterView v = ((DockBatteryMeterView) findViewById(R.id.dock_battery));
+ if (dockBatteryController != null) {
+ v.setBatteryStateRegistar(dockBatteryController);
+ mDockBatteryLevel.setBatteryStateRegistar(dockBatteryController);
+ } else {
+ if (v != null ) {
+ removeView(v);
+ }
+ if (mDockBatteryLevel != null) {
+ removeView(mDockBatteryLevel);
+ mDockBatteryLevel = null;
+ }
+ }
}
- public void setUserInfoController(UserInfoController userInfoController) {
- userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
- @Override
- public void onUserInfoChanged(String name, Drawable picture) {
- mMultiUserAvatar.setImageDrawable(picture);
- }
- });
+ public void setUserSwitcherController(UserSwitcherController controller) {
+ mMultiUserSwitch.setUserSwitcherController(controller);
}
- @Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
- String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);
- mBatteryLevel.setText(percentage);
- boolean changed = mBatteryCharging != charging;
- mBatteryCharging = charging;
- if (changed) {
- updateVisibilities();
+ private UserInfoController.OnUserInfoChangedListener mUserInfoChangedListener =
+ new UserInfoController.OnUserInfoChangedListener() {
+ @Override
+ public void onUserInfoChanged(String name, Drawable picture) {
+ mMultiUserAvatar.setImageDrawable(picture);
}
- }
+ };
- @Override
- public void onPowerSaveChanged() {
- // could not care less
+ public void setUserInfoController(UserInfoController userInfoController) {
+ mUserInfoController = userInfoController;
+ userInfoController.addListener(mUserInfoChangedListener);
}
public void setKeyguardUserSwitcher(KeyguardUserSwitcher keyguardUserSwitcher) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
index 8e58d14..cf39655 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
@@ -61,7 +61,8 @@ public class LockIcon extends KeyguardAffordanceView {
@Override
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
- if (isShown()) {
+ if (isShown() &&
+ KeyguardUpdateMonitor.getInstance(mContext).isDeviceInteractive()) {
mTrustDrawable.start();
} else {
mTrustDrawable.stop();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
index e70d146..e89cd3f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
@@ -30,6 +30,7 @@ import android.widget.FrameLayout;
import com.android.systemui.R;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
+import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
/**
@@ -37,16 +38,20 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
*/
public class MultiUserSwitch extends FrameLayout implements View.OnClickListener {
+ public static final String INTENT_EXTRA_NEW_LOCAL_PROFILE = "newLocalProfile";
+
private QSPanel mQsPanel;
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private boolean mKeyguardMode;
private UserSwitcherController.BaseUserAdapter mUserListener;
final UserManager mUserManager;
+ private ActivityStarter mActivityStarter;
private final int[] mTmpInt2 = new int[2];
private UserSwitcherController mUserSwitcherController;
+ private UserInfoController mUserInfoController;
public MultiUserSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -101,6 +106,10 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
}
}
+ public void setActivityStarter(ActivityStarter activityStarter) {
+ mActivityStarter = activityStarter;
+ }
+
@Override
public void onClick(View v) {
if (UserSwitcherController.isUserSwitcherAvailable(mUserManager)) {
@@ -120,10 +129,20 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
mTmpInt2);
}
} else {
- Intent intent = ContactsContract.QuickContact.composeQuickContactsIntent(
- getContext(), v, ContactsContract.Profile.CONTENT_URI,
- ContactsContract.QuickContact.MODE_LARGE, null);
- getContext().startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
+ Intent intent;
+ if (mUserInfoController == null || mUserInfoController.isProfileSetup()) {
+ intent = ContactsContract.QuickContact.composeQuickContactsIntent(
+ getContext(), v, ContactsContract.Profile.CONTENT_URI,
+ ContactsContract.QuickContact.MODE_LARGE, null);
+ } else {
+ intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+ intent.putExtra(INTENT_EXTRA_NEW_LOCAL_PROFILE, true);
+ }
+ if (mActivityStarter != null) {
+ mActivityStarter.startActivity(intent, true /* dismissShade */);
+ } else {
+ getContext().startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
+ }
}
}
@@ -171,4 +190,7 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
return false;
}
+ public void setUserInfoController(UserInfoController userInfoController) {
+ mUserInfoController = userInfoController;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarInsetLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarInsetLayout.java
new file mode 100644
index 0000000..2028132
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarInsetLayout.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui.statusbar.phone;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.UserHandle;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
+import android.widget.FrameLayout;
+import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.statusbar.BaseStatusBar;
+import cyanogenmod.providers.CMSettings;
+
+public class NavBarInsetLayout extends FrameLayout {
+ public static final String TAG = "NavBarInsetLayout";
+ public static final boolean DEBUG = BaseStatusBar.DEBUG;
+
+ boolean mLeftInsetMode = false;
+
+ private int mLeftInset = 0;
+ private int mRightInset = 0;
+
+ private final Paint mTransparentSrcPaint = new Paint();
+
+ private SettingsObserver mSettingsObserver;
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mSettingsObserver.observe();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mSettingsObserver.unobserve();
+ }
+
+ public NavBarInsetLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setMotionEventSplittingEnabled(false);
+ mTransparentSrcPaint.setColor(0);
+ mTransparentSrcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
+
+ mSettingsObserver = new SettingsObserver(new Handler());
+ }
+
+ @Override
+ protected boolean fitSystemWindows(Rect insets) {
+ if (getFitsSystemWindows()) {
+ boolean paddingChanged;
+
+ if (mLeftInsetMode) {
+ paddingChanged = insets.right != getPaddingRight()
+ || insets.top != getPaddingTop()
+ || insets.bottom != getPaddingBottom();
+
+ if (insets.left != mLeftInset) {
+ mLeftInset = insets.left;
+ applyMargins();
+ }
+ } else {
+ paddingChanged = insets.left != getPaddingLeft()
+ || insets.top != getPaddingTop()
+ || insets.bottom != getPaddingBottom();
+
+ if (insets.right != mRightInset) {
+ mRightInset = insets.right;
+ applyMargins();
+ }
+ }
+
+ // Drop top inset, apply left inset and pass through bottom inset.
+ if (paddingChanged) {
+ setPadding(mLeftInsetMode ? 0 : insets.left,
+ 0,
+ mLeftInsetMode ? insets.right : 0,
+ 0);
+ }
+ insets.left = 0;
+ insets.top = 0;
+ insets.right = 0;
+ } else {
+ boolean applyMargins = false;
+ if (mLeftInset != 0) {
+ mLeftInset = 0;
+ applyMargins = true;
+ }
+ if (mRightInset != 0) {
+ mRightInset = 0;
+ applyMargins = true;
+ }
+ if (applyMargins) {
+ applyMargins();
+ }
+ boolean changed = getPaddingLeft() != 0
+ || getPaddingRight() != 0
+ || getPaddingTop() != 0
+ || getPaddingBottom() != 0;
+ if (changed) {
+ setPadding(0, 0, 0, 0);
+ }
+ insets.top = 0;
+ }
+ return false;
+ }
+
+ private void applyMargins() {
+ final int N = getChildCount();
+ for (int i = 0; i < N; i++) {
+ View child = getChildAt(i);
+ if (child.getLayoutParams() instanceof InsetLayoutParams) {
+ InsetLayoutParams lp = (InsetLayoutParams) child.getLayoutParams();
+ if (!lp.ignoreRightInset) {
+ if (mLeftInsetMode && lp.leftMargin != mLeftInset) {
+ lp.leftMargin = mLeftInset;
+ if (lp.rightMargin != 0) {
+ lp.rightMargin = 0;
+ }
+ } else if (lp.rightMargin != mRightInset) {
+ lp.rightMargin = mRightInset;
+ if (lp.leftMargin != 0) {
+ lp.leftMargin = 0;
+ }
+ }
+ child.requestLayout();
+ }
+ }
+ }
+ }
+
+ @Override
+ public FrameLayout.LayoutParams generateLayoutParams(AttributeSet attrs) {
+ return new InsetLayoutParams(getContext(), attrs);
+ }
+
+ @Override
+ protected FrameLayout.LayoutParams generateDefaultLayoutParams() {
+ return new InsetLayoutParams(InsetLayoutParams.MATCH_PARENT,
+ InsetLayoutParams.MATCH_PARENT);
+ }
+
+ private class SettingsObserver extends UserContentObserver {
+
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.NAVBAR_LEFT_IN_LANDSCAPE), false,
+ this, UserHandle.USER_CURRENT);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ protected void update() {
+ boolean before = mLeftInsetMode;
+ mLeftInsetMode = CMSettings.System.getIntForUser(mContext.getContentResolver(),
+ CMSettings.System.NAVBAR_LEFT_IN_LANDSCAPE, 0, UserHandle.USER_CURRENT) == 1;
+ if (mLeftInsetMode != before) {
+ applyMargins();
+ }
+ }
+ }
+
+ public static class InsetLayoutParams extends FrameLayout.LayoutParams {
+
+ public boolean ignoreRightInset;
+
+ public InsetLayoutParams(int width, int height) {
+ super(width, height);
+ }
+
+ public InsetLayoutParams(Context c, AttributeSet attrs) {
+ super(c, attrs);
+
+ TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.StatusBarWindowView_Layout);
+ ignoreRightInset = a.getBoolean(
+ R.styleable.StatusBarWindowView_Layout_ignoreRightInset, false);
+ a.recycle();
+ }
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavbarEditor.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavbarEditor.java
new file mode 100644
index 0000000..7b4d7f9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavbarEditor.java
@@ -0,0 +1,580 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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.systemui.statusbar.phone;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.DisplayMetrics;
+import android.view.DisplayInfo;
+import android.view.HapticFeedbackConstants;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.KeyButtonView;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import cyanogenmod.providers.CMSettings;
+
+/**
+ * Handles the editing of the navigation bar
+ * @author Danesh M
+ * @hide
+ */
+public class NavbarEditor implements View.OnTouchListener {
+ /**
+ * Holds reference to all assignable button ids
+ */
+ private static final int[] BUTTON_IDS =
+ { R.id.one, R.id.two, R.id.three, R.id.four, R.id.five, R.id.six };
+
+ /**
+ * Subset of BUTTON_IDS, to differentiate small/side buttons
+ * since they can be assigned additional functionality.
+ */
+ private static final int[] SMALL_BUTTON_IDS = { R.id.one, R.id.six };
+
+ // holds the button views in the order they currently appear on screen
+ private final ArrayList<KeyButtonView> mButtonViews;
+ private final boolean mRtl;
+
+ private Context mContext;
+ private static Boolean sIsDevicePhone = null;
+ private boolean mInEditMode = false;
+
+ // Holds reference to the parent/root of the inflated view
+ private View mParent;
+
+ // Button chooser dialog
+ private AlertDialog mDialog;
+
+ // true == we're in landscape mode
+ private boolean mVertical;
+ // true == we're currently checking for long press
+ private boolean mLongPressed;
+ // start point of the current drag operation
+ private float mDragOrigin;
+
+ // just to avoid reallocations
+ private static final int[] sLocation = new int[2];
+
+ private Resources mResources;
+
+ /**
+ * Longpress runnable to assign buttons in edit mode
+ */
+ private Runnable mCheckLongPress = new Runnable() {
+ public void run() {
+ if (mInEditMode) {
+ mLongPressed = true;
+ mParent.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+ }
+ }
+ };
+
+ //Available buttons
+ public static final ButtonInfo NAVBAR_EMPTY = new ButtonInfo("empty",
+ R.string.navbar_empty_button, R.string.accessibility_clear_all,
+ 0, R.drawable.ic_sysbar_add,
+ R.drawable.ic_sysbar_add_land, R.drawable.ic_sysbar_add_side);
+ public static final ButtonInfo NAVBAR_HOME = new ButtonInfo("home",
+ R.string.navbar_home_button, R.string.accessibility_home,
+ KeyEvent.KEYCODE_HOME, R.drawable.ic_sysbar_home,
+ R.drawable.ic_sysbar_home, R.drawable.ic_sysbar_home);
+ public static final ButtonInfo NAVBAR_BACK = new ButtonInfo("back",
+ R.string.navbar_back_button, R.string.accessibility_back,
+ KeyEvent.KEYCODE_BACK, R.drawable.ic_sysbar_back,
+ R.drawable.ic_sysbar_back, R.drawable.ic_sysbar_back_side);
+ public static final ButtonInfo NAVBAR_SEARCH = new ButtonInfo("search",
+ R.string.navbar_search_button, R.string.accessibility_back,
+ KeyEvent.KEYCODE_SEARCH, R.drawable.ic_sysbar_search,
+ R.drawable.ic_sysbar_search_land, R.drawable.ic_sysbar_search_side);
+ public static final ButtonInfo NAVBAR_RECENT = new ButtonInfo("recent",
+ R.string.navbar_recent_button, R.string.accessibility_recent,
+ 0, R.drawable.ic_sysbar_recent,
+ R.drawable.ic_sysbar_recent, R.drawable.ic_sysbar_recent_side);
+ public static final ButtonInfo NAVBAR_CONDITIONAL_MENU = new ButtonInfo("menu0",
+ R.string.navbar_menu_conditional_button, R.string.accessibility_menu,
+ KeyEvent.KEYCODE_MENU, R.drawable.ic_sysbar_menu,
+ R.drawable.ic_sysbar_menu, R.drawable.ic_sysbar_menu);
+ public static final ButtonInfo NAVBAR_ALWAYS_MENU = new ButtonInfo("menu1",
+ R.string.navbar_menu_always_button, R.string.accessibility_menu,
+ KeyEvent.KEYCODE_MENU, R.drawable.ic_sysbar_menu,
+ R.drawable.ic_sysbar_menu, R.drawable.ic_sysbar_menu);
+ public static final ButtonInfo NAVBAR_MENU_BIG = new ButtonInfo("menu2",
+ R.string.navbar_menu_big_button, R.string.accessibility_menu,
+ KeyEvent.KEYCODE_MENU, R.drawable.ic_sysbar_menu_big,
+ R.drawable.ic_sysbar_menu_big_land, 0);
+ public static final ButtonInfo NAVBAR_DPAD_LEFT = new ButtonInfo("dpad_left",
+ 0, R.string.accessibility_dpad_left,
+ KeyEvent.KEYCODE_DPAD_LEFT, 0,
+ 0, R.drawable.ic_sysbar_ime_left);
+ public static final ButtonInfo NAVBAR_DPAD_RIGHT = new ButtonInfo("dpad_right",
+ 0, R.string.accessibility_dpad_right,
+ KeyEvent.KEYCODE_DPAD_RIGHT, 0,
+ 0, R.drawable.ic_sysbar_ime_right);
+
+ private static final ButtonInfo[] ALL_BUTTONS = new ButtonInfo[] {
+ NAVBAR_EMPTY, NAVBAR_HOME, NAVBAR_BACK, NAVBAR_SEARCH,
+ NAVBAR_RECENT, NAVBAR_CONDITIONAL_MENU, NAVBAR_ALWAYS_MENU, NAVBAR_MENU_BIG
+ };
+
+ private static final String DEFAULT_SETTING_STRING = "empty|back|home|recent|empty|menu0";
+
+ public NavbarEditor (View parent, boolean orientation, boolean isRtl, Resources res) {
+ mContext = parent.getContext();
+ mParent = parent;
+ mVertical = orientation;
+ mRtl = isRtl;
+ mResources = res;
+
+ mButtonViews = new ArrayList<KeyButtonView>();
+
+ KeyButtonView dpadLeft = (KeyButtonView) mParent.findViewById(R.id.dpad_left);
+ dpadLeft.setInfo(NAVBAR_DPAD_LEFT, orientation, true);
+ mButtonViews.add(dpadLeft);
+
+ for (int id : BUTTON_IDS) {
+ mButtonViews.add((KeyButtonView) mParent.findViewById(id));
+ }
+
+ KeyButtonView dpadRight = (KeyButtonView) mParent.findViewById(R.id.dpad_right);
+ dpadRight.setInfo(NAVBAR_DPAD_RIGHT, orientation, true);
+ mButtonViews.add(dpadRight);
+ }
+
+ public void setEditMode(boolean editMode) {
+ mInEditMode = editMode;
+ for (Integer id : BUTTON_IDS) {
+ KeyButtonView button = (KeyButtonView) mParent.findViewById(id);
+ if (button != null) {
+ button.setEditMode(editMode);
+ button.setOnTouchListener(editMode ? this : null);
+ }
+ }
+ if (!editMode && mDialog != null && mDialog.isShowing()) {
+ mDialog.dismiss();
+ }
+ }
+
+ public static boolean isDevicePhone(Context context) {
+ if (sIsDevicePhone == null) {
+ WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ DisplayInfo outDisplayInfo = new DisplayInfo();
+
+ wm.getDefaultDisplay().getDisplayInfo(outDisplayInfo);
+
+ int shortSize = Math.min(outDisplayInfo.logicalHeight, outDisplayInfo.logicalWidth);
+ int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / outDisplayInfo.logicalDensityDpi;
+
+ // 0-599dp: "phone" UI with a separate status & navigation bar
+ sIsDevicePhone = shortSizeDp < 600;
+ }
+
+ return sIsDevicePhone;
+ }
+
+ /**
+ * Find intersecting view in mButtonViews
+ * @param pos - pointer location
+ * @param v - view being dragged
+ * @return intersecting view or null
+ */
+ private View findInterceptingView(float pos, View v) {
+ for (KeyButtonView otherView : mButtonViews) {
+ if (otherView == v) {
+ continue;
+ }
+
+ if (ArrayUtils.contains(SMALL_BUTTON_IDS, otherView.getId())) {
+ continue;
+ }
+
+ otherView.getLocationOnScreen(sLocation);
+ float otherPos = sLocation[mVertical ? 1 : 0];
+ float otherDimension = mVertical ? v.getHeight() : v.getWidth();
+
+ if (pos > (otherPos + otherDimension / 4) && pos < (otherPos + otherDimension)) {
+ return otherView;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean onTouch(final View view, MotionEvent event) {
+ if (!mInEditMode || (mDialog != null && mDialog.isShowing())) {
+ return false;
+ }
+
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ view.setPressed(true);
+ view.getLocationOnScreen(sLocation);
+ mDragOrigin = sLocation[mVertical ? 1 : 0];
+ view.postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
+ } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
+ view.setPressed(false);
+
+ if (!mLongPressed || ArrayUtils.contains(SMALL_BUTTON_IDS, view.getId())) {
+ return false;
+ }
+
+ ViewGroup viewParent = (ViewGroup) view.getParent();
+ float pos = mVertical ? event.getRawY() : event.getRawX();
+ float buttonSize = mVertical ? view.getHeight() : view.getWidth();
+ float min = mVertical ? viewParent.getTop() : (viewParent.getLeft() - buttonSize / 2);
+ float max = mVertical ? (viewParent.getTop() + viewParent.getHeight())
+ : (viewParent.getLeft() + viewParent.getWidth());
+
+ // Prevents user from dragging view outside of bounds
+ if (pos < min || pos > max) {
+ return false;
+ }
+ if (!mVertical) {
+ view.setX(pos - viewParent.getLeft() - buttonSize / 2);
+ } else {
+ view.setY(pos - viewParent.getTop() - buttonSize / 2);
+ }
+ View affectedView = findInterceptingView(pos, view);
+ if (affectedView == null) {
+ return false;
+ }
+ switchId(affectedView, view);
+ } else if (event.getAction() == MotionEvent.ACTION_UP
+ || event.getAction() == MotionEvent.ACTION_CANCEL) {
+ view.setPressed(false);
+ view.removeCallbacks(mCheckLongPress);
+
+ if (!mLongPressed && !view.getTag().equals(NAVBAR_HOME) &&
+ !view.getTag().equals(NAVBAR_RECENT) && !view.getTag().equals(NAVBAR_BACK)) {
+ final boolean isSmallButton = ArrayUtils.contains(SMALL_BUTTON_IDS, view.getId());
+ final ButtonAdapter list = new ButtonAdapter(mContext, mButtonViews, isSmallButton,
+ getResources());
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(mContext)
+ .setTitle(mContext.getString(R.string.navbar_dialog_title))
+ .setAdapter(list, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ KeyButtonView button = (KeyButtonView) view;
+ ButtonInfo info = list.getItem(which);
+
+ button.setInfo(info, mVertical, isSmallButton);
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+
+ mDialog = builder.create();
+ mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
+ mDialog.setCanceledOnTouchOutside(false);
+ mDialog.show();
+ } else {
+ // Reset the dragged view to its original location
+ ViewGroup parent = (ViewGroup) view.getParent();
+
+ if (!mVertical) {
+ view.setX(mDragOrigin - parent.getLeft());
+ } else {
+ view.setY(mDragOrigin - parent.getTop());
+ }
+ }
+ mLongPressed = false;
+ }
+ return true;
+ }
+
+ /**
+ * Switches positions of two views and
+ * updates their mButtonViews entry
+ * @param targetView - view to be replaced
+ * @param view - view being dragged
+ */
+ private void switchId(View targetView, View view) {
+ ViewGroup parent = (ViewGroup) view.getParent();
+
+ targetView.getLocationOnScreen(sLocation);
+ if (!mVertical) {
+ targetView.setX(mDragOrigin - parent.getLeft());
+ mDragOrigin = sLocation[0];
+ } else {
+ targetView.setY(mDragOrigin - parent.getTop());
+ mDragOrigin = sLocation[1];
+ }
+
+ int targetIndex = mButtonViews.indexOf(targetView);
+ int draggedIndex = mButtonViews.indexOf(view);
+ Collections.swap(mButtonViews, draggedIndex, targetIndex);
+ }
+
+ /**
+ * Saves the current key arrangement
+ * to the settings provider
+ */
+ protected void saveKeys() {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < BUTTON_IDS.length; i++) {
+ int idIndex = mVertical && !mRtl ? BUTTON_IDS.length - (i + 1) : i;
+ ButtonInfo info = (ButtonInfo) mButtonViews.get(idIndex).getTag();
+ if (i != 0) sb.append("|");
+ sb.append(info.key);
+ }
+ CMSettings.System.putStringForUser(mContext.getContentResolver(),
+ CMSettings.System.NAV_BUTTONS, sb.toString(), UserHandle.USER_CURRENT);
+ }
+
+ /**
+ * Updates the buttons according to the
+ * key arrangement stored in settings provider
+ */
+ protected void updateKeys() {
+ String saved = CMSettings.System.getStringForUser(mContext.getContentResolver(),
+ CMSettings.System.NAV_BUTTONS, UserHandle.USER_CURRENT);
+ if (saved == null) {
+ saved = DEFAULT_SETTING_STRING;
+ }
+
+ String[] buttons = saved.split("\\|");
+ if (buttons.length < BUTTON_IDS.length) {
+ buttons = DEFAULT_SETTING_STRING.split("\\|");
+ }
+
+ int visibleCount = 0;
+
+ for (int i = 0; i < BUTTON_IDS.length; i++) {
+ int id = BUTTON_IDS[i];
+ int index = mVertical && !mRtl ? BUTTON_IDS.length - i - 1 : i;
+ String key = index < buttons.length ? buttons[index] : null;
+ KeyButtonView buttonView = (KeyButtonView) mParent.findViewById(id);
+ boolean isSmallButton = ArrayUtils.contains(SMALL_BUTTON_IDS, id);
+ ButtonInfo button = NAVBAR_EMPTY;
+
+ for (ButtonInfo info : ALL_BUTTONS) {
+ if (info.key.equals(key)) {
+ button = info;
+ break;
+ }
+ }
+
+ buttonView.setInfo(button, mVertical, isSmallButton, getResources());
+ if (button != NAVBAR_EMPTY && !isSmallButton) {
+ visibleCount++;
+ }
+
+ buttonView.setTranslationX(0);
+ mButtonViews.set(i, buttonView);
+ }
+
+ if (isDevicePhone(mContext)) {
+ adjustPadding(visibleCount);
+ }
+ updateLowLights(visibleCount);
+ }
+
+ /**
+ * Accommodates the padding between keys based on
+ * number of keys in use.
+ */
+ private void adjustPadding(int visibleCount) {
+ ViewGroup viewParent = (ViewGroup) mParent.findViewById(R.id.mid_nav_buttons);
+ int totalViews = viewParent.getChildCount();
+
+ for (int v = 0; v < totalViews; v++) {
+ View currentKey = viewParent.getChildAt(v);
+ if (!(currentKey instanceof KeyButtonView)) {
+ continue;
+ }
+ View nextPadding = viewParent.getChildAt(v + 1);
+ if (nextPadding == null) {
+ continue;
+ }
+
+ View nextKey = viewParent.getChildAt(v + 2);
+ ButtonInfo nextInfo = nextKey == null ? null : (ButtonInfo) nextKey.getTag();
+ ButtonInfo currentInfo = (ButtonInfo) currentKey.getTag();
+
+ if (nextInfo != null && currentInfo != null && currentInfo != NAVBAR_EMPTY) {
+ if (nextInfo != NAVBAR_EMPTY || visibleCount > 1) {
+ nextPadding.setVisibility(View.VISIBLE);
+ } else {
+ nextPadding.setVisibility(View.GONE);
+ }
+ visibleCount--;
+ } else {
+ nextPadding.setVisibility(View.GONE);
+ }
+ }
+ }
+
+ protected void updateLowLights(int visibleCount) {
+ ViewGroup lowLights = (ViewGroup) mParent.findViewById(R.id.lights_out);
+ int totalViews = lowLights.getChildCount();
+
+ for (int v = 0;v < totalViews; v++) {
+ View currentView = lowLights.getChildAt(v);
+ if (!(currentView instanceof ImageView)) {
+ continue;
+ }
+
+ if (visibleCount <= 0) {
+ currentView.setVisibility(View.GONE);
+ } else {
+ currentView.setVisibility(View.VISIBLE);
+ visibleCount--;
+ }
+
+ View blank = lowLights.getChildAt(v + 1);
+ if (blank != null) {
+ blank.setVisibility(visibleCount > 0 ? View.VISIBLE : View.GONE);
+ }
+ }
+ }
+
+ private Resources getResources() {
+ return mResources != null ? mResources : mContext.getResources();
+ }
+
+ public void updateResources(Resources res) {
+ mResources = res;
+ }
+
+ /**
+ * Class to store info about supported buttons
+ */
+ public static final class ButtonInfo {
+ private final String key;
+ public int displayId;
+ public int contentDescription;
+ public int keyCode;
+ public int portResource;
+ public int landResource;
+ public int sideResource;
+ /**
+ * Constructor for new button type
+ * @param key - the internal key of the button
+ * @param rId - resource id of text shown to user in choose dialog
+ * @param cD - accessibility information regarding button
+ * @param mC - keyCode to execute on button press
+ * @param pR - portrait resource used to display button
+ * @param lR - landscape resource used to display button
+ * @param sR - smaller scaled resource for side buttons
+ */
+ ButtonInfo (String key, int rId, int cD, int mC, int pR, int lR, int sR) {
+ this.key = key;
+ displayId = rId;
+ contentDescription = cD;
+ keyCode = mC;
+ portResource = pR;
+ landResource = lR;
+ sideResource = sR;
+ }
+
+ @Override
+ public String toString() {
+ return "ButtonInfo[" + key + "]";
+ }
+ }
+
+ private static class ButtonAdapter extends ArrayAdapter<ButtonInfo> {
+ private ArrayList<ButtonInfo> mTakenItems;
+ private Resources mResources;
+
+ public ButtonAdapter(Context context,
+ ArrayList<KeyButtonView> buttons, boolean smallButtons, Resources resources) {
+ super(context, R.layout.navigation_bar_edit_menu_item, R.id.key_text,
+ buildItems(smallButtons));
+
+ mTakenItems = new ArrayList<ButtonInfo>();
+ for (KeyButtonView button : buttons) {
+ ButtonInfo info = (ButtonInfo) button.getTag();
+ if (info != null && info != NAVBAR_EMPTY) {
+ mTakenItems.add(info);
+ }
+ }
+ mResources = resources;
+ }
+
+ private static List<ButtonInfo> buildItems(boolean smallButtons) {
+ List<ButtonInfo> items = new ArrayList<ButtonInfo>(Arrays.asList(ALL_BUTTONS));
+
+ // Not re-assignable
+ items.remove(NAVBAR_HOME);
+ items.remove(NAVBAR_RECENT);
+ items.remove(NAVBAR_BACK);
+ // menu buttons can only be assigned to side buttons
+ if (!smallButtons) {
+ items.remove(NAVBAR_CONDITIONAL_MENU);
+ items.remove(NAVBAR_ALWAYS_MENU);
+ } else {
+ items.remove(NAVBAR_MENU_BIG);
+ }
+
+ return items;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view = super.getView(position, convertView, parent);
+ ButtonInfo info = getItem(position);
+ boolean enabled = isEnabled(position);
+
+ TextView text = (TextView) view.findViewById(R.id.key_text);
+ text.setText(getContext().getResources().getString(info.displayId));
+ text.setEnabled(enabled);
+
+ ImageView icon = (ImageView) view.findViewById(R.id.key_icon);
+ icon.setImageDrawable(mResources.getDrawable(info.portResource));
+ icon.setColorFilter(new PorterDuffColorFilter(
+ text.getCurrentTextColor(), PorterDuff.Mode.SRC_IN));
+
+ return view;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return !mTakenItems.contains(getItem(position));
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java
index 134c579..50656ed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java
@@ -35,7 +35,10 @@ public final class NavigationBarTransitions extends BarTransitions {
private boolean mLightsOut;
public NavigationBarTransitions(NavigationBarView view) {
- super(view, R.drawable.nav_background);
+ super(view, R.drawable.nav_background, R.color.navigation_bar_background_opaque,
+ R.color.navigation_bar_background_semi_transparent,
+ R.color.navigation_bar_background_transparent,
+ com.android.internal.R.color.battery_saver_mode_color);
mView = view;
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 8046eb5..c10f45b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -23,19 +23,25 @@ import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.app.ActivityManagerNative;
import android.app.StatusBarManager;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Display;
-import android.view.Gravity;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.View;
@@ -43,7 +49,6 @@ import android.view.ViewGroup;
import android.view.ViewRootImpl;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -53,7 +58,8 @@ import com.android.systemui.statusbar.policy.KeyButtonView;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.ArrayList;
+
+import cyanogenmod.providers.CMSettings;
public class NavigationBarView extends LinearLayout {
final static boolean DEBUG = false;
@@ -69,26 +75,56 @@ public class NavigationBarView extends LinearLayout {
int mBarSize;
boolean mVertical;
boolean mScreenOn;
+ boolean mLeftInLandscape;
boolean mShowMenu;
int mDisabledFlags = 0;
int mNavigationIconHints = 0;
- private Drawable mBackIcon, mBackLandIcon, mBackAltIcon, mBackAltLandIcon;
+ private BackButtonDrawable mBackIcon, mBackLandIcon;
private Drawable mRecentIcon;
private Drawable mRecentLandIcon;
+ private Drawable mHomeIcon, mHomeLandIcon;
private NavigationBarViewTaskSwitchHelper mTaskSwitchHelper;
private DeadZone mDeadZone;
private final NavigationBarTransitions mBarTransitions;
+ /**
+ * Tracks the current visibilities of the far left (R.id.one) and right (R.id.six) buttons
+ * while dpad arrow keys are visible.
+ *
+ * We keep track of the orientations separately because they can get in different states,
+ * We can be showing dpad arrow keys on vertical, but on portrait that may not be so.
+ */
+ public int[][] mSideButtonVisibilities = new int[][] {
+ {-1, -1} /* portrait */, {-1, -1} /* vertical */
+ };
+
+
// workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288)
final static boolean WORKAROUND_INVALID_LAYOUT = true;
final static int MSG_CHECK_INVALID_LAYOUT = 8686;
+ final static String NAVBAR_EDIT_ACTION = "android.intent.action.NAVBAR_EDIT";
+
+ private boolean mInEditMode;
+ private NavbarEditor mEditBar;
+ private NavBarReceiver mNavBarReceiver;
+ private OnClickListener mRecentsClickListener;
+ private OnTouchListener mRecentsPreloadListener;
+ private OnTouchListener mHomeSearchActionListener;
+ private OnLongClickListener mRecentsBackListener;
+ private OnLongClickListener mLongPressHomeListener;
+
+ private SettingsObserver mSettingsObserver;
+ private boolean mShowDpadArrowKeys;
+
// performs manual animation in sync with layout transitions
private final NavTransitionListener mTransitionListener = new NavTransitionListener();
+ private Resources mThemedResources;
+
private OnVerticalChangedListener mOnVerticalChangedListener;
private boolean mIsLayoutRtl;
private boolean mLayoutTransitionsEnabled = true;
@@ -104,9 +140,9 @@ public class NavigationBarView extends LinearLayout {
@Override
public void startTransition(LayoutTransition transition, ViewGroup container,
View view, int transitionType) {
- if (view.getId() == R.id.back) {
+ if (NavbarEditor.NAVBAR_BACK.equals(view.getTag())) {
mBackTransitioning = true;
- } else if (view.getId() == R.id.home && transitionType == LayoutTransition.APPEARING) {
+ } else if (NavbarEditor.NAVBAR_HOME.equals(view.getTag()) && transitionType == LayoutTransition.APPEARING) {
mHomeAppearing = true;
mStartDelay = transition.getStartDelay(transitionType);
mDuration = transition.getDuration(transitionType);
@@ -117,9 +153,9 @@ public class NavigationBarView extends LinearLayout {
@Override
public void endTransition(LayoutTransition transition, ViewGroup container,
View view, int transitionType) {
- if (view.getId() == R.id.back) {
+ if (NavbarEditor.NAVBAR_BACK.equals(view.getTag())) {
mBackTransitioning = false;
- } else if (view.getId() == R.id.home && transitionType == LayoutTransition.APPEARING) {
+ } else if (NavbarEditor.NAVBAR_HOME.equals(view.getTag()) && transitionType == LayoutTransition.APPEARING) {
mHomeAppearing = false;
}
}
@@ -176,7 +212,7 @@ public class NavigationBarView extends LinearLayout {
mDisplay = ((WindowManager)context.getSystemService(
Context.WINDOW_SERVICE)).getDefaultDisplay();
- final Resources res = getContext().getResources();
+ final Resources res = getResources();
mBarSize = res.getDimensionPixelSize(R.dimen.navigation_bar_size);
mVertical = false;
mShowMenu = false;
@@ -185,6 +221,11 @@ public class NavigationBarView extends LinearLayout {
getIcons(res);
mBarTransitions = new NavigationBarTransitions(this);
+
+ mNavBarReceiver = new NavBarReceiver();
+ getContext().registerReceiverAsUser(mNavBarReceiver, UserHandle.ALL,
+ new IntentFilter(NAVBAR_EDIT_ACTION), null, null);
+ mSettingsObserver = new SettingsObserver(new Handler());
}
@Override
@@ -194,6 +235,13 @@ public class NavigationBarView extends LinearLayout {
if (root != null) {
root.setDrawDuringWindowsAnimating(true);
}
+ mSettingsObserver.observe();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mSettingsObserver.unobserve();
}
public BarTransitions getBarTransitions() {
@@ -211,7 +259,7 @@ public class NavigationBarView extends LinearLayout {
@Override
public boolean onTouchEvent(MotionEvent event) {
- if (mTaskSwitchHelper.onTouchEvent(event)) {
+ if (!mInEditMode && mTaskSwitchHelper.onTouchEvent(event)) {
return true;
}
if (mDeadZone != null && event.getAction() == MotionEvent.ACTION_OUTSIDE) {
@@ -222,7 +270,7 @@ public class NavigationBarView extends LinearLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
- return mTaskSwitchHelper.onInterceptTouchEvent(event);
+ return !mInEditMode && mTaskSwitchHelper.onInterceptTouchEvent(event);
}
public void abortCurrentGesture() {
@@ -236,19 +284,19 @@ public class NavigationBarView extends LinearLayout {
}
public View getRecentsButton() {
- return mCurrentView.findViewById(R.id.recent_apps);
+ return mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_RECENT);
}
public View getMenuButton() {
- return mCurrentView.findViewById(R.id.menu);
+ return mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_CONDITIONAL_MENU);
}
public View getBackButton() {
- return mCurrentView.findViewById(R.id.back);
+ return mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_BACK);
}
public KeyButtonView getHomeButton() {
- return (KeyButtonView) mCurrentView.findViewById(R.id.home);
+ return (KeyButtonView) mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_HOME);
}
public View getImeSwitchButton() {
@@ -256,17 +304,51 @@ public class NavigationBarView extends LinearLayout {
}
private void getIcons(Resources res) {
- mBackIcon = res.getDrawable(R.drawable.ic_sysbar_back);
- mBackLandIcon = mBackIcon;
- mBackAltIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime);
- mBackAltLandIcon = mBackAltIcon;
+ mBackIcon = new BackButtonDrawable(res.getDrawable(R.drawable.ic_sysbar_back));
+ mBackLandIcon = mBackIcon;
mRecentIcon = res.getDrawable(R.drawable.ic_sysbar_recent);
mRecentLandIcon = mRecentIcon;
+ mHomeIcon = res.getDrawable(R.drawable.ic_sysbar_home);
+ mHomeLandIcon = mHomeIcon;
+ }
+
+ public void updateResources(Resources res) {
+ mThemedResources = res;
+ getIcons(mThemedResources);
+ mBarTransitions.updateResources(res);
+ for (int i = 0; i < mRotatedViews.length; i++) {
+ ViewGroup container = (ViewGroup) mRotatedViews[i];
+ if (container != null) {
+ updateLightsOutResources(container);
+ }
+ }
+ if (mEditBar != null) {
+ mEditBar.updateResources(res);
+ }
+ }
+
+ private void updateLightsOutResources(ViewGroup container) {
+ ViewGroup lightsOut = (ViewGroup) container.findViewById(R.id.lights_out);
+ if (lightsOut != null) {
+ final int nChildren = lightsOut.getChildCount();
+ for (int i = 0; i < nChildren; i++) {
+ final View child = lightsOut.getChildAt(i);
+ if (child instanceof ImageView) {
+ final ImageView iv = (ImageView) child;
+ // clear out the existing drawable, this is required since the
+ // ImageView keeps track of the resource ID and if it is the same
+ // it will not update the drawable.
+ iv.setImageDrawable(null);
+ iv.setImageDrawable(mThemedResources.getDrawable(
+ R.drawable.ic_sysbar_lights_out_dot_large));
+ }
+ }
+ }
}
@Override
public void setLayoutDirection(int layoutDirection) {
- getIcons(getContext().getResources());
+ getIcons(getResources());
super.setLayoutDirection(layoutDirection);
}
@@ -294,19 +376,74 @@ public class NavigationBarView extends LinearLayout {
mNavigationIconHints = hints;
- ((ImageView)getBackButton()).setImageDrawable(backAlt
- ? (mVertical ? mBackAltLandIcon : mBackAltIcon)
- : (mVertical ? mBackLandIcon : mBackIcon));
+ ((ImageView)getBackButton()).setImageDrawable(null);
+ ((ImageView)getBackButton()).setImageDrawable(mVertical ? mBackLandIcon : mBackIcon);
+ mBackLandIcon.setImeVisible(backAlt);
+ mBackIcon.setImeVisible(backAlt);
((ImageView)getRecentsButton()).setImageDrawable(mVertical ? mRecentLandIcon : mRecentIcon);
+ ((ImageView)getHomeButton()).setImageDrawable(mVertical ? mHomeLandIcon : mHomeIcon);
- final boolean showImeButton = ((hints & StatusBarManager.NAVIGATION_HINT_IME_SHOWN) != 0);
+ final boolean showImeButton = ((hints & StatusBarManager.NAVIGATION_HINT_IME_SHOWN) != 0)
+ && !mShowDpadArrowKeys;
getImeSwitchButton().setVisibility(showImeButton ? View.VISIBLE : View.INVISIBLE);
+
+ setDisabledFlags(mDisabledFlags, true);
+
// Update menu button in case the IME state has changed.
setMenuVisibility(mShowMenu, true);
+ if (mShowDpadArrowKeys) { // overrides IME button
+ final boolean showingIme = ((mNavigationIconHints
+ & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0);
- setDisabledFlags(mDisabledFlags, true);
+ setVisibleOrGone(getCurrentView().findViewById(R.id.dpad_left), showingIme);
+ setVisibleOrGone(getCurrentView().findViewById(R.id.dpad_right), showingIme);
+
+ View one = getCurrentView().findViewById(mVertical ? R.id.six : R.id.one);
+ View six = getCurrentView().findViewById(mVertical ? R.id.one : R.id.six);
+ if (showingIme) {
+ if (one.getVisibility() != View.GONE) {
+ setSideButtonVisibility(true, one.getVisibility());
+ setVisibleOrGone(one, false);
+ }
+
+ if (six.getVisibility() != View.GONE) {
+ setSideButtonVisibility(false, six.getVisibility());
+ setVisibleOrGone(six, false);
+ }
+ } else {
+ if (getSideButtonVisibility(true) != -1) {
+ one.setVisibility(getSideButtonVisibility(true));
+ setSideButtonVisibility(true, - 1);
+ }
+ if (getSideButtonVisibility(false) != -1) {
+ six.setVisibility(getSideButtonVisibility(false));
+ setSideButtonVisibility(false, -1);
+ }
+ }
+ } else {
+ setVisibleOrGone(getCurrentView().findViewById(R.id.dpad_left), false);
+ setVisibleOrGone(getCurrentView().findViewById(R.id.dpad_right), false);
+ View one = getCurrentView().findViewById(mVertical ? R.id.six : R.id.one);
+ View six = getCurrentView().findViewById(mVertical ? R.id.one : R.id.six);
+ if (getSideButtonVisibility(true) != -1) {
+ one.setVisibility(getSideButtonVisibility(true));
+ setSideButtonVisibility(true, - 1);
+ }
+ if (getSideButtonVisibility(false) != -1) {
+ six.setVisibility(getSideButtonVisibility(false));
+ setSideButtonVisibility(false, -1);
+ }
+ }
+ }
+
+ private int getSideButtonVisibility(boolean left) {
+ return mSideButtonVisibilities[mVertical ? 1 : 0][left ? 0 : 1];
+ }
+
+ private void setSideButtonVisibility(boolean left, int vis) {
+ mSideButtonVisibilities[mVertical ? 1 : 0][left ? 0 : 1] = vis;
}
public void setDisabledFlags(int disabledFlags) {
@@ -343,9 +480,10 @@ public class NavigationBarView extends LinearLayout {
disableRecent = false;
}
- getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
- getHomeButton() .setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
- getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_BACK, !disableBack);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_HOME, !disableHome);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_RECENT, !disableRecent);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_SEARCH, !disableSearch);
}
private boolean inLockTask() {
@@ -436,18 +574,19 @@ public class NavigationBarView extends LinearLayout {
// Only show Menu if IME switcher not shown.
final boolean shouldShow = mShowMenu &&
((mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_IME_SHOWN) == 0);
- getMenuButton().setVisibility(shouldShow ? View.VISIBLE : View.INVISIBLE);
+ final boolean shouldShowAlwaysMenu = (mNavigationIconHints &
+ StatusBarManager.NAVIGATION_HINT_IME_SHOWN) == 0;
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_ALWAYS_MENU, shouldShowAlwaysMenu);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_CONDITIONAL_MENU, shouldShow);
+ setButtonWithTagVisibility(NavbarEditor.NAVBAR_SEARCH, shouldShowAlwaysMenu);
}
@Override
public void onFinishInflate() {
mRotatedViews[Surface.ROTATION_0] =
- mRotatedViews[Surface.ROTATION_180] = findViewById(R.id.rot0);
-
+ mRotatedViews[Surface.ROTATION_180] = findViewById(R.id.rot0);
mRotatedViews[Surface.ROTATION_90] = findViewById(R.id.rot90);
-
mRotatedViews[Surface.ROTATION_270] = mRotatedViews[Surface.ROTATION_90];
-
mCurrentView = mRotatedViews[Surface.ROTATION_0];
getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
@@ -459,6 +598,11 @@ public class NavigationBarView extends LinearLayout {
return mVertical;
}
+ public void setLeftInLandscape(boolean leftInLandscape) {
+ mLeftInLandscape = leftInLandscape;
+ mDeadZone.setStartFromRight(leftInLandscape);
+ }
+
public void reorient() {
final int rot = mDisplay.getRotation();
for (int i=0; i<4; i++) {
@@ -466,11 +610,22 @@ public class NavigationBarView extends LinearLayout {
}
mCurrentView = mRotatedViews[rot];
mCurrentView.setVisibility(View.VISIBLE);
+
updateLayoutTransitionsEnabled();
+ if (NavbarEditor.isDevicePhone(getContext())) {
+ int rotation = mDisplay.getRotation();
+ mVertical = rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
+ } else {
+ mVertical = getWidth() > 0 && getHeight() > getWidth();
+ }
+ mEditBar = new NavbarEditor(mCurrentView, mVertical, mIsLayoutRtl, getResources());
+ updateSettings();
+
getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
mDeadZone = (DeadZone) mCurrentView.findViewById(R.id.deadzone);
+ mDeadZone.setStartFromRight(mLeftInLandscape);
// force the low profile & disabled states into compliance
mBarTransitions.init();
@@ -529,55 +684,8 @@ public class NavigationBarView extends LinearLayout {
boolean isLayoutRtl = getResources().getConfiguration()
.getLayoutDirection() == LAYOUT_DIRECTION_RTL;
if (mIsLayoutRtl != isLayoutRtl) {
-
- // We swap all children of the 90 and 270 degree layouts, since they are vertical
- View rotation90 = mRotatedViews[Surface.ROTATION_90];
- swapChildrenOrderIfVertical(rotation90.findViewById(R.id.nav_buttons));
- adjustExtraKeyGravity(rotation90, isLayoutRtl);
-
- View rotation270 = mRotatedViews[Surface.ROTATION_270];
- if (rotation90 != rotation270) {
- swapChildrenOrderIfVertical(rotation270.findViewById(R.id.nav_buttons));
- adjustExtraKeyGravity(rotation270, isLayoutRtl);
- }
mIsLayoutRtl = isLayoutRtl;
- }
- }
-
- private void adjustExtraKeyGravity(View navBar, boolean isLayoutRtl) {
- View menu = navBar.findViewById(R.id.menu);
- View imeSwitcher = navBar.findViewById(R.id.ime_switcher);
- if (menu != null) {
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) menu.getLayoutParams();
- lp.gravity = isLayoutRtl ? Gravity.BOTTOM : Gravity.TOP;
- menu.setLayoutParams(lp);
- }
- if (imeSwitcher != null) {
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imeSwitcher.getLayoutParams();
- lp.gravity = isLayoutRtl ? Gravity.BOTTOM : Gravity.TOP;
- imeSwitcher.setLayoutParams(lp);
- }
- }
-
- /**
- * Swaps the children order of a LinearLayout if it's orientation is Vertical
- *
- * @param group The LinearLayout to swap the children from.
- */
- private void swapChildrenOrderIfVertical(View group) {
- if (group instanceof LinearLayout) {
- LinearLayout linearLayout = (LinearLayout) group;
- if (linearLayout.getOrientation() == VERTICAL) {
- int childCount = linearLayout.getChildCount();
- ArrayList<View> childList = new ArrayList<>(childCount);
- for (int i = 0; i < childCount; i++) {
- childList.add(linearLayout.getChildAt(i));
- }
- linearLayout.removeAllViews();
- for (int i = childCount - 1; i >= 0; i--) {
- linearLayout.addView(childList.get(i));
- }
- }
+ reorient();
}
}
@@ -605,7 +713,7 @@ public class NavigationBarView extends LinearLayout {
private String getResourceName(int resId) {
if (resId != 0) {
- final android.content.res.Resources res = getContext().getResources();
+ final android.content.res.Resources res = getResources();
try {
return res.getResourceName(resId);
} catch (android.content.res.Resources.NotFoundException ex) {
@@ -671,9 +779,9 @@ public class NavigationBarView extends LinearLayout {
pw.print("null");
} else {
pw.print(PhoneStatusBar.viewInfo(button)
- + " " + visibilityToString(button.getVisibility())
- + " alpha=" + button.getAlpha()
- );
+ + " " + visibilityToString(button.getVisibility())
+ + " alpha=" + button.getAlpha()
+ );
}
pw.println();
}
@@ -681,4 +789,140 @@ public class NavigationBarView extends LinearLayout {
public interface OnVerticalChangedListener {
void onVerticalChanged(boolean isVertical);
}
+
+ void setListeners(OnClickListener recentsClickListener, OnTouchListener recentsPreloadListener,
+ OnLongClickListener recentsBackListener, OnTouchListener homeSearchActionListener,
+ OnLongClickListener longPressHomeListener) {
+ mRecentsClickListener = recentsClickListener;
+ mRecentsPreloadListener = recentsPreloadListener;
+ mHomeSearchActionListener = homeSearchActionListener;
+ mRecentsBackListener = recentsBackListener;
+ mLongPressHomeListener = longPressHomeListener;
+ updateButtonListeners();
+ }
+
+ private void removeButtonListeners() {
+ ViewGroup container = (ViewGroup) mCurrentView.findViewById(R.id.container);
+ int viewCount = container.getChildCount();
+ for (int i = 0; i < viewCount; i++) {
+ View button = container.getChildAt(i);
+ if (button instanceof KeyButtonView) {
+ button.setOnClickListener(null);
+ button.setOnTouchListener(null);
+ button.setLongClickable(false);
+ button.setOnLongClickListener(null);
+ }
+ }
+ }
+
+ protected void updateButtonListeners() {
+ View recentView = mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_RECENT);
+ if (recentView != null) {
+ recentView.setOnClickListener(mRecentsClickListener);
+ recentView.setOnTouchListener(mRecentsPreloadListener);
+ recentView.setLongClickable(true);
+ recentView.setOnLongClickListener(mRecentsBackListener);
+ }
+ View backView = mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_BACK);
+ if (backView != null) {
+ backView.setLongClickable(true);
+ backView.setOnLongClickListener(mRecentsBackListener);
+ }
+ View homeView = mCurrentView.findViewWithTag(NavbarEditor.NAVBAR_HOME);
+ if (homeView != null) {
+ homeView.setOnTouchListener(mHomeSearchActionListener);
+ homeView.setLongClickable(true);
+ homeView.setOnLongClickListener(mLongPressHomeListener);
+ }
+ }
+
+ public boolean isInEditMode() {
+ return mInEditMode;
+ }
+
+ private void setButtonWithTagVisibility(Object tag, boolean visible) {
+ View findView = mCurrentView.findViewWithTag(tag);
+ if (findView == null) {
+ return;
+ }
+ int visibility = visible ? View.VISIBLE : View.INVISIBLE;
+ // if we're showing dpad arrow keys (e.g. the side button visibility where it's shown != -1)
+ // then don't actually update that buttons visibility, but update the stored value
+ if (getSideButtonVisibility(true) != -1
+ && findView.getId() == (mVertical ? R.id.six : R.id.one)) {
+ setSideButtonVisibility(true, visibility);
+ } else if (getSideButtonVisibility(false) != -1
+ && findView.getId() == (mVertical ? R.id.one : R.id.six)) {
+ setSideButtonVisibility(false, visibility);
+ } else {
+ findView.setVisibility(visibility);
+ }
+ }
+
+ @Override
+ public Resources getResources() {
+ return mThemedResources != null ? mThemedResources : getContext().getResources();
+ }
+
+ public class NavBarReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ boolean edit = intent.getBooleanExtra("edit", false);
+ boolean save = intent.getBooleanExtra("save", false);
+ if (edit != mInEditMode) {
+ mInEditMode = edit;
+ if (edit) {
+ removeButtonListeners();
+ mEditBar.setEditMode(true);
+ } else {
+ if (save) {
+ mEditBar.saveKeys();
+ }
+ mEditBar.setEditMode(false);
+ updateSettings();
+ }
+ }
+ }
+ }
+
+ public void updateSettings() {
+ mEditBar.updateKeys();
+ removeButtonListeners();
+ updateButtonListeners();
+ updateShowDpadKeys();
+ setMenuVisibility(mShowMenu, true);
+ }
+
+ private class SettingsObserver extends ContentObserver {
+
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe() {
+ ContentResolver resolver = getContext().getContentResolver();
+ resolver.registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.NAVIGATION_BAR_MENU_ARROW_KEYS),
+ false, this);
+
+ // intialize mModlockDisabled
+ onChange(false);
+ }
+
+ public void unobserve() {
+ getContext().getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ super.onChange(selfChange, uri);
+ updateShowDpadKeys();
+ }
+ }
+
+ private void updateShowDpadKeys() {
+ mShowDpadArrowKeys = CMSettings.System.getIntForUser(getContext().getContentResolver(),
+ CMSettings.System.NAVIGATION_BAR_MENU_ARROW_KEYS, 0, UserHandle.USER_CURRENT) != 0;
+ setNavigationIconHints(mNavigationIconHints, true);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index bdd2c73..e4e02a7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -18,25 +18,41 @@ package com.android.systemui.statusbar.phone;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
+import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator;
+import android.content.ContentResolver;
import android.app.ActivityManager;
import android.app.StatusBarManager;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.Point;
import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.os.RemoteException;
+import android.preference.PreferenceManager;
import android.util.AttributeSet;
import android.util.MathUtils;
+import android.view.Display;
+import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.ViewTreeObserver;
import android.view.WindowInsets;
+import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
@@ -50,8 +66,9 @@ import com.android.systemui.DejankUtils;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
import com.android.systemui.R;
+import com.android.systemui.SwipeHelper;
import com.android.systemui.qs.QSContainer;
-import com.android.systemui.qs.QSPanel;
+import com.android.systemui.qs.QSDragPanel;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.ExpandableView;
import com.android.systemui.statusbar.FlingAnimationUtils;
@@ -61,16 +78,22 @@ import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
+import com.android.systemui.statusbar.policy.LiveLockScreenController;
+import com.android.systemui.statusbar.policy.WeatherController;
+import com.android.systemui.statusbar.policy.WeatherControllerImpl;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.StackStateAnimator;
+import cyanogenmod.providers.CMSettings;
+import cyanogenmod.weather.util.WeatherUtils;
+
import java.util.List;
public class NotificationPanelView extends PanelView implements
ExpandableView.OnHeightChangedListener, ObservableScrollView.Listener,
View.OnClickListener, NotificationStackScrollLayout.OnOverscrollTopChangedListener,
KeyguardAffordanceHelper.Callback, NotificationStackScrollLayout.OnEmptySpaceClickListener,
- HeadsUpManager.OnHeadsUpChangedListener {
+ HeadsUpManager.OnHeadsUpChangedListener, WeatherController.Callback {
private static final boolean DEBUG = false;
@@ -88,14 +111,26 @@ public class NotificationPanelView extends PanelView implements
private static final Rect mDummyDirtyRect = new Rect(0, 0, 1, 1);
+ private static final long SLIDE_PANEL_IN_ANIMATION_DURATION = 300;
+
+ private static final String KEY_USER_EXPANDED_NOTIFICATIONS_IN_KEYGUARD =
+ "user_expanded_notifications_in_keyguard";
+ private static final String KEY_USER_INTERACTED_WITH_LLS =
+ "user_interacted_with_lls";
+ private static final String KEY_USER_UNLOCKED =
+ "user_unlocked";
+ private static final String KEY_USER_RETURNED_FROM_LLS =
+ "user_returned_from_lls";
+
public static final long DOZE_ANIMATION_DURATION = 700;
+
private KeyguardAffordanceHelper mAfforanceHelper;
private StatusBarHeaderView mHeader;
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private KeyguardStatusBarView mKeyguardStatusBar;
private QSContainer mQsContainer;
- private QSPanel mQsPanel;
+ private QSDragPanel mQsPanel;
private KeyguardStatusView mKeyguardStatusView;
private ObservableScrollView mScrollView;
private TextView mClockView;
@@ -217,15 +252,201 @@ public class NotificationPanelView extends PanelView implements
private final Interpolator mTouchResponseInterpolator =
new PathInterpolator(0.3f, 0f, 0.1f, 1f);
+ private Handler mHandler = new Handler();
+ private SettingsObserver mSettingsObserver;
+
+ private int mOneFingerQuickSettingsIntercept;
+ private boolean mDoubleTapToSleepEnabled;
+ private int mStatusBarHeaderHeight;
+ private GestureDetector mDoubleTapGesture;
+
+ // Used to identify whether showUnlock() can dismiss the keyguard
+ // or not.
+ // TODO - add a new state to make it easier to identify keyguard vs
+ // LiveLockscreen
+ public boolean mCanDismissKeyguard;
+
+ // Used to track which direction the user is currently
+ // interacting with and ensure they don't alternate back
+ // and forth. Reset every MOTION_UP/MOTION_CANCEL
+ private SwipeLockedDirection mLockedDirection;
+
+ private SwipeHelper mSwipeHelper;
+ private final int mMinimumFlingVelocity;
+ private final int mScreenHeight;
+ private LiveLockScreenController mLiveLockscreenController;
+ private final GestureDetector mGestureDetector;
+ private ViewLinker mViewLinker;
+ private final UnlockMethodCache mUnlockMethodCache;
+ private boolean mDetailScrollLock;
+
+ private boolean mKeyguardWeatherEnabled;
+ private TextView mKeyguardWeatherInfo;
+ private WeatherControllerImpl mWeatherController;
+
+ // Keep track of common user interactions on the lock screen
+ private boolean mUserUnlocked;
+ private boolean mUserExpandedNotifications;
+ private boolean mUserInteractedWithLiveLockScreen;
+ private boolean mUserReturnedFromLiveLockScreen;
+
+ private boolean mScreenOnHintsEnabled;
+
+ private enum SwipeLockedDirection {
+ UNKNOWN,
+ HORIZONTAL,
+ VERTICAL
+ }
+
+ // Handles swiping to the LiveLockscreen from keyguard
+ SwipeHelper.SimpleCallback mSwipeCallback = new SwipeHelper.SimpleCallback() {
+ @Override
+ public View getChildAtPosition(MotionEvent ev) {
+ return mViewLinker.getParent();
+ }
+
+ @Override
+ public View getChildContentView(View v) {
+ return mViewLinker.getParent();
+ }
+
+ @Override
+ public boolean canChildBeDismissed(View v) {
+ return true;
+ }
+
+ @Override
+ public void onChildDismissed(View v) {
+ mCanDismissKeyguard = false;
+ mStatusBar.focusKeyguardExternalView();
+ mLiveLockscreenController.onLiveLockScreenFocusChanged(true /* hasFocus */);
+ if (!mUserInteractedWithLiveLockScreen) {
+ mUserInteractedWithLiveLockScreen = true;
+ saveUserInteractedWithLls(true);
+ }
+ if (!mUserReturnedFromLiveLockScreen) {
+ startShowNotificationsHintAnimation();
+ }
+ resetAlphaTranslation();
+ // Enables the left edge gesture to allow user
+ // to return to keyguard
+ try {
+ WindowManagerGlobal.getWindowManagerService()
+ .setLiveLockscreenEdgeDetector(true);
+ } catch (RemoteException e){
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public boolean updateSwipeProgress(View animView, boolean dismissable, float swipeProgress) {
+ // Let live lockscreen know of swipe progress to allow
+ // them to translate content in.
+ mLiveLockscreenController.getLiveLockScreenView()
+ .onLockscreenSlideOffsetChanged(swipeProgress);
+
+ // Fade out scrim background
+ float alpha = ScrimController.SCRIM_BEHIND_ALPHA_KEYGUARD - (1f - swipeProgress);
+ alpha = Math.max(0, alpha);
+ mStatusBar.getScrimController().setScrimBehindColor(alpha);
+ return false;
+ }
+
+ private void resetAlphaTranslation() {
+ mNotificationStackScroller.setTranslationX(0);
+ mNotificationStackScroller.setAlpha(1f);
+
+ mKeyguardStatusView.setTranslationX(0);
+ mKeyguardStatusView.setAlpha(1f);
+ }
+ };
+
public NotificationPanelView(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(!DEBUG);
+
+ mSettingsObserver = new SettingsObserver(mHandler);
+ mDoubleTapGesture = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
+ @Override
+ public boolean onDoubleTap(MotionEvent e) {
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ if(pm != null)
+ pm.goToSleep(e.getEventTime());
+ return true;
+ }
+ });
+
+ Resources res = getContext().getResources();
+ final int gradientStart = res.getColor(R.color.live_lockscreen_gradient_start);
+ final int gradientEnd = res.getColor(R.color.live_lockscreen_gradient_end);
+ mGestureDetector = new GestureDetector(getContext(),
+ new GestureDetector.SimpleOnGestureListener() {
+ private float mDown;
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ // Ensure we only capture swipes in the up direction
+ if (velocityY > 0 || Math.abs(velocityY) <= mMinimumFlingVelocity) {
+ return false;
+ }
+ mCanDismissKeyguard = true;
+ mStatusBar.showBouncer();
+ return true;
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
+ float delta = mDown - e2.getRawY();
+ delta = Math.max(0, delta);
+ float screenHeightHalf = (float) mScreenHeight / 2f;
+ int color = (Integer) ArgbEvaluator.getInstance()
+ .evaluate(delta / screenHeightHalf, gradientStart, gradientEnd);
+ mKeyguardBottomArea.setBackgroundColor(color);
+ return super.onScroll(e1, e2, distanceX, distanceY);
+ }
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ mDown = e.getRawY();
+ mKeyguardBottomArea.expand(true);
+ return true;
+ }
+ });
+
+ mSwipeHelper = new SwipeHelper(SwipeHelper.X,
+ SwipeHelper.SWIPE_ZONE_LEFT, mSwipeCallback, mContext);
+ mSwipeHelper.setSwipeProgressFadeEnd(1.0f);
+ mMinimumFlingVelocity = ViewConfiguration.get(getContext())
+ .getScaledMinimumFlingVelocity();
+
+ WindowManager windowManager = (WindowManager) mContext
+ .getSystemService(Context.WINDOW_SERVICE);
+ Display display = windowManager.getDefaultDisplay();
+ Point point = new Point();
+ display.getSize(point);
+ mScreenHeight = point.y;
+ mUnlockMethodCache = UnlockMethodCache.getInstance(context);
+
+ mScreenOnHintsEnabled = res.getBoolean(R.bool.config_showScreenOnLockScreenHints);
+ mUserUnlocked = getUserUnlocked();
+ mUserExpandedNotifications = getUserExpandedNotificationsInKeyguard();
+ mUserInteractedWithLiveLockScreen = getUserInteractedWithLls();
+ mUserReturnedFromLiveLockScreen = getUserReturnedFromLls();
}
public void setStatusBar(PhoneStatusBar bar) {
mStatusBar = bar;
}
+ public void setLiveController(LiveLockScreenController liveController) {
+ mLiveLockscreenController = liveController;
+ }
+
+ public void setWeatherController(WeatherControllerImpl weatherController) {
+ mWeatherController = weatherController;
+ mWeatherController.addCallback(this);
+ }
+
@Override
protected void onFinishInflate() {
super.onFinishInflate();
@@ -234,10 +455,10 @@ public class NotificationPanelView extends PanelView implements
mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header);
mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view);
mQsContainer = (QSContainer) findViewById(R.id.quick_settings_container);
- mQsPanel = (QSPanel) findViewById(R.id.quick_settings_panel);
+ mQsPanel = (QSDragPanel) findViewById(R.id.quick_settings_panel);
+ mQsPanel.setPanelView(this);
mClockView = (TextView) findViewById(R.id.clock_view);
mScrollView = (ObservableScrollView) findViewById(R.id.scroll_view);
- mScrollView.setListener(this);
mScrollView.setFocusable(false);
mReserveNotificationSpace = findViewById(R.id.reserve_notification_space);
mNotificationContainerParent = (NotificationsQuickSettingsContainer)
@@ -254,7 +475,64 @@ public class NotificationPanelView extends PanelView implements
android.R.interpolator.fast_out_linear_in);
mDozeAnimationInterpolator = AnimationUtils.loadInterpolator(getContext(),
android.R.interpolator.linear_out_slow_in);
- mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area);
+
+ mViewLinker = new ViewLinker<NotificationStackScrollLayout>(mNotificationStackScroller,
+ new ViewLinker.LinkInfo(mKeyguardStatusBar, ViewLinker.LINK_ALPHA),
+ new ViewLinker.LinkInfo(mKeyguardStatusView, ViewLinker.LINK_ALPHA
+ | ViewLinker.LINK_TRANSLATION));
+
+ mKeyguardBottomArea = (KeyguardBottomAreaView) View.inflate(getContext(),
+ R.layout.keyguard_bottom_area, null);
+ /** Keyguard bottom area lives in a separate window, and as such,
+ * we must redirect its touch events through the proper flow
+ */
+ mKeyguardBottomArea.setOnInterceptTouchListener(new KeyguardBottomAreaView.OnInterceptTouchEventListener() {
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent e) {
+ boolean intercept = false;
+ if (mLiveLockscreenController.getLiveLockScreenHasFocus()) {
+ // Handles swipe up to fade/dismiss when showing
+ // live lock screen
+ intercept = mAfforanceHelper.onInterceptTouchEvent(e);
+ if (!intercept) {
+ intercept = mGestureDetector.onTouchEvent(e);
+ }
+ } else {
+ intercept = NotificationPanelView.this.onInterceptTouchEvent(e);
+ }
+ return intercept;
+ }
+ });
+ mKeyguardBottomArea.setOnTouchListener(new OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent e) {
+ int action = e.getAction();
+
+ boolean isCancelOrUp = action == MotionEvent.ACTION_UP ||
+ action == MotionEvent.ACTION_CANCEL;
+ if (isCancelOrUp) {
+ mKeyguardBottomArea.setBackground(null);
+ }
+
+ boolean intercept = false;
+ if (mLiveLockscreenController.getLiveLockScreenHasFocus()) {
+ intercept = mAfforanceHelper.onTouchEvent(e);
+ // If the touch did not originate on the affordance helper,
+ // we must collapse the panel here since we can't rely on
+ // the swipe callbacks from being invoked.
+ if (isCancelOrUp && !isAffordanceSwipeInProgress()) {
+ mKeyguardBottomArea.expand(false);
+ }
+ if (!intercept) {
+ intercept = mGestureDetector.onTouchEvent(e);
+ }
+ } else {
+ intercept = NotificationPanelView.this.onTouchEvent(e);
+ }
+ return intercept;
+ }
+ });
+
mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim);
mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext());
mLastOrientation = getResources().getConfiguration().orientation;
@@ -271,6 +549,26 @@ public class NotificationPanelView extends PanelView implements
}
}
});
+
+ mKeyguardWeatherInfo = (TextView) mKeyguardStatusView.findViewById(R.id.weather_info);
+ }
+
+ public boolean isAffordanceSwipeInProgress() {
+ return mAfforanceHelper.isSwipingInProgress();
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mSettingsObserver.observe();
+ mScrollView.setListener(this);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mSettingsObserver.unobserve();
+ mWeatherController.removeCallback(this);
}
@Override
@@ -292,6 +590,7 @@ public class NotificationPanelView extends PanelView implements
R.dimen.qs_falsing_threshold);
mPositionMinSideMargin = getResources().getDimensionPixelSize(
R.dimen.notification_panel_min_side_margin);
+ mStatusBarHeaderHeight = getResources().getDimensionPixelSize(R.dimen.status_bar_header_height);
}
public void updateResources() {
@@ -382,6 +681,7 @@ public class NotificationPanelView extends PanelView implements
@Override
public void onAnimationEnd(Animator animation) {
mQsSizeChangeAnimator = null;
+ mQsContainer.setHeightOverride(-1);
}
});
mQsSizeChangeAnimator.start();
@@ -548,6 +848,10 @@ public class NotificationPanelView extends PanelView implements
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
+ // Reset locked direction
+ mLockedDirection = SwipeLockedDirection.UNKNOWN;
+ mCanDismissKeyguard = true;
+
if (mBlockTouches) {
return false;
}
@@ -558,10 +862,26 @@ public class NotificationPanelView extends PanelView implements
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
return true;
}
+ if (mQsPanel.isOnSettingsPage() && isInQsArea(event.getX(), event.getY(), false)
+ && mQsExpanded) {
+ mIntercepting = false;
+ // we explicitly do not intercept the touch event here to let the qs settings page
+ // scroll as necessary while not blocking horizontal swipes and allowing the panel
+ // to be collapsed when grabbed below the qs settings page as well.
+ return false;
+ }
if (!isFullyCollapsed() && onQsIntercept(event)) {
return true;
}
- return super.onInterceptTouchEvent(event);
+
+ if (isKeyguardInteractiveAndShowing() || mStatusBar.isKeyguardShowingMedia() ||
+ (mUnlockMethodCache.isTrustManaged() && mAfforanceHelper.isOnLockIcon(event))) {
+ return super.onInterceptTouchEvent(event);
+ }
+
+ // We want both, we really do
+ return mSwipeHelper.onInterceptTouchEvent(event)
+ & super.onInterceptTouchEvent(event);
}
private boolean onQsIntercept(MotionEvent event) {
@@ -716,6 +1036,17 @@ public class NotificationPanelView extends PanelView implements
if (mBlockTouches) {
return false;
}
+
+ int action = event.getActionMasked();
+ if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
+ mKeyguardBottomArea.setBackground(null);
+ }
+
+ if (mDoubleTapToSleepEnabled
+ && mStatusBarState == StatusBarState.KEYGUARD
+ && event.getY() < mStatusBarHeaderHeight) {
+ mDoubleTapGesture.onTouchEvent(event);
+ }
initDownStates(event);
if (mListenForHeadsUp && !mHeadsUpTouchHelper.isTrackingHeadsUp()
&& mHeadsUpTouchHelper.onInterceptTouchEvent(event)) {
@@ -724,7 +1055,8 @@ public class NotificationPanelView extends PanelView implements
}
if ((!mIsExpanding || mHintAnimationRunning)
&& !mQsExpanded
- && mStatusBar.getBarState() != StatusBarState.SHADE) {
+ && (mStatusBar.getBarState() != StatusBarState.SHADE
+ || mLiveLockscreenController.getLiveLockScreenHasFocus())) {
mAfforanceHelper.onTouchEvent(event);
}
if (mOnlyAffordanceInThisMotion) {
@@ -738,10 +1070,39 @@ public class NotificationPanelView extends PanelView implements
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
updateVerticalPanelPosition(event.getX());
}
- super.onTouchEvent(event);
+
+ if (isKeyguardInteractiveAndShowing() || mStatusBar.isKeyguardShowingMedia() ||
+ (mUnlockMethodCache.isTrustManaged() && mAfforanceHelper.isOnLockIcon(event))) {
+ super.onTouchEvent(event);
+ return true;
+ }
+
+ if ((!mIsExpanding || mHintAnimationRunning)
+ && !mQsExpanded
+ && mLockedDirection != SwipeLockedDirection.VERTICAL
+ && mStatusBar.getBarState() != StatusBarState.SHADE) {
+ mSwipeHelper.onTouchEvent(event);
+ if (mSwipeHelper.isDragging()) {
+ mLockedDirection = SwipeLockedDirection.HORIZONTAL;
+ }
+ if (mLockedDirection == SwipeLockedDirection.HORIZONTAL) {
+ requestDisallowInterceptTouchEvent(true);
+ return true;
+ }
+ }
+
+ if (super.onTouchEvent(event)) {
+ mLockedDirection = SwipeLockedDirection.VERTICAL;
+ }
return true;
}
+ private boolean isKeyguardInteractiveAndShowing() {
+ return mLiveLockscreenController.getLiveLockScreenHasFocus() ||
+ mStatusBar.getBarState() != StatusBarState.KEYGUARD ||
+ !mLiveLockscreenController.isLiveLockScreenInteractive();
+ }
+
private boolean handleQsTouch(MotionEvent event) {
final int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN && getExpandedFraction() == 1f
@@ -773,7 +1134,8 @@ public class NotificationPanelView extends PanelView implements
mTwoFingerQsExpandPossible = true;
}
if (mTwoFingerQsExpandPossible && isOpenQsEvent(event)
- && event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
+ && event.getY(event.getActionIndex()) < mStatusBarMinHeight
+ && mExpandedHeight <= mQsPeekHeight) {
MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1);
mQsExpandImmediate = true;
requestPanelHeightUpdate();
@@ -786,9 +1148,14 @@ public class NotificationPanelView extends PanelView implements
}
private boolean isInQsArea(float x, float y) {
+ return isInQsArea(x, y, true);
+ }
+
+ private boolean isInQsArea(float x, float y, boolean includeNotifications) {
return (x >= mScrollView.getX() && x <= mScrollView.getX() + mScrollView.getWidth()) &&
- (y <= mNotificationStackScroller.getBottomMostNotificationBottom()
- || y <= mQsContainer.getY() + mQsContainer.getHeight());
+ ((includeNotifications
+ && y <= mNotificationStackScroller.getBottomMostNotificationBottom())
+ || y <= mQsContainer.getY() + mQsContainer.getHeight());
}
private boolean isOpenQsEvent(MotionEvent event) {
@@ -806,12 +1173,27 @@ public class NotificationPanelView extends PanelView implements
&& (event.isButtonPressed(MotionEvent.BUTTON_SECONDARY)
|| event.isButtonPressed(MotionEvent.BUTTON_TERTIARY));
- return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag;
+ final float w = getMeasuredWidth();
+ final float x = event.getX();
+ float region = (w * (1.f/4.f)); // TODO overlay region fraction?
+ boolean showQsOverride = false;
+
+ switch (mOneFingerQuickSettingsIntercept) {
+ case 1: // Right side pulldown
+ showQsOverride = isLayoutRtl() ? (x < region) : (w - region < x);
+ break;
+ case 2: // Left side pulldown
+ showQsOverride = isLayoutRtl() ? (w - region < x) : (x < region);
+ break;
+ }
+ showQsOverride &= mStatusBarState == StatusBarState.SHADE;
+
+ return twoFingerDrag || showQsOverride || stylusButtonClickDrag || mouseButtonClickDrag;
}
private void handleQsDown(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN
- && shouldQuickSettingsIntercept(event.getX(), event.getY(), -1)) {
+ && shouldQuickSettingsIntercept(event.getX(), event.getRawY(), -1)) {
mQsTracking = true;
onQsExpansionStarted();
mInitialHeightOnTouch = mQsExpansionHeight;
@@ -893,8 +1275,13 @@ public class NotificationPanelView extends PanelView implements
mTrackingPointer = -1;
trackMovement(event);
float fraction = getQsExpansionFraction();
- if ((fraction != 0f || y >= mInitialTouchY)
- && (fraction != 1f || y <= mInitialTouchY)) {
+ final boolean fling = (fraction != 0f || y >= mInitialTouchY)
+ && (fraction != 1f || y <= mInitialTouchY);
+ final boolean flingExpand = Math.abs(getCurrentVelocity())
+ > mFlingAnimationUtils.getMinVelocityPxPerSecond();
+ final boolean detailFling = mDetailScrollLock && mQsExpanded
+ && flingExpand;
+ if ((fling && !mDetailScrollLock) || detailFling) {
flingQsWithCurrentVelocity(y,
event.getActionMasked() == MotionEvent.ACTION_CANCEL);
} else {
@@ -995,9 +1382,17 @@ public class NotificationPanelView extends PanelView implements
mStatusBarState = statusBarState;
mKeyguardShowing = keyguardShowing;
+ if (oldState != statusBarState && statusBarState == StatusBarState.KEYGUARD) {
+ mCanDismissKeyguard = true;
+ }
- if (goingToFullShade || (oldState == StatusBarState.KEYGUARD
- && statusBarState == StatusBarState.SHADE_LOCKED)) {
+ boolean keyguardToShadeLocked = oldState == StatusBarState.KEYGUARD
+ && statusBarState == StatusBarState.SHADE_LOCKED;
+ if (goingToFullShade || keyguardToShadeLocked) {
+ if (keyguardToShadeLocked && !mUserExpandedNotifications) {
+ mUserExpandedNotifications = true;
+ saveUserExpandedNotificationsInKeyguard(true);
+ }
animateKeyguardStatusBarOut();
animateHeaderSlidingIn();
} else if (oldState == StatusBarState.SHADE_LOCKED
@@ -1012,7 +1407,13 @@ public class NotificationPanelView extends PanelView implements
mAfforanceHelper.updatePreviews();
}
}
- if (keyguardShowing) {
+ if (oldState != StatusBarState.SHADE && statusBarState == StatusBarState.SHADE &&
+ !mUserUnlocked) {
+ mUserUnlocked = true;
+ saveUserUnlocked(true);
+ }
+ if (statusBarState == StatusBarState.KEYGUARD ||
+ statusBarState == StatusBarState.SHADE_LOCKED) {
updateDozingVisibilities(false /* animate */);
}
resetVerticalPanelPosition();
@@ -1289,8 +1690,7 @@ public class NotificationPanelView extends PanelView implements
if (mKeyguardShowing) {
updateHeaderKeyguard();
}
- if (mStatusBarState == StatusBarState.SHADE_LOCKED
- || mStatusBarState == StatusBarState.KEYGUARD) {
+ if (mStatusBarState == StatusBarState.KEYGUARD) {
updateKeyguardBottomAreaAlpha();
}
if (mStatusBarState == StatusBarState.SHADE && mQsExpanded
@@ -1469,8 +1869,10 @@ public class NotificationPanelView extends PanelView implements
View header = mKeyguardShowing ? mKeyguardStatusBar : mHeader;
boolean onHeader = x >= header.getX() && x <= header.getX() + header.getWidth()
&& y >= header.getTop() && y <= header.getBottom();
+
if (mQsExpanded) {
- return onHeader || (mScrollView.isScrolledToBottom() && yDiff < 0) && isInQsArea(x, y);
+ return onHeader || mDetailScrollLock
+ || (mScrollView.isScrolledToBottom() && yDiff < 0) && isInQsArea(x, y);
} else {
return onHeader;
}
@@ -1560,7 +1962,7 @@ public class NotificationPanelView extends PanelView implements
*/
private int getTempQsMaxExpansion() {
int qsTempMaxExpansion = mQsMaxExpansionHeight;
- if (mScrollYOverride != -1) {
+ if (mScrollYOverride != -1 && !mDetailScrollLock) {
qsTempMaxExpansion -= mScrollYOverride;
}
return qsTempMaxExpansion;
@@ -1727,6 +2129,9 @@ public class NotificationPanelView extends PanelView implements
}
private void updateHeaderKeyguardAlpha() {
+ if (mSwipeHelper.isDragging()) {
+ return;
+ }
float alphaQsExpansion = 1 - Math.min(1, getQsExpansionFraction() * 2);
mKeyguardStatusBar.setAlpha(Math.min(getKeyguardContentsAlpha(), alphaQsExpansion)
* mKeyguardStatusBarAnimateAlpha);
@@ -1741,6 +2146,9 @@ public class NotificationPanelView extends PanelView implements
private void updateKeyguardBottomAreaAlpha() {
float alpha = Math.min(getKeyguardContentsAlpha(), 1 - getQsExpansionFraction());
+ if (mLiveLockscreenController.getLiveLockScreenHasFocus()) {
+ alpha = 1f;
+ }
mKeyguardBottomArea.setAlpha(alpha);
mKeyguardBottomArea.setImportantForAccessibility(alpha == 0f
? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
@@ -1802,7 +2210,6 @@ public class NotificationPanelView extends PanelView implements
private void setListening(boolean listening) {
mHeader.setListening(listening);
- mKeyguardStatusBar.setListening(listening);
mQsPanel.setListening(listening);
}
@@ -1965,10 +2372,12 @@ public class NotificationPanelView extends PanelView implements
mLaunchAnimationEndRunnable.run();
mLaunchAnimationEndRunnable = null;
}
+ mKeyguardBottomArea.setVisibility(View.GONE);
}
@Override
protected void startUnlockHintAnimation() {
+ mKeyguardBottomArea.expand(true);
super.startUnlockHintAnimation();
startHighlightIconAnimation(getCenterIcon());
}
@@ -2003,11 +2412,13 @@ public class NotificationPanelView extends PanelView implements
requestDisallowInterceptTouchEvent(true);
mOnlyAffordanceInThisMotion = true;
mQsTracking = false;
+ mKeyguardBottomArea.expand(true);
}
@Override
public void onSwipingAborted() {
mKeyguardBottomArea.unbindCameraPrewarmService(false /* launched */);
+ mKeyguardBottomArea.expand(false);
}
@Override
@@ -2016,6 +2427,8 @@ public class NotificationPanelView extends PanelView implements
return;
}
mHintAnimationRunning = true;
+ mKeyguardBottomArea.expand(true);
+ mKeyguardBottomArea.getIndicationView().animate().cancel();
mAfforanceHelper.startHintAnimation(rightIcon, new Runnable() {
@Override
public void run() {
@@ -2025,13 +2438,9 @@ public class NotificationPanelView extends PanelView implements
});
rightIcon = getLayoutDirection() == LAYOUT_DIRECTION_RTL ? !rightIcon : rightIcon;
if (rightIcon) {
- mStatusBar.onCameraHintStarted();
+ mStatusBar.onCameraHintStarted(mKeyguardBottomArea.getRightHint());
} else {
- if (mKeyguardBottomArea.isLeftVoiceAssist()) {
- mStatusBar.onVoiceAssistHintStarted();
- } else {
- mStatusBar.onPhoneHintStarted();
- }
+ mStatusBar.onLeftHintStarted(mKeyguardBottomArea.getLeftHint());
}
}
@@ -2223,6 +2632,11 @@ public class NotificationPanelView extends PanelView implements
public void onScreenTurningOn() {
mKeyguardStatusView.refreshTime();
+ if (shouldShowScreenOnHints()) {
+ startScreenOnHintAnimation(mLiveLockscreenController.isLiveLockScreenInteractive() &&
+ !mUserInteractedWithLiveLockScreen,
+ !mUserUnlocked, !mUserExpandedNotifications);
+ }
}
@Override
@@ -2342,7 +2756,7 @@ public class NotificationPanelView extends PanelView implements
* @param x the x-coordinate the touch event
*/
private void updateVerticalPanelPosition(float x) {
- if (mNotificationStackScroller.getWidth() * 1.75f > getWidth()) {
+ if (mNotificationStackScroller.getWidth() * 1.75f >= getWidth()) {
resetVerticalPanelPosition();
return;
}
@@ -2384,6 +2798,58 @@ public class NotificationPanelView extends PanelView implements
return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway;
}
+ public KeyguardBottomAreaView getKeyguardBottomArea() {
+ return mKeyguardBottomArea;
+ }
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN), false, this);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this);
+ resolver.registerContentObserver(CMSettings.Secure.getUriFor(
+ CMSettings.Secure.LOCK_SCREEN_WEATHER_ENABLED), false, this);
+ update();
+ }
+
+ void unobserve() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
+
+ public void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mOneFingerQuickSettingsIntercept = CMSettings.System.getInt(
+ resolver, CMSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN, 1);
+ mDoubleTapToSleepEnabled = CMSettings.System.getInt(
+ resolver, CMSettings.System.DOUBLE_TAP_SLEEP_GESTURE, 1) == 1;
+
+ boolean wasKeyguardWeatherEnabled = mKeyguardWeatherEnabled;
+ mKeyguardWeatherEnabled = CMSettings.Secure.getInt(
+ resolver, CMSettings.Secure.LOCK_SCREEN_WEATHER_ENABLED, 0) == 1;
+ if (mWeatherController != null
+ && wasKeyguardWeatherEnabled != mKeyguardWeatherEnabled) {
+ onWeatherChanged(mWeatherController.getWeatherInfo());
+ }
+ }
+ }
+
@Override
public boolean hasOverlappingRendering() {
return !mDozing;
@@ -2394,6 +2860,8 @@ public class NotificationPanelView extends PanelView implements
mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP;
} else if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) {
mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_WIGGLE;
+ } else if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE) {
+ mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE;
} else {
// Default.
@@ -2403,7 +2871,8 @@ public class NotificationPanelView extends PanelView implements
// If we are launching it when we are occluded already we don't want it to animate,
// nor setting these flags, since the occluded state doesn't change anymore, hence it's
// never reset.
- if (!isFullyCollapsed()) {
+ if (!isFullyCollapsed() && mLastCameraLaunchSource ==
+ KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE) {
mLaunchingAffordance = true;
setLaunchingAffordance(true);
} else {
@@ -2451,4 +2920,159 @@ public class NotificationPanelView extends PanelView implements
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
return !tasks.isEmpty() && pkgName.equals(tasks.get(0).topActivity.getPackageName());
}
+
+ public void setDetailRequestedScrollLock(boolean detailScrollFlag) {
+ if (mDetailScrollLock != detailScrollFlag) {
+ if (mStatusBarState != StatusBarState.SHADE) {
+ mDetailScrollLock = false;
+ } else {
+ mDetailScrollLock = detailScrollFlag;
+ }
+ if (!detailScrollFlag && getQsExpansionFraction() > 0.3f) {
+ flingSettings(getCurrentVelocity(), true, new Runnable() {
+ @Override
+ public void run() {
+ mStackScrollerOverscrolling = false;
+ mQsExpansionFromOverscroll = false;
+ updateQsState();
+ updateHeader();
+ updateMaxHeadsUpTranslation();
+ updatePanelExpanded();
+ requestLayout();
+ }
+ }, false);
+ } else {
+ requestLayout();
+ }
+ }
+ }
+
+ @Override
+ public void onWeatherChanged(WeatherController.WeatherInfo info) {
+ if (!mKeyguardWeatherEnabled || Double.isNaN(info.temp) || info.condition == null) {
+ mKeyguardWeatherInfo.setVisibility(GONE);
+ } else {
+ mKeyguardWeatherInfo.setText(mContext.getString(
+ R.string.keyguard_status_view_weather_format,
+ WeatherUtils.formatTemperature(info.temp, info.tempUnit),
+ info.condition));
+ mKeyguardWeatherInfo.setVisibility(VISIBLE);
+ }
+ }
+
+ private class SlideInAnimationListener implements ValueAnimator.AnimatorUpdateListener,
+ ValueAnimator.AnimatorListener {
+ @Override
+ public void onAnimationStart(Animator animator) {}
+
+ @Override
+ public void onAnimationEnd(Animator animator) {
+ animationFinished(animator);
+ }
+
+ @Override
+ public void onAnimationCancel(Animator animator) {
+ animationFinished(animator);
+ }
+
+ @Override
+ public void onAnimationRepeat(Animator animator) {}
+
+ @Override
+ public void onAnimationUpdate(ValueAnimator valueAnimator) {
+ View statusBarView = mStatusBar.getStatusBarWindow();
+ if (valueAnimator.getAnimatedFraction() > 0 &&
+ statusBarView.getVisibility() != View.VISIBLE) {
+ statusBarView.setVisibility(View.VISIBLE);
+ }
+ float translationX = (Float) valueAnimator.getAnimatedValue();
+ float alpha = valueAnimator.getAnimatedFraction();
+
+ mViewLinker.getParent().setTranslationX(translationX);
+ mViewLinker.getParent().setAlpha(alpha);
+
+ float alpha1 = ScrimController.SCRIM_BEHIND_ALPHA_KEYGUARD * alpha;
+ alpha1 = Math.max(0, alpha1);
+ mStatusBar.getScrimController().setScrimBehindColor(alpha1);
+ mLiveLockscreenController.getLiveLockScreenView()
+ .onLockscreenSlideOffsetChanged(alpha);
+ }
+
+ private void animationFinished(Animator animator) {
+ mLiveLockscreenController.onLiveLockScreenFocusChanged(false);
+ }
+ }
+
+ private SlideInAnimationListener mSlideInAnimationListener = new SlideInAnimationListener();
+
+ public void slideLockScreenIn() {
+ mNotificationStackScroller.setVisibility(View.VISIBLE);
+ mNotificationStackScroller.setAlpha(0f);
+ mNotificationStackScroller.setTranslationX(-mNotificationStackScroller.getWidth());
+ mKeyguardStatusView.setVisibility(View.VISIBLE);
+ mKeyguardStatusView.setAlpha(0f);
+ mKeyguardStatusView.setTranslationX(mNotificationStackScroller.getTranslationX());
+ mKeyguardStatusBar.setAlpha(0f);
+
+ mStatusBar.getScrimController().setScrimBehindColor(0f);
+ ValueAnimator animator = ValueAnimator.ofFloat(
+ mNotificationStackScroller.getTranslationX(),
+ 0f);
+ animator.setDuration(SLIDE_PANEL_IN_ANIMATION_DURATION);
+ animator.addUpdateListener(mSlideInAnimationListener);
+ animator.addListener(mSlideInAnimationListener);
+ animator.start();
+
+ if (!mUserReturnedFromLiveLockScreen) {
+ mUserReturnedFromLiveLockScreen = true;
+ saveUserReturnedFromLls(true);
+ }
+ }
+
+ private void saveBooleanSharedPreference(String key, boolean value) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+ prefs.edit().putBoolean(key, value).apply();
+ }
+
+ private boolean getSharedPreferenceBoolean(String key, boolean defValue) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+ return prefs.getBoolean(key, defValue);
+ }
+
+ private void saveUserExpandedNotificationsInKeyguard(boolean expanded) {
+ saveBooleanSharedPreference(KEY_USER_EXPANDED_NOTIFICATIONS_IN_KEYGUARD, expanded);
+ }
+
+ private boolean getUserExpandedNotificationsInKeyguard() {
+ return getSharedPreferenceBoolean(KEY_USER_EXPANDED_NOTIFICATIONS_IN_KEYGUARD, false);
+ }
+
+ private void saveUserInteractedWithLls(boolean interacted) {
+ saveBooleanSharedPreference(KEY_USER_INTERACTED_WITH_LLS, interacted);
+ }
+
+ private boolean getUserInteractedWithLls() {
+ return getSharedPreferenceBoolean(KEY_USER_INTERACTED_WITH_LLS, false);
+ }
+
+ private void saveUserUnlocked(boolean unlocked) {
+ saveBooleanSharedPreference(KEY_USER_UNLOCKED, unlocked);
+ }
+
+ private boolean getUserUnlocked() {
+ return getSharedPreferenceBoolean(KEY_USER_UNLOCKED, false);
+ }
+
+ private void saveUserReturnedFromLls(boolean revealed) {
+ saveBooleanSharedPreference(KEY_USER_RETURNED_FROM_LLS, revealed);
+ }
+
+ private boolean getUserReturnedFromLls() {
+ return getSharedPreferenceBoolean(KEY_USER_RETURNED_FROM_LLS, false);
+ }
+
+ public boolean shouldShowScreenOnHints() {
+ return mScreenOnHintsEnabled && mStatusBar.isDeviceProvisioned() &&
+ mStatusBarState == StatusBarState.KEYGUARD;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index e03bcfb..3a2c84c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.phone;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
+import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Configuration;
@@ -26,6 +27,7 @@ import android.content.res.Resources;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
+import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewTreeObserver;
import android.view.animation.AnimationUtils;
@@ -47,6 +49,9 @@ public abstract class PanelView extends FrameLayout {
public static final boolean DEBUG = PanelBar.DEBUG;
public static final String TAG = PanelView.class.getSimpleName();
+ private static final long ANIMATION_FADE_DURATION = 1000L;
+ private static final long HINT_DELAY_DURATION = 1500L;
+
private final void logf(String fmt, Object... args) {
Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
}
@@ -86,6 +91,20 @@ public abstract class PanelView extends FrameLayout {
private VelocityTrackerInterface mVelocityTracker;
private FlingAnimationUtils mFlingAnimationUtils;
+ private boolean mUpdateExpandOnLayout;
+ private View.OnLayoutChangeListener mLayoutChangeListener = new OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ // update expand height
+ if (mHeightAnimator != null && mExpanding && mUpdateExpandOnLayout && !mJustPeeked) {
+ final int maxPanelHeight = getMaxPanelHeight();
+ final PropertyValuesHolder[] values = mHeightAnimator.getValues();
+ values[0].setFloatValues(maxPanelHeight);
+ }
+ }
+ };
+
/**
* Whether an instant expand request is currently pending and we are just waiting for layout.
*/
@@ -105,6 +124,9 @@ public abstract class PanelView extends FrameLayout {
private boolean mPeekPending;
private boolean mCollapseAfterPeek;
+ private boolean mShowExpandHint;
+ private boolean mShowUnlockHint;
+ private boolean mScreenOnHintAnimationRunning;
/**
* Speed-up factor to be used when {@link #mFlingCollapseRunnable} runs the next time.
@@ -122,6 +144,18 @@ public abstract class PanelView extends FrameLayout {
}
};
+ private ViewTreeObserver.OnGlobalLayoutListener mInstantExpandLayoutListener =
+ new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ if (mStatusBar.getStatusBarWindow().getHeight() != mStatusBar.getStatusBarHeight()) {
+ getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ setExpandedFraction(1f);
+ mInstantExpanding = false;
+ }
+ }
+ };
+
protected void onExpandingFinished() {
mBar.onExpandingFinished();
}
@@ -623,7 +657,7 @@ public abstract class PanelView extends FrameLayout {
flingToHeight(vel, expand, target, collapseSpeedUpFactor, expandBecauseOfFalsing);
}
- protected void flingToHeight(float vel, boolean expand, float target,
+ protected void flingToHeight(float vel, final boolean expand, float target,
float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) {
// Hack to make the expand transition look nice when clear all button is visible - we make
// the animation only to the last notification, and then jump to the maximum panel height so
@@ -644,8 +678,9 @@ public abstract class PanelView extends FrameLayout {
if (expandBecauseOfFalsing) {
vel = 0;
}
+ mUpdateExpandOnLayout = isFullyCollapsed();
mFlingAnimationUtils.apply(animator, mExpandedHeight, target, vel, getHeight());
- if (expandBecauseOfFalsing) {
+ if (expandBecauseOfFalsing && vel == 0) {
animator.setDuration(350);
}
} else {
@@ -659,16 +694,23 @@ public abstract class PanelView extends FrameLayout {
/ collapseSpeedUpFactor));
}
}
+
animator.addListener(new AnimatorListenerAdapter() {
private boolean mCancelled;
@Override
+ public void onAnimationStart(Animator animation) {
+ if (expand) PanelView.this.addOnLayoutChangeListener(mLayoutChangeListener);
+ }
+
+ @Override
public void onAnimationCancel(Animator animation) {
mCancelled = true;
}
@Override
public void onAnimationEnd(Animator animation) {
+ if (expand) PanelView.this.removeOnLayoutChangeListener(mLayoutChangeListener);
if (clearAllExpandHack && !mCancelled) {
setExpandedHeightInternal(getMaxPanelHeight());
}
@@ -874,18 +916,7 @@ public abstract class PanelView extends FrameLayout {
// Wait for window manager to pickup the change, so we know the maximum height of the panel
// then.
- getViewTreeObserver().addOnGlobalLayoutListener(
- new ViewTreeObserver.OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- if (mStatusBar.getStatusBarWindow().getHeight()
- != mStatusBar.getStatusBarHeight()) {
- getViewTreeObserver().removeOnGlobalLayoutListener(this);
- setExpandedFraction(1f);
- mInstantExpanding = false;
- }
- }
- });
+ getViewTreeObserver().addOnGlobalLayoutListener(mInstantExpandLayoutListener);
// Make sure a layout really happens.
requestLayout();
@@ -894,6 +925,7 @@ public abstract class PanelView extends FrameLayout {
public void instantCollapse() {
abortAnimations();
setExpandedFraction(0f);
+ getViewTreeObserver().removeOnGlobalLayoutListener(mInstantExpandLayoutListener);
if (mExpanding) {
notifyExpandingFinished();
}
@@ -902,6 +934,7 @@ public abstract class PanelView extends FrameLayout {
private void abortAnimations() {
cancelPeek();
cancelHeightAnimator();
+ mKeyguardBottomArea.getIndicationView().animate().cancel();
removeCallbacks(mPostCollapseRunnable);
removeCallbacks(mFlingCollapseRunnable);
}
@@ -920,6 +953,8 @@ public abstract class PanelView extends FrameLayout {
}
cancelPeek();
notifyExpandingStarted();
+ mKeyguardBottomArea.getIndicationView().animate().cancel();
+ mStatusBar.onUnlockHintStarted();
startUnlockHintAnimationPhase1(new Runnable() {
@Override
public void run() {
@@ -928,8 +963,8 @@ public abstract class PanelView extends FrameLayout {
mHintAnimationRunning = false;
}
});
- mStatusBar.onUnlockHintStarted();
mHintAnimationRunning = true;
+ mShowExpandHint = false;
}
/**
@@ -963,6 +998,7 @@ public abstract class PanelView extends FrameLayout {
mKeyguardBottomArea.getIndicationView().animate()
.translationY(-mHintDistance)
.setDuration(250)
+ .setStartDelay(0)
.setInterpolator(mFastOutSlowInInterpolator)
.withEndAction(new Runnable() {
@Override
@@ -985,17 +1021,213 @@ public abstract class PanelView extends FrameLayout {
animator.setDuration(450);
animator.setInterpolator(mBounceInterpolator);
animator.addListener(new AnimatorListenerAdapter() {
+ private boolean mCancelled;
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mCancelled = true;
+ }
+
@Override
public void onAnimationEnd(Animator animation) {
mHeightAnimator = null;
- onAnimationFinished.run();
- notifyBarPanelExpansionChanged();
+ if (mCancelled) {
+ onAnimationFinished.run();
+ } else {
+ if (mShowExpandHint) {
+ startUnlockHintFadeOutAnimationPhase(onAnimationFinished);
+ } else {
+ onAnimationFinished.run();
+ notifyBarPanelExpansionChanged();
+ }
+ }
}
});
animator.start();
mHeightAnimator = animator;
}
+ /**
+ * Fade in unlock hint
+ */
+ private void startUnlockHintFadeInAnimationPhase(final Runnable onAnimationFinished) {
+ mStatusBar.onUnlockHintStarted();
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(1)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setStartDelay(0)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ if (mShowExpandHint) {
+ startUnlockHintFadeOutAnimationPhase(onAnimationFinished);
+ } else {
+ onAnimationFinished.run();
+ notifyBarPanelExpansionChanged();
+ }
+ }
+ })
+ .start();
+ }
+
+ /**
+ * Fade out unlock hint
+ */
+ private void startUnlockHintFadeOutAnimationPhase(final Runnable onAnimationFinished) {
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(0)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setStartDelay(HINT_DELAY_DURATION)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ startExpandHintAnimation(onAnimationFinished);
+ }
+ })
+ .start();
+ }
+
+ /**
+ * Fade in Lls hint
+ */
+ private void startLlsHintFadeInAnimationPhase(final Runnable onAnimationFinished) {
+ mKeyguardBottomArea.getIndicationView().setAlpha(0);
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(1)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setStartDelay(0)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ if (mShowUnlockHint || mShowExpandHint) {
+ startLlsHintFadeOutAnimationPhase(onAnimationFinished);
+ } else {
+ onAnimationFinished.run();;
+ }
+ }
+ })
+ .start();
+ }
+
+ /**
+ * Fade out Lls hint
+ */
+ private void startLlsHintFadeOutAnimationPhase(final Runnable onAnimationFinished) {
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(0)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setStartDelay(HINT_DELAY_DURATION)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ if (mShowUnlockHint) {
+ startUnlockHintFadeInAnimationPhase(onAnimationFinished);
+ } else if (mShowExpandHint) {
+ startExpandHintAnimation(onAnimationFinished);
+ } else {
+ onAnimationFinished.run();
+ }
+ }
+ })
+ .start();
+ }
+
+ /**
+ * Fade in expand hint
+ */
+ private void startExpandHintAnimation(final Runnable onAnimationFinished) {
+ mStatusBar.onExpandHintStarted();
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(1)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setStartDelay(0)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ onAnimationFinished.run();
+ }
+ })
+ .start();
+ }
+
+ /**
+ * Show notifications hint (swipe right hint)
+ */
+ protected void startShowNotificationsHintAnimation() {
+ cancelPeek();
+ mStatusBar.onNotificationsHintStarted();
+ mHintAnimationRunning = true;
+ mKeyguardBottomArea.getIndicationView().setAlpha(0);
+ mKeyguardBottomArea.getIndicationView().animate()
+ .alpha(1)
+ .setDuration(ANIMATION_FADE_DURATION)
+ .setInterpolator(null)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ mStatusBar.onHintFinished();
+ mHintAnimationRunning = false;
+ }
+ })
+ .start();
+ }
+
+ protected void startScreenOnHintAnimation(boolean showSwipeLeftHint, boolean showUnlockHint,
+ boolean showExpandHint) {
+ // We don't need to hint the user if an animation is already running or the user is changing
+ // the expansion.
+ if (mHintAnimationRunning || mScreenOnHintAnimationRunning) return;
+
+ final View indicationView = mKeyguardBottomArea.getIndicationView();
+ indicationView.animate().cancel();
+ indicationView.animate().setListener(
+ new Animator.AnimatorListener() {
+ @Override
+ public void onAnimationStart(Animator animation) { }
+
+ @Override
+ public void onAnimationEnd(Animator animation) { }
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mScreenOnHintAnimationRunning = false;
+ indicationView.setAlpha(1f);
+ }
+
+ @Override
+ public void onAnimationRepeat(Animator animation) { }
+ });
+
+ Runnable r = new Runnable() {
+ @Override
+ public void run() {
+ mStatusBar.onHintFinished();
+ mScreenOnHintAnimationRunning = false;
+ }
+ };
+ if (showSwipeLeftHint) {
+ mStatusBar.onLlsHintStarted();
+ startLlsHintFadeInAnimationPhase(r);
+ } else if (showUnlockHint) {
+ mStatusBar.onUnlockHintStarted();
+ startUnlockHintFadeInAnimationPhase(r);
+ } else if (showExpandHint) {
+ mStatusBar.onExpandHintStarted();
+ startExpandHintAnimation(r);
+ } else {
+ return;
+ }
+ indicationView.setAlpha(0);
+ mShowUnlockHint = showUnlockHint;
+ mShowExpandHint = showExpandHint;
+ mScreenOnHintAnimationRunning = true;
+ }
+
private ValueAnimator createHeightAnimator(float targetHeight) {
ValueAnimator animator = ValueAnimator.ofFloat(mExpandedHeight, targetHeight);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 73361bd..7df8346 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -26,13 +26,20 @@ import android.app.IActivityManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.StatusBarManager;
+import android.app.WallpaperManager;
+import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentCallbacks2;
+import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
+import android.content.res.ThemeConfig;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.Bitmap;
@@ -54,10 +61,12 @@ import android.media.session.MediaSession;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.os.AsyncTask;
+import android.os.BatteryManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.IPowerManager;
import android.os.Message;
import android.os.PowerManager;
import android.os.Process;
@@ -75,44 +84,55 @@ import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Log;
+import android.util.Pair;
import android.view.Display;
import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.ThreadedRenderer;
import android.view.VelocityTracker;
import android.view.View;
+import android.view.WindowManagerGlobal;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewStub;
+import android.view.ViewTreeObserver;
import android.view.WindowManager;
-import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.PathInterpolator;
+import android.widget.AdapterView;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.internal.statusbar.StatusBarIcon;
+import com.android.internal.util.cm.ActionUtils;
import com.android.keyguard.KeyguardHostView.OnDismissAction;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.BatteryMeterView;
+import com.android.systemui.BatteryLevelTextView;
import com.android.systemui.DemoMode;
+import com.android.systemui.DockBatteryMeterView;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.assist.AssistManager;
+import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.keyguard.KeyguardViewMediator;
-import com.android.systemui.qs.QSPanel;
+import com.android.systemui.qs.QSDragPanel;
import com.android.systemui.recents.ScreenPinningRequest;
import com.android.systemui.statusbar.ActivatableNotificationView;
import com.android.systemui.statusbar.BackDropView;
@@ -124,40 +144,51 @@ import com.android.systemui.statusbar.EmptyShadeView;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.GestureRecorder;
import com.android.systemui.statusbar.KeyguardIndicationController;
+import com.android.systemui.statusbar.MediaExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.NotificationOverflowContainer;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.SpeedBumpView;
+import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.VisualizerView;
import com.android.systemui.statusbar.phone.UnlockMethodCache.OnUnlockMethodChangedListener;
import com.android.systemui.statusbar.policy.AccessibilityController;
import com.android.systemui.statusbar.policy.BatteryController;
-import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
+import com.android.systemui.statusbar.policy.BatteryStateRegistar.BatteryStateChangeCallback;
import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.statusbar.policy.CastControllerImpl;
+import com.android.systemui.statusbar.policy.DockBatteryController;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HotspotControllerImpl;
import com.android.systemui.statusbar.policy.KeyButtonView;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
+import com.android.systemui.statusbar.policy.LiveLockScreenController;
import com.android.systemui.statusbar.policy.LocationControllerImpl;
+import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkControllerImpl;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.PreviewInflater;
import com.android.systemui.statusbar.policy.RotationLockControllerImpl;
import com.android.systemui.statusbar.policy.SecurityControllerImpl;
+import com.android.systemui.statusbar.policy.SuControllerImpl;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
+import com.android.systemui.statusbar.policy.WeatherControllerImpl;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackViewState;
import com.android.systemui.volume.VolumeComponent;
+import cyanogenmod.app.CMContextConstants;
+import cyanogenmod.app.CustomTileListenerService;
+import cyanogenmod.app.StatusBarPanelCustomTile;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -183,6 +214,9 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCE
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
+import cyanogenmod.providers.CMSettings;
+import cyanogenmod.themes.IThemeService;
+
public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
HeadsUpManager.OnHeadsUpChangedListener {
@@ -231,6 +265,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build();
+ private static final float BRIGHTNESS_CONTROL_PADDING = 0.15f;
+ private static final int BRIGHTNESS_CONTROL_LONG_PRESS_TIMEOUT = 750; // ms
+ private static final int BRIGHTNESS_CONTROL_LINGER_THRESHOLD = 20;
+
public static final int FADE_KEYGUARD_START_DELAY = 100;
public static final int FADE_KEYGUARD_DURATION = 300;
public static final int FADE_KEYGUARD_DURATION_PULSING = 96;
@@ -258,7 +296,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// These are no longer handled by the policy, because we need custom strategies for them
BluetoothControllerImpl mBluetoothController;
SecurityControllerImpl mSecurityController;
+ BatteryManager mBatteryManager;
BatteryController mBatteryController;
+ DockBatteryController mDockBatteryController;
LocationControllerImpl mLocationController;
NetworkControllerImpl mNetworkController;
HotspotControllerImpl mHotspotController;
@@ -274,7 +314,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
KeyguardMonitor mKeyguardMonitor;
BrightnessMirrorController mBrightnessMirrorController;
AccessibilityController mAccessibilityController;
+ WeatherControllerImpl mWeatherController;
+ SuControllerImpl mSuController;
FingerprintUnlockController mFingerprintUnlockController;
+ LiveLockScreenController mLiveLockScreenController;
int mNaturalBarHeight = -1;
@@ -282,7 +325,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Point mCurrentDisplaySize = new Point();
StatusBarWindowView mStatusBarWindow;
- PhoneStatusBarView mStatusBarView;
+ FrameLayout mStatusBarWindowContent;
+ private PhoneStatusBarView mStatusBarView;
private int mStatusBarWindowState = WINDOW_STATE_SHOWING;
private StatusBarWindowManager mStatusBarWindowManager;
private UnlockMethodCache mUnlockMethodCache;
@@ -290,6 +334,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private boolean mWakeUpComingFromTouch;
private PointF mWakeUpTouchLocation;
private boolean mScreenTurningOn;
+ private BatteryMeterView mBatteryView;
+ private BatteryLevelTextView mBatteryTextView;
int mPixelFormat;
Object mQueueLock = new Object();
@@ -302,7 +348,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
TextView mNotificationPanelDebugText;
// settings
- private QSPanel mQSPanel;
+ private QSDragPanel mQSPanel;
+ private QSTileHost mQSTileHost;
+ private DevForceNavbarObserver mDevForceNavbarObserver;
// top bar
StatusBarHeaderView mHeader;
@@ -316,15 +364,20 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private boolean mKeyguardGoingAway;
// Keyguard is actually fading away now.
private boolean mKeyguardFadingAway;
+ private boolean mKeyguardShowingMedia;
private long mKeyguardFadingAwayDelay;
private long mKeyguardFadingAwayDuration;
+ private Bitmap mKeyguardWallpaper;
+
int mKeyguardMaxNotificationCount;
boolean mExpandedVisible;
private int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
+ private int mStatusBarHeaderHeight;
+
// the tracker view
int mTrackingPosition; // the position of the top of the tracking view.
@@ -335,6 +388,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
int[] mAbsPos = new int[2];
ArrayList<Runnable> mPostCollapseRunnables = new ArrayList<>();
+ private boolean mAutomaticBrightness;
+ private boolean mBrightnessControl;
+ private boolean mBrightnessChanged;
+ private float mScreenWidth;
+ private int mMinBrightness;
+ private boolean mJustPeeked;
+ int mLinger;
+ int mInitialTouchX;
+ int mInitialTouchY;
+
+ private boolean mRecreating = false;
+
// for disabling the status bar
int mDisabled1 = 0;
int mDisabled2 = 0;
@@ -357,6 +422,127 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private int mNavigationIconHints = 0;
private HandlerThread mHandlerThread;
+ private IThemeService mThemeService;
+ private long mLastThemeChangeTime = 0;
+
+ Runnable mLongPressBrightnessChange = new Runnable() {
+ @Override
+ public void run() {
+ mStatusBarView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
+ adjustBrightness(mInitialTouchX);
+ mLinger = BRIGHTNESS_CONTROL_LINGER_THRESHOLD + 1;
+ }
+ };
+
+ // Custom Recents Long Press
+ // - Tracks Event state for custom (user-configurable) Long Presses.
+ private boolean mCustomRecentsLongPressed = false;
+ // - The ArrayList is updated when packages are added and removed.
+ private List<ComponentName> mCustomRecentsLongPressHandlerCandidates = new ArrayList<>();
+ // - The custom Recents Long Press, if selected. When null, use default (switch last app).
+ private ComponentName mCustomRecentsLongPressHandler = null;
+
+ class SettingsObserver extends UserContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_BRIGHTNESS_CONTROL), false, this,
+ UserHandle.USER_ALL);
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.SCREEN_BRIGHTNESS_MODE), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.NAVBAR_LEFT_IN_LANDSCAPE), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY), false, this);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ int mode = Settings.System.getIntForUser(mContext.getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL,
+ UserHandle.USER_CURRENT);
+ mAutomaticBrightness = mode != Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+ mBrightnessControl = CMSettings.System.getIntForUser(
+ resolver, CMSettings.System.STATUS_BAR_BRIGHTNESS_CONTROL, 0,
+ UserHandle.USER_CURRENT) == 1;
+
+ if (mNavigationBarView != null) {
+ boolean navLeftInLandscape = CMSettings.System.getIntForUser(resolver,
+ CMSettings.System.NAVBAR_LEFT_IN_LANDSCAPE, 0, UserHandle.USER_CURRENT) == 1;
+ mNavigationBarView.setLeftInLandscape(navLeftInLandscape);
+ }
+
+ // This method reads CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY
+ updateCustomRecentsLongPressHandler(false);
+ }
+ }
+
+ public void setStatusBarViewVisibility(boolean visible) {
+ mStatusBarView.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ class DevForceNavbarObserver extends UserContentObserver {
+ DevForceNavbarObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.Global.getUriFor(
+ CMSettings.Global.DEV_FORCE_SHOW_NAVBAR), false, this, UserHandle.USER_ALL);
+ }
+
+ @Override
+ public void update() {
+ boolean visible = CMSettings.Global.getIntForUser(mContext.getContentResolver(),
+ CMSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0, UserHandle.USER_CURRENT) == 1;
+
+ if (visible) {
+ forceAddNavigationBar();
+ } else {
+ removeNavigationBar();
+ }
+
+ // Send a broadcast to Settings to update Key disabling when user changes
+ Intent intent = new Intent("com.cyanogenmod.action.UserChanged");
+ intent.setPackage("com.android.settings");
+ mContext.sendBroadcastAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
+ }
+ }
+
+ private void forceAddNavigationBar() {
+ // If we have no Navbar view and we should have one, create it
+ if (mNavigationBarView != null) {
+ return;
+ }
+
+ mNavigationBarView =
+ (NavigationBarView) View.inflate(mContext, R.layout.navigation_bar, null);
+
+ mNavigationBarView.setDisabledFlags(mDisabled1);
+ mNavigationBarView.setBar(this);
+ addNavigationBar(true); // dynamically adding nav bar, reset System UI visibility!
+ }
+
// ensure quick settings is disabled until the current user makes it through the setup wizard
private boolean mUserSetup = false;
private ContentObserver mUserSetupObserver = new ContentObserver(new Handler()) {
@@ -438,6 +624,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private PorterDuffXfermode mSrcXferMode = new PorterDuffXfermode(PorterDuff.Mode.SRC);
private PorterDuffXfermode mSrcOverXferMode = new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER);
+ private VisualizerView mVisualizerView;
+ private boolean mScreenOn;
+
private MediaSessionManager mMediaSessionManager;
private MediaController mMediaController;
private String mMediaNotificationKey;
@@ -453,6 +642,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
clearCurrentMediaNotification();
updateMediaMetaData(true);
}
+ mVisualizerView.setPlaying(state.getState() == PlaybackState.STATE_PLAYING);
}
}
@@ -603,6 +793,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private RankingMap mLatestRankingMap;
private boolean mNoAnimationOnNextBarModeChange;
+ public ScrimController getScrimController() {
+ return mScrimController;
+ }
+
@Override
public void start() {
mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
@@ -611,6 +805,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mScrimSrcModeEnabled = mContext.getResources().getBoolean(
R.bool.config_status_bar_scrim_behind_use_src);
+ ThemeConfig currentTheme = mContext.getResources().getConfiguration().themeConfig;
+ if (currentTheme != null) {
+ mCurrentTheme = (ThemeConfig)currentTheme.clone();
+ } else {
+ mCurrentTheme = ThemeConfig.getBootTheme(mContext.getContentResolver());
+ }
+
+ mStatusBarWindow = new StatusBarWindowView(mContext, null);
+ mStatusBarWindow.setService(this);
+
super.start(); // calls createAndAddWindows()
mMediaSessionManager
@@ -618,11 +822,25 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// TODO: use MediaSessionManager.SessionListener to hook us up to future updates
// in session state
- addNavigationBar();
+ addNavigationBar(false);
+
+ // Developer options - Force Navigation bar
+ try {
+ boolean needsNav = mWindowManagerService.needsNavigationBar();
+ if (!needsNav) {
+ mDevForceNavbarObserver = new DevForceNavbarObserver(mHandler);
+ mDevForceNavbarObserver.observe();
+ }
+ } catch (RemoteException ex) {
+ // no window manager? good luck with that
+ }
+
+ SettingsObserver observer = new SettingsObserver(mHandler);
+ observer.observe();
// Lastly, call to the icon policy to install/update all the icons.
mIconPolicy = new PhoneStatusBarPolicy(mContext, mCastController, mHotspotController,
- mUserInfoController, mBluetoothController);
+ mUserInfoController, mBluetoothController, mSuController);
mIconPolicy.setCurrentUserSetup(mUserSetup);
mSettingsObserver.onChange(false); // set up
@@ -635,6 +853,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Settings.Global.getUriFor(SETTING_HEADS_UP_TICKER), true,
mHeadsUpObserver);
}
+
+ WallpaperManager wallpaperManager = (WallpaperManager) mContext.getSystemService(
+ Context.WALLPAPER_SERVICE);
+ mKeyguardWallpaper = wallpaperManager.getKeyguardBitmap();
+
mUnlockMethodCache = UnlockMethodCache.getInstance(mContext);
mUnlockMethodCache.addListener(this);
startKeyguard();
@@ -649,6 +872,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
notifyUserAboutHiddenNotifications();
mScreenPinningRequest = new ScreenPinningRequest(mContext);
+
+ updateCustomRecentsLongPressHandler(true);
+
+ mThemeService = IThemeService.Stub.asInterface(ServiceManager.getService(
+ CMContextConstants.CM_THEME_SERVICE));
}
// ================================================================================
@@ -659,13 +887,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Resources res = context.getResources();
+ mScreenWidth = (float) res.getDisplayMetrics().widthPixels;
+ mMinBrightness = res.getInteger(com.android.internal.R.integer.config_screenBrightnessDim);
+
updateDisplaySize(); // populates mDisplayMetrics
- updateResources();
+ updateResources(null);
- mStatusBarWindow = (StatusBarWindowView) View.inflate(context,
+ mStatusBarWindowContent = (FrameLayout) View.inflate(context,
R.layout.super_status_bar, null);
mStatusBarWindow.setService(this);
- mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {
+ mStatusBarWindowContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
checkUserAutohide(v, event);
@@ -674,17 +905,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
animateCollapsePanels();
}
}
- return mStatusBarWindow.onTouchEvent(event);
+ return mStatusBarWindowContent.onTouchEvent(event);
}
});
- mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
+ mStatusBarView = (PhoneStatusBarView) mStatusBarWindowContent.findViewById(R.id.status_bar);
mStatusBarView.setBar(this);
- PanelHolder holder = (PanelHolder) mStatusBarWindow.findViewById(R.id.panel_holder);
+ PanelHolder holder = (PanelHolder) mStatusBarWindowContent.findViewById(R.id.panel_holder);
mStatusBarView.setPanelHolder(holder);
- mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById(
+ mNotificationPanel = (NotificationPanelView) mStatusBarWindowContent.findViewById(
R.id.notification_panel);
mNotificationPanel.setStatusBar(this);
@@ -693,8 +924,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mNotificationPanel.setBackground(new FastColorDrawable(context.getColor(
R.color.notification_panel_solid_background)));
}
+ mLiveLockScreenController = new LiveLockScreenController(mContext, this,
+ mNotificationPanel);
+ mNotificationPanel.setLiveController(mLiveLockScreenController);
+ if (mStatusBarWindowManager != null) {
+ mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
+ }
- mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow);
+ if (mHeadsUpManager == null) {
+ mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow);
+ }
mHeadsUpManager.setBar(this);
mHeadsUpManager.addListener(this);
mHeadsUpManager.addListener(mNotificationPanel);
@@ -710,9 +949,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
try {
boolean showNav = mWindowManagerService.hasNavigationBar();
if (DEBUG) Log.v(TAG, "hasNavigationBar=" + showNav);
- if (showNav) {
+ if (showNav && !mRecreating) {
mNavigationBarView =
(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);
+ mNavigationBarView.updateResources(getNavbarThemedResources());
mNavigationBarView.setDisabledFlags(mDisabled1);
mNavigationBarView.setBar(this);
@@ -737,12 +977,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// no window manager? good luck with that
}
- mAssistManager = new AssistManager(this, context);
+ if (mAssistManager == null) {
+ mAssistManager = new AssistManager(this, context);
+ }
+ if (mNavigationBarView == null) {
+ mAssistManager.onConfigurationChanged();
+ }
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
- mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(
+ mStackScroller = (NotificationStackScrollLayout) mStatusBarWindowContent.findViewById(
R.id.notification_stack_scroller);
mStackScroller.setLongPressListener(getNotificationLongClicker());
mStackScroller.setPhoneStatusBar(this);
@@ -775,13 +1020,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mStackScroller.setDismissView(mDismissView);
mExpandedContents = mStackScroller;
- mBackdrop = (BackDropView) mStatusBarWindow.findViewById(R.id.backdrop);
+ mBackdrop = (BackDropView) mStatusBarWindowContent.findViewById(R.id.backdrop);
mBackdropFront = (ImageView) mBackdrop.findViewById(R.id.backdrop_front);
mBackdropBack = (ImageView) mBackdrop.findViewById(R.id.backdrop_back);
- ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
- ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
- View headsUpScrim = mStatusBarWindow.findViewById(R.id.heads_up_scrim);
+ FrameLayout scrimView = (FrameLayout) mStatusBarWindowContent.findViewById(R.id.scrimview);
+ ScrimView scrimBehind = (ScrimView) scrimView.findViewById(R.id.scrim_behind);
+ ScrimView scrimInFront =
+ (ScrimView) mStatusBarWindowContent.findViewById(R.id.scrim_in_front);
+ View headsUpScrim = mStatusBarWindowContent.findViewById(R.id.heads_up_scrim);
mScrimController = new ScrimController(scrimBehind, scrimInFront, headsUpScrim,
mScrimSrcModeEnabled);
mHeadsUpManager.addListener(mScrimController);
@@ -789,18 +1036,19 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mScrimController.setBackDropView(mBackdrop);
mStatusBarView.setScrimController(mScrimController);
mDozeScrimController = new DozeScrimController(mScrimController, context);
+ mVisualizerView = (VisualizerView) scrimView.findViewById(R.id.visualizerview);
- mHeader = (StatusBarHeaderView) mStatusBarWindow.findViewById(R.id.header);
+ mHeader = (StatusBarHeaderView) mStatusBarWindowContent.findViewById(R.id.header);
mHeader.setActivityStarter(this);
- mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
- mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
- mKeyguardBottomArea =
- (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
+ mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindowContent.findViewById(R.id.keyguard_header);
+ mKeyguardStatusView = mStatusBarWindowContent.findViewById(R.id.keyguard_status_view);
+ mKeyguardBottomArea = mNotificationPanel.getKeyguardBottomArea();
+
mKeyguardBottomArea.setActivityStarter(this);
mKeyguardBottomArea.setAssistManager(mAssistManager);
mKeyguardIndicationController = new KeyguardIndicationController(mContext,
- (KeyguardIndicationTextView) mStatusBarWindow.findViewById(
- R.id.keyguard_indication_text),
+ (KeyguardIndicationTextView) mKeyguardBottomArea.findViewById(
+ R.id.keyguard_indication_text),
mKeyguardBottomArea.getLockIcon());
mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
@@ -815,35 +1063,74 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mHandlerThread.start();
// Other icons
- mLocationController = new LocationControllerImpl(mContext,
- mHandlerThread.getLooper()); // will post a notification
- mBatteryController = new BatteryController(mContext);
- mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {
- @Override
- public void onPowerSaveChanged() {
- mHandler.post(mCheckBarModes);
- if (mDozeServiceHost != null) {
- mDozeServiceHost.firePowerSaveChanged(mBatteryController.isPowerSave());
+ if (mLocationController == null) {
+ mLocationController = new LocationControllerImpl(mContext,
+ mHandlerThread.getLooper()); // will post a notification
+ }
+ if (mBatteryManager == null) {
+ mBatteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE);
+ }
+ if (mBatteryController == null) {
+ mBatteryController = new BatteryController(mContext, mHandler);
+ mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {
+ @Override
+ public void onPowerSaveChanged() {
+ mHandler.post(mCheckBarModes);
+ if (mDozeServiceHost != null) {
+ mDozeServiceHost.firePowerSaveChanged(mBatteryController.isPowerSave());
+ }
}
+
+ @Override
+ public void onBatteryLevelChanged(boolean present, int level,
+ boolean pluggedIn, boolean charging) {
+ // noop
+ }
+
+ @Override
+ public void onBatteryStyleChanged(int style, int percentMode) {
+ // noop
+ }
+ });
+ }
+ if (mBatteryManager.isDockBatterySupported()) {
+ if (mDockBatteryController == null) {
+ mDockBatteryController = new DockBatteryController(mContext, mHandler);
}
- @Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
- // noop
- }
- });
- mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
- mHotspotController = new HotspotControllerImpl(mContext);
- mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper());
- mSecurityController = new SecurityControllerImpl(mContext);
+ }
+ if (mNetworkController == null) {
+ mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
+ }
+ if (mHotspotController == null) {
+ mHotspotController = new HotspotControllerImpl(mContext);
+ }
+ if (mBluetoothController == null) {
+ mBluetoothController = new BluetoothControllerImpl(mContext,
+ mHandlerThread.getLooper());
+ }
+ if (mSecurityController == null) {
+ mSecurityController = new SecurityControllerImpl(mContext);
+ }
if (mContext.getResources().getBoolean(R.bool.config_showRotationLock)) {
- mRotationLockController = new RotationLockControllerImpl(mContext);
+ if (mRotationLockController == null) {
+ mRotationLockController = new RotationLockControllerImpl(mContext);
+ }
+ }
+ if (mUserInfoController == null) {
+ mUserInfoController = new UserInfoController(mContext);
}
- mUserInfoController = new UserInfoController(mContext);
mVolumeComponent = getComponent(VolumeComponent.class);
if (mVolumeComponent != null) {
- mZenModeController = mVolumeComponent.getZenController();
+ if (mZenModeController == null) {
+ mZenModeController = mVolumeComponent.getZenController();
+ }
+ }
+ if (mCastController == null) {
+ mCastController = new CastControllerImpl(mContext);
+ }
+ if (mSuController == null) {
+ mSuController = new SuControllerImpl(mContext);
}
- mCastController = new CastControllerImpl(mContext);
final SignalClusterView signalCluster =
(SignalClusterView) mStatusBarView.findViewById(R.id.signal_cluster);
final SignalClusterView signalClusterKeyguard =
@@ -864,45 +1151,143 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mNetworkController.addEmergencyListener(mHeader);
}
- mFlashlightController = new FlashlightController(mContext);
+ if (mFlashlightController == null) {
+ mFlashlightController = new FlashlightController(mContext);
+ }
mKeyguardBottomArea.setFlashlightController(mFlashlightController);
mKeyguardBottomArea.setPhoneStatusBar(this);
mKeyguardBottomArea.setUserSetupComplete(mUserSetup);
- mAccessibilityController = new AccessibilityController(mContext);
+ if (mAccessibilityController == null) {
+ mAccessibilityController = new AccessibilityController(mContext);
+ }
mKeyguardBottomArea.setAccessibilityController(mAccessibilityController);
- mNextAlarmController = new NextAlarmController(mContext);
- mKeyguardMonitor = new KeyguardMonitor(mContext);
+ if (mNextAlarmController == null) {
+ mNextAlarmController = new NextAlarmController(mContext);
+ }
+ if (mKeyguardMonitor == null) {
+ mKeyguardMonitor = new KeyguardMonitor(mContext);
+ }
if (UserSwitcherController.isUserSwitcherAvailable(UserManager.get(mContext))) {
- mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor,
- mHandler);
+ if (mUserSwitcherController == null) {
+ mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor,
+ mHandler);
+ }
+ }
+ if (mWeatherController == null) {
+ mWeatherController = new WeatherControllerImpl(mContext);
}
+
mKeyguardUserSwitcher = new KeyguardUserSwitcher(mContext,
- (ViewStub) mStatusBarWindow.findViewById(R.id.keyguard_user_switcher),
+ (ViewStub) mStatusBarWindowContent.findViewById(R.id.keyguard_user_switcher),
mKeyguardStatusBar, mNotificationPanel, mUserSwitcherController);
// Set up the quick settings tile panel
- mQSPanel = (QSPanel) mStatusBarWindow.findViewById(R.id.quick_settings_panel);
+ mQSPanel = (QSDragPanel) mStatusBarWindowContent.findViewById(R.id.quick_settings_panel);
if (mQSPanel != null) {
- final QSTileHost qsh = new QSTileHost(mContext, this,
- mBluetoothController, mLocationController, mRotationLockController,
- mNetworkController, mZenModeController, mHotspotController,
- mCastController, mFlashlightController,
- mUserSwitcherController, mKeyguardMonitor,
- mSecurityController);
- mQSPanel.setHost(qsh);
- mQSPanel.setTiles(qsh.getTiles());
- mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
+ if (mQSTileHost == null) {
+ mQSTileHost = new QSTileHost(mContext, this,
+ mBluetoothController, mLocationController, mRotationLockController,
+ mNetworkController, mZenModeController, mHotspotController,
+ mCastController, mFlashlightController,
+ mUserSwitcherController, mKeyguardMonitor,
+ mSecurityController, mBatteryController);
+ }
+ mQSPanel.setHost(mQSTileHost);
+ if (mBrightnessMirrorController == null) {
+ mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindowContent);
+ }
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
+ mQSPanel.setTiles(mQSTileHost.getTiles());
mHeader.setQSPanel(mQSPanel);
- qsh.setCallback(new QSTileHost.Callback() {
+ mQSTileHost.setCallback(new QSTileHost.Callback() {
@Override
public void onTilesChanged() {
- mQSPanel.setTiles(qsh.getTiles());
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mQSPanel.setTiles(mQSTileHost.getTiles());
+ }
+ });
+ }
+
+ @Override
+ public void setEditing(final boolean editing) {
+ if (mState != StatusBarState.SHADE) {
+ return;
+ }
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mQSPanel.setEditing(editing);
+ mHeader.setEditing(editing);
+ }
+ });
+ }
+
+ @Override
+ public boolean isEditing() {
+ return mQSPanel.isEditing();
+ }
+
+ @Override
+ public void goToSettingsPage() {
+ if (mState != StatusBarState.SHADE) {
+ return;
+ }
+ setEditing(true);
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ mQSPanel.goToSettingsPage();
+ }
+ }, 500);
+ }
+
+ @Override
+ public void resetTiles() {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mQSPanel.setEditing(false);
+ mHeader.setEditing(false);
+
+ // unregister custom tile service while we reset to not get
+ // callbacks from custom tiles
+ try {
+ mCustomTileListenerService.unregisterAsSystemService();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to unregister custom tile listener", e);
+ }
+
+ mQSTileHost.resetTiles();
+
+ // reregister service
+ try {
+ mCustomTileListenerService.registerAsSystemService(mContext,
+ new ComponentName(mContext.getPackageName(),
+ PhoneStatusBar.this.getClass().getCanonicalName()),
+ UserHandle.USER_ALL);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to register custom tile listener", e);
+ }
+ }
+ });
}
});
}
+ // Set up the initial custom tile listener state.
+ try {
+ mCustomTileListenerService.registerAsSystemService(mContext,
+ new ComponentName(mContext.getPackageName(), getClass().getCanonicalName()),
+ UserHandle.USER_ALL);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to register custom tile listener", e);
+ }
+
+ mQSPanel.getHost().setCustomTileListenerService(mCustomTileListenerService);
+
// User info. Trigger first load.
mHeader.setUserInfoController(mUserInfoController);
mKeyguardStatusBar.setUserInfoController(mUserInfoController);
@@ -910,10 +1295,40 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mUserInfoController.reloadUserInfo();
mHeader.setBatteryController(mBatteryController);
- ((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(
- mBatteryController);
+
+ BatteryMeterView batteryMeterView =
+ ((BatteryMeterView) mStatusBarView.findViewById(R.id.battery));
+ batteryMeterView.setBatteryStateRegistar(mBatteryController);
+ batteryMeterView.setBatteryController(mBatteryController);
+ batteryMeterView.setAnimationsEnabled(false);
+ ((BatteryLevelTextView) mStatusBarView.findViewById(R.id.battery_level_text))
+ .setBatteryStateRegistar(mBatteryController);
mKeyguardStatusBar.setBatteryController(mBatteryController);
+ mHeader.setDockBatteryController(mDockBatteryController);
+ mKeyguardStatusBar.setDockBatteryController(mDockBatteryController);
+ if (mDockBatteryController != null) {
+ DockBatteryMeterView dockBatteryMeterView =
+ ((DockBatteryMeterView) mStatusBarView.findViewById(R.id.dock_battery));
+ dockBatteryMeterView.setBatteryStateRegistar(mDockBatteryController);
+ ((BatteryLevelTextView) mStatusBarView.findViewById(R.id.dock_battery_level_text))
+ .setBatteryStateRegistar(mDockBatteryController);
+ } else {
+ DockBatteryMeterView dockBatteryMeterView =
+ (DockBatteryMeterView) mStatusBarView.findViewById(R.id.dock_battery);
+ if (dockBatteryMeterView != null) {
+ mStatusBarView.removeView(dockBatteryMeterView);
+ }
+ BatteryLevelTextView dockBatteryLevel =
+ (BatteryLevelTextView) mStatusBarView.findViewById(R.id.dock_battery_level_text);
+ if (dockBatteryLevel != null) {
+ mStatusBarView.removeView(dockBatteryLevel);
+ }
+ }
+
mHeader.setNextAlarmController(mNextAlarmController);
+ mHeader.setWeatherController(mWeatherController);
+
+ mNotificationPanel.setWeatherController(mWeatherController);
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mBroadcastReceiver.onReceive(mContext,
@@ -927,6 +1342,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
+ filter.addAction(Intent.ACTION_KEYGUARD_WALLPAPER_CHANGED);
+ filter.addAction(cyanogenmod.content.Intent.ACTION_SCREEN_CAMERA_GESTURE);
context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
IntentFilter demoFilter = new IntentFilter();
@@ -937,6 +1354,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
context.registerReceiverAsUser(mDemoReceiver, UserHandle.ALL, demoFilter,
android.Manifest.permission.DUMP, null);
+ // receive broadcasts for packages
+ IntentFilter packageFilter = new IntentFilter();
+ packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
+ packageFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ packageFilter.addAction(Intent.ACTION_PACKAGE_FULLY_REMOVED);
+ packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ packageFilter.addDataScheme("package");
+ context.registerReceiver(mPackageBroadcastReceiver, packageFilter);
+
// listen for USER_SETUP_COMPLETE setting (per-user)
resetUserSetupObserver();
@@ -1062,6 +1488,41 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return mNaturalBarHeight;
}
+ private final CustomTileListenerService mCustomTileListenerService =
+ new CustomTileListenerService() {
+ @Override
+ public void onListenerConnected() {
+ //Connected
+ }
+ @Override
+ public void onCustomTilePosted(final StatusBarPanelCustomTile sbc) {
+ if (DEBUG) Log.d(TAG, "onCustomTilePosted: " + sbc.getCustomTile());
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ boolean isUpdate = mQSPanel.getHost().getCustomTileData()
+ .get(sbc.persistableKey()) != null;
+ if (isUpdate) {
+ mQSPanel.getHost().updateCustomTile(sbc);
+ } else {
+ mQSPanel.getHost().addCustomTile(sbc);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onCustomTileRemoved(final StatusBarPanelCustomTile sbc) {
+ if (DEBUG) Log.d(TAG, "onCustomTileRemoved: " + sbc.getCustomTile());
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mQSPanel.getHost().removeCustomTileSysUi(sbc.persistableKey());
+ }
+ });
+ }
+ };
+
private View.OnClickListener mRecentsClickListener = new View.OnClickListener() {
public void onClick(View v) {
awakenDreams();
@@ -1118,34 +1579,53 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
- private void prepareNavigationBarView() {
+ private void prepareNavigationBarView(boolean forceReset) {
mNavigationBarView.reorient();
- mNavigationBarView.getRecentsButton().setOnClickListener(mRecentsClickListener);
- mNavigationBarView.getRecentsButton().setOnTouchListener(mRecentsPreloadOnTouchListener);
- mNavigationBarView.getRecentsButton().setLongClickable(true);
- mNavigationBarView.getRecentsButton().setOnLongClickListener(mLongPressBackRecentsListener);
- mNavigationBarView.getBackButton().setLongClickable(true);
- mNavigationBarView.getBackButton().setOnLongClickListener(mLongPressBackRecentsListener);
- mNavigationBarView.getHomeButton().setOnTouchListener(mHomeActionListener);
- mNavigationBarView.getHomeButton().setOnLongClickListener(mLongPressHomeListener);
+ mNavigationBarView.setListeners(mRecentsClickListener, mRecentsPreloadOnTouchListener,
+ mLongPressBackRecentsListener, mHomeActionListener, mLongPressHomeListener);
mAssistManager.onConfigurationChanged();
+ if (forceReset) {
+ // Nav Bar was added dynamically - we need to reset the mSystemUiVisibility and call
+ // setSystemUiVisibility so that mNavigationBarMode is set to the correct value
+ int newVal = mSystemUiVisibility;
+ mSystemUiVisibility = 0;
+ setSystemUiVisibility(newVal, SYSTEM_UI_VISIBILITY_MASK);
+ checkBarMode(mNavigationBarMode,
+ mNavigationBarWindowState, mNavigationBarView.getBarTransitions(),
+ mNoAnimationOnNextBarModeChange);
+ }
}
// For small-screen devices (read: phones) that lack hardware navigation buttons
- private void addNavigationBar() {
+ private void addNavigationBar(boolean forceReset) {
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + mNavigationBarView);
if (mNavigationBarView == null) return;
- prepareNavigationBarView();
+ ThemeConfig newTheme = mContext.getResources().getConfiguration().themeConfig;
+ if (newTheme != null &&
+ (mCurrentTheme == null || !mCurrentTheme.equals(newTheme))) {
+ // Nevermind, this will be re-created
+ return;
+ }
+
+ prepareNavigationBarView(forceReset);
mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());
}
+ private void removeNavigationBar() {
+ if (DEBUG) Log.d(TAG, "removeNavigationBar: about to remove " + mNavigationBarView);
+ if (mNavigationBarView == null) return;
+
+ mWindowManager.removeView(mNavigationBarView);
+ mNavigationBarView = null;
+ }
+
private void repositionNavigationBar() {
if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return;
- prepareNavigationBarView();
+ prepareNavigationBarView(false);
mWindowManager.updateViewLayout(mNavigationBarView, getNavigationBarLayoutParams());
}
@@ -1176,6 +1656,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return lp;
}
+ private Resources getNavbarThemedResources() {
+ String pkgName = mCurrentTheme.getOverlayForNavBar();
+ Resources res = null;
+ try {
+ res = mContext.getPackageManager().getThemedResourcesForApplication(
+ mContext.getPackageName(), pkgName);
+ } catch (PackageManager.NameNotFoundException e) {
+ res = mContext.getResources();
+ }
+ return res;
+ }
+
public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
mIconController.addSystemIcon(slot, index, viewIndex, icon);
}
@@ -1272,6 +1764,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mNavigationBarView != null) {
mNavigationBarView.setLayoutDirection(layoutDirection);
}
+ mIconController.refreshAllStatusBarIcons();
}
private void updateNotificationShade() {
@@ -1494,7 +1987,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
- protected void updateRowStates() {
+ public void updateRowStates() {
super.updateRowStates();
mNotificationPanel.notifyVisibleChildrenChanged();
}
@@ -1608,6 +2101,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Log.v(TAG, "DEBUG_MEDIA: insert listener, receive metadata: "
+ mMediaMetadata);
}
+ if (mediaNotification != null
+ && mediaNotification.row != null
+ && mediaNotification.row instanceof MediaExpandableNotificationRow) {
+ ((MediaExpandableNotificationRow) mediaNotification.row)
+ .setMediaController(controller);
+ }
if (mediaNotification != null) {
mMediaNotificationKey = mediaNotification.notification.getKey();
@@ -1699,18 +2198,46 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
+ " state=" + mState);
}
- Bitmap artworkBitmap = null;
+ Bitmap backdropBitmap = null;
+
+ // apply any album artwork first
if (mMediaMetadata != null) {
- artworkBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ART);
- if (artworkBitmap == null) {
- artworkBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
+ backdropBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ART);
+ if (backdropBitmap == null) {
+ backdropBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
// might still be null
}
}
- final boolean hasArtwork = artworkBitmap != null;
+ // HACK: Consider keyguard as visible if showing sim pin security screen
+ KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
+ boolean keyguardVisible = mState != StatusBarState.SHADE || updateMonitor.isSimPinSecure();
+
+ if (!mKeyguardFadingAway && keyguardVisible && backdropBitmap != null && mScreenOn) {
+ // if there's album art, ensure visualizer is visible
+ mVisualizerView.setPlaying(mMediaController != null
+ && mMediaController.getPlaybackState() != null
+ && mMediaController.getPlaybackState().getState()
+ == PlaybackState.STATE_PLAYING);
+ }
+
+ // apply user lockscreen image
+ if (backdropBitmap == null && !mLiveLockScreenController.isShowingLiveLockScreenView()) {
+ backdropBitmap = mKeyguardWallpaper;
+ }
+
+ if (keyguardVisible) {
+ // always use current backdrop to color eq
+ mVisualizerView.setBitmap(backdropBitmap);
+ }
+
+ final boolean hasBackdrop = backdropBitmap != null;
+ mKeyguardShowingMedia = hasBackdrop;
+ if (mStatusBarWindowManager != null) {
+ mStatusBarWindowManager.setShowingMedia(mKeyguardShowingMedia);
+ }
- if ((hasArtwork || DEBUG_MEDIA_FAKE_ARTWORK)
+ if ((hasBackdrop || DEBUG_MEDIA_FAKE_ARTWORK)
&& (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)
&& mFingerprintUnlockController.getMode()
!= FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) {
@@ -1743,7 +2270,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mBackdropBack.setBackgroundColor(0xFFFFFFFF);
mBackdropBack.setImageDrawable(new ColorDrawable(c));
} else {
- mBackdropBack.setImageBitmap(artworkBitmap);
+ mBackdropBack.setImageBitmap(backdropBitmap);
}
if (mScrimSrcModeEnabled) {
mBackdropBack.getDrawable().mutate().setXfermode(mSrcXferMode);
@@ -1947,6 +2474,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return mLeaveOpenOnKeyguardHide;
}
+ public boolean isKeyguardShowingMedia() {
+ return mKeyguardShowingMedia;
+ }
+
public boolean isQsExpanded() {
return mNotificationPanel.isQsExpanded();
}
@@ -1955,6 +2486,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return mWakeUpComingFromTouch;
}
+ void setBlur(float b){
+ mStatusBarWindowManager.setBlur(b);
+ }
+
public boolean isFalsingThresholdNeeded() {
return getBarState() == StatusBarState.KEYGUARD;
}
@@ -1968,6 +2503,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return mMediaNotificationKey;
}
+ @Override
+ protected MediaController getCurrentMediaController() {
+ return mMediaController;
+ }
+
public boolean isScrimSrcModeEnabled() {
return mScrimSrcModeEnabled;
}
@@ -2295,6 +2835,98 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
+ private void adjustBrightness(int x) {
+ mBrightnessChanged = true;
+ float raw = ((float) x) / mScreenWidth;
+
+ // Add a padding to the brightness control on both sides to
+ // make it easier to reach min/max brightness
+ float padded = Math.min(1.0f - BRIGHTNESS_CONTROL_PADDING,
+ Math.max(BRIGHTNESS_CONTROL_PADDING, raw));
+ float value = (padded - BRIGHTNESS_CONTROL_PADDING) /
+ (1 - (2.0f * BRIGHTNESS_CONTROL_PADDING));
+ try {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
+ if (mAutomaticBrightness) {
+ float adj = (2 * value) - 1;
+ adj = Math.max(adj, -1);
+ adj = Math.min(adj, 1);
+ final float val = adj;
+ power.setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(val);
+ AsyncTask.execute(new Runnable() {
+ public void run() {
+ Settings.System.putFloatForUser(mContext.getContentResolver(),
+ Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, val,
+ UserHandle.USER_CURRENT);
+ }
+ });
+ } else {
+ int newBrightness = mMinBrightness + (int) Math.round(value *
+ (android.os.PowerManager.BRIGHTNESS_ON - mMinBrightness));
+ newBrightness = Math.min(newBrightness, android.os.PowerManager.BRIGHTNESS_ON);
+ newBrightness = Math.max(newBrightness, mMinBrightness);
+ final int val = newBrightness;
+ power.setTemporaryScreenBrightnessSettingOverride(val);
+ AsyncTask.execute(new Runnable() {
+ @Override
+ public void run() {
+ Settings.System.putIntForUser(mContext.getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS, val,
+ UserHandle.USER_CURRENT);
+ }
+ });
+ }
+
+
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Setting Brightness failed: " + e);
+ }
+ }
+
+ private void brightnessControl(MotionEvent event) {
+ final int action = event.getAction();
+ final int x = (int) event.getRawX();
+ final int y = (int) event.getRawY();
+ if (action == MotionEvent.ACTION_DOWN) {
+ if (y < mStatusBarHeaderHeight) {
+ mLinger = 0;
+ mInitialTouchX = x;
+ mInitialTouchY = y;
+ mJustPeeked = true;
+ mHandler.removeCallbacks(mLongPressBrightnessChange);
+ mHandler.postDelayed(mLongPressBrightnessChange,
+ BRIGHTNESS_CONTROL_LONG_PRESS_TIMEOUT);
+ }
+ } else if (action == MotionEvent.ACTION_MOVE) {
+ if (y < mStatusBarHeaderHeight && mJustPeeked) {
+ if (mLinger > BRIGHTNESS_CONTROL_LINGER_THRESHOLD) {
+ adjustBrightness(x);
+ } else {
+ final int xDiff = Math.abs(x - mInitialTouchX);
+ final int yDiff = Math.abs(y - mInitialTouchY);
+ final int touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
+ if (xDiff > yDiff) {
+ mLinger++;
+ }
+ if (xDiff > touchSlop || yDiff > touchSlop) {
+ mHandler.removeCallbacks(mLongPressBrightnessChange);
+ }
+ }
+ } else {
+ if (y > mStatusBarHeaderHeight) {
+ mJustPeeked = false;
+ }
+ mHandler.removeCallbacks(mLongPressBrightnessChange);
+ }
+ } else if (action == MotionEvent.ACTION_UP
+ || action == MotionEvent.ACTION_CANCEL) {
+ mHandler.removeCallbacks(mLongPressBrightnessChange);
+ }
+ }
+
public boolean interceptTouchEvent(MotionEvent event) {
if (DEBUG_GESTURES) {
if (event.getActionMasked() != MotionEvent.ACTION_MOVE) {
@@ -2321,16 +2953,29 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mGestureRec.add(event);
}
+ if (mBrightnessControl) {
+ brightnessControl(event);
+ if ((mDisabled1 & StatusBarManager.DISABLE_EXPAND) != 0) {
+ return true;
+ }
+ }
+
+ final boolean upOrCancel =
+ event.getAction() == MotionEvent.ACTION_UP ||
+ event.getAction() == MotionEvent.ACTION_CANCEL;
if (mStatusBarWindowState == WINDOW_STATE_SHOWING) {
- final boolean upOrCancel =
- event.getAction() == MotionEvent.ACTION_UP ||
- event.getAction() == MotionEvent.ACTION_CANCEL;
if (upOrCancel && !mExpandedVisible) {
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
} else {
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
}
}
+ if (mBrightnessChanged && upOrCancel && !isQsExpanded()) {
+ mBrightnessChanged = false;
+ if (mJustPeeked && mExpandedVisible) {
+ mNotificationPanel.fling(10, false);
+ }
+ }
return false;
}
@@ -2771,6 +3416,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mBatteryController != null) {
mBatteryController.dump(fd, pw, args);
}
+ if (mDockBatteryController != null) {
+ mDockBatteryController.dump(fd, pw, args);
+ }
if (mNextAlarmController != null) {
mNextAlarmController.dump(fd, pw, args);
}
@@ -2813,8 +3461,13 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private void addStatusBarWindow() {
makeStatusBarView();
- mStatusBarWindowManager = new StatusBarWindowManager(mContext);
+ mStatusBarWindow.addContent(mStatusBarWindowContent);
+ mStatusBarWindowManager = new StatusBarWindowManager(mContext, mKeyguardMonitor);
+ mStatusBarWindowManager.setShowingMedia(mKeyguardShowingMedia);
mStatusBarWindowManager.add(mStatusBarWindow, getStatusBarHeight());
+ if (mLiveLockScreenController != null) {
+ mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
+ }
}
// called by makeStatusbar and also by PhoneStatusBarView
@@ -2838,10 +3491,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
public void startActivityDismissingKeyguard(final Intent intent, boolean onlyProvisioned,
final boolean dismissShade, final Callback callback) {
- if (onlyProvisioned && !isDeviceProvisioned()) return;
-
final boolean afterKeyguardGone = PreviewInflater.wouldLaunchResolverActivity(
mContext, intent, mCurrentUserId);
+ startActivityDismissingKeyguard(intent, onlyProvisioned, dismissShade, afterKeyguardGone,
+ callback);
+ }
+
+ public void startActivityDismissingKeyguard(final Intent intent, boolean onlyProvisioned,
+ final boolean dismissShade, final boolean afterKeyguardGone, final Callback callback) {
+ if (onlyProvisioned && !isDeviceProvisioned()) return;
+
final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
Runnable runnable = new Runnable() {
public void run() {
@@ -2924,13 +3583,33 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
+ mScreenOn = false;
notifyNavigationBarScreenOn(false);
notifyHeadsUpScreenOff();
finishBarAnimations();
resetUserExpandedStates();
}
else if (Intent.ACTION_SCREEN_ON.equals(action)) {
+ mScreenOn = true;
notifyNavigationBarScreenOn(true);
+ } else if (Intent.ACTION_KEYGUARD_WALLPAPER_CHANGED.equals(action)) {
+ WallpaperManager wm = (WallpaperManager) mContext.getSystemService(
+ Context.WALLPAPER_SERVICE);
+ mKeyguardWallpaper = wm.getKeyguardBitmap();
+ updateMediaMetaData(true);
+ } else if (cyanogenmod.content.Intent.ACTION_SCREEN_CAMERA_GESTURE.equals(action)) {
+ boolean userSetupComplete = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
+ if (!userSetupComplete || !isDeviceProvisioned()) {
+ if (DEBUG) {
+ Log.d(TAG, String.format("userSetupComplete = $1%s, " +
+ "deviceProvisioned = $2%s, ignoring camera launch gesture.",
+ userSetupComplete, isDeviceProvisioned()));
+ }
+ return;
+ }
+
+ onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE);
}
}
};
@@ -2955,6 +3634,24 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (DEBUG_MEDIA_FAKE_ARTWORK) {
updateMediaMetaData(true);
}
+ } else if (Intent.ACTION_KEYGUARD_WALLPAPER_CHANGED.equals(action)) {
+ WallpaperManager wm = (WallpaperManager) mContext.getSystemService(
+ Context.WALLPAPER_SERVICE);
+ mKeyguardWallpaper = wm.getKeyguardBitmap();
+ updateMediaMetaData(true);
+ }
+ }
+ };
+
+ private BroadcastReceiver mPackageBroadcastReceiver = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ if (DEBUG) Log.v(TAG, "onReceive: " + intent);
+ String action = intent.getAction();
+ if (Intent.ACTION_PACKAGE_ADDED.equals(action) ||
+ Intent.ACTION_PACKAGE_CHANGED.equals(action) ||
+ Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(action) ||
+ Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
+ updateCustomRecentsLongPressHandler(true);
}
}
};
@@ -2995,24 +3692,42 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
updateDisplaySize(); // populates mDisplayMetrics
- updateResources();
+ updateResources(newConfig);
repositionNavigationBar();
updateRowStates();
mIconController.updateResources();
mScreenPinningRequest.onConfigurationChanged();
mNetworkController.onConfigurationChanged();
+ mStatusBarWindowManager.onConfigurationChanged(newConfig);
}
@Override
public void userSwitched(int newUserId) {
super.userSwitched(newUserId);
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
+ WallpaperManager wm = (WallpaperManager)
+ mContext.getSystemService(Context.WALLPAPER_SERVICE);
+ mKeyguardWallpaper = null;
+ wm.forgetLoadedKeyguardWallpaper();
+
animateCollapsePanels();
updatePublicMode();
updateNotifications();
resetUserSetupObserver();
setControllerUsers();
mAssistManager.onUserSwitched(newUserId);
+
+ mKeyguardWallpaper = wm.getKeyguardBitmap();
+ updateMediaMetaData(true);
+ if (mNavigationBarView != null) {
+ mNavigationBarView.updateSettings();
+ }
+ }
+
+ public void hideHeadsUp() {
+ if (mUseHeadsUp && mHeadsUpManager != null) {
+ mHeadsUpManager.releaseAllImmediately();
+ }
}
private void setControllerUsers() {
@@ -3022,6 +3737,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mSecurityController != null) {
mSecurityController.onUserSwitched(mCurrentUserId);
}
+ if (mBatteryController != null) {
+ mBatteryController.setUserId(mCurrentUserId);
+ }
+ if (mDockBatteryController != null) {
+ mDockBatteryController.setUserId(mCurrentUserId);
+ }
}
private void resetUserSetupObserver() {
@@ -3032,6 +3753,164 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mUserSetupObserver, mCurrentUserId);
}
+ private static void copyNotifications(ArrayList<Pair<String, StatusBarNotification>> dest,
+ NotificationData source) {
+ int N = source.size();
+ for (int i = 0; i < N; i++) {
+ NotificationData.Entry entry = source.get(i);
+ dest.add(Pair.create(entry.key, entry.notification));
+ }
+ }
+
+ private void removeSignalCallbacks(NetworkController networkController) {
+ final SignalClusterView signalCluster =
+ (SignalClusterView) mStatusBarView.findViewById(R.id.signal_cluster);
+ final SignalClusterView signalClusterKeyguard =
+ (SignalClusterView) mKeyguardStatusBar.findViewById(R.id.signal_cluster);
+ final SignalClusterView signalClusterQs =
+ (SignalClusterView) mHeader.findViewById(R.id.signal_cluster);
+ networkController.removeSignalCallback(signalCluster);
+ networkController.removeSignalCallback(signalClusterKeyguard);
+ networkController.removeSignalCallback(signalClusterQs);
+
+ if (signalCluster != null) signalCluster.setSecurityController(null);
+ if (signalClusterKeyguard != null) signalClusterKeyguard.setSecurityController(null);
+ if (signalClusterQs != null) signalClusterQs.setSecurityController(null);
+ }
+
+ private void recreateStatusBar() {
+ mRecreating = true;
+
+ if (mNetworkController != null) {
+ removeSignalCallbacks(mNetworkController);
+ if (mNetworkController.hasVoiceCallingFeature()) {
+ mNetworkController.removeEmergencyListener(mHeader);
+ }
+ }
+ if (mHeadsUpManager != null) {
+ mHeadsUpManager.removeListener(mNotificationPanel);
+ mHeadsUpManager.removeListener(mScrimController);
+ }
+ if (mIconController != null) {
+ mIconController.cleanup();
+ }
+ if (mKeyguardIndicationController != null) {
+ mKeyguardIndicationController.cleanup();
+ }
+ if (mLiveLockScreenController != null) {
+ mLiveLockScreenController.cleanup();
+ }
+
+ mKeyguardBottomArea.cleanup();
+ mStatusBarWindow.removeContent(mStatusBarWindowContent);
+ mStatusBarWindow.clearDisappearingChildren();
+
+ // extract icons from the soon-to-be recreated viewgroup.
+ ViewGroup statusIcons = mIconController.getStatusIcons();
+ int nIcons = statusIcons != null ? statusIcons.getChildCount() : 0;
+ ArrayList<StatusBarIcon> icons = new ArrayList<StatusBarIcon>(nIcons);
+ ArrayList<String> iconSlots = new ArrayList<String>(nIcons);
+ for (int i = 0; i < nIcons; i++) {
+ StatusBarIconView iconView = (StatusBarIconView) statusIcons.getChildAt(i);
+ icons.add(iconView.getStatusBarIcon());
+ iconSlots.add(iconView.getStatusBarSlot());
+ }
+
+ removeAllViews(mStatusBarWindowContent);
+
+ // extract notifications.
+ RankingMap rankingMap = mNotificationData.getRankingMap();
+ int nNotifs = mNotificationData.size();
+ ArrayList<Pair<String, StatusBarNotification>> notifications = new ArrayList<>(nNotifs);
+ copyNotifications(notifications, mNotificationData);
+ // now remove all the notifications since we'll be re-creating these with the copied data
+ mNotificationData.clear();
+
+ if (mCustomTileListenerService != null) {
+ try {
+ mCustomTileListenerService.unregisterAsSystemService();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to unregister custom tile listener", e);
+ }
+ }
+
+ mQSPanel.getHost().setCustomTileListenerService(null);
+ mQSPanel.setListening(false);
+
+ makeStatusBarView();
+ repositionNavigationBar();
+
+ // re-add status icons
+ for (int i = 0; i < nIcons; i++) {
+ StatusBarIcon icon = icons.get(i);
+ String slot = iconSlots.get(i);
+ addIcon(slot, i, i, icon);
+ }
+
+ // recreate notifications.
+ for (int i = 0; i < nNotifs; i++) {
+ Pair<String, StatusBarNotification> notifData = notifications.get(i);
+ addNotificationViews(createNotificationViews(notifData.second), rankingMap);
+ }
+ mNotificationData.filterAndSort();
+
+ setAreThereNotifications();
+
+ mStatusBarWindow.addContent(mStatusBarWindowContent);
+
+ checkBarModes();
+
+ // Stop the command queue until the new status bar container settles and has a layout pass
+ mCommandQueue.pause();
+
+ // fix notification panel being shifted to the left by calling
+ // instantCollapseNotificationPanel()
+ instantCollapseNotificationPanel();
+
+ mStatusBarWindow.requestLayout();
+ mStatusBarWindow.getViewTreeObserver().addOnGlobalLayoutListener(
+ new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ mStatusBarWindow.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ mCommandQueue.resume();
+ mRecreating = false;
+ }
+ });
+ // restart the keyguard so it picks up the newly created ScrimController
+ startKeyguard();
+
+ // if the keyguard was showing while this change occurred we'll need to do some extra work
+ if (mState == StatusBarState.KEYGUARD) {
+ // this will make sure the keyguard is showing
+ showKeyguard();
+ // make sure to hide the notification icon area and system iconography
+ // to avoid overlap (CYNGNOS-2253)
+ mIconController.hideNotificationIconArea(false);
+ mIconController.hideSystemIconArea(false);
+ }
+
+ // update mLastThemeChangeTime
+ try {
+ mLastThemeChangeTime = mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+ }
+
+ private void removeAllViews(ViewGroup parent) {
+ int N = parent.getChildCount();
+ for (int i = 0; i < N; i++) {
+ View child = parent.getChildAt(i);
+ if (child instanceof ViewGroup) {
+ removeAllViews((ViewGroup) child);
+ }
+ }
+
+ // AdapterView does not support removeAllViews so check before calling
+ if (!(parent instanceof AdapterView)) parent.removeAllViews();
+ }
+
/**
* Reload some of our resources when the configuration changes.
*
@@ -3039,7 +3918,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
* should, but getting that smooth is tough. Someday we'll fix that. In the
* meantime, just update the things that we know change.
*/
- void updateResources() {
+ void updateResources(Configuration newConfig) {
+ // detect theme change.
+ ThemeConfig newTheme = newConfig != null ? newConfig.themeConfig : null;
+ final boolean updateStatusBar = shouldUpdateStatusbar(mCurrentTheme, newTheme);
+ final boolean updateNavBar = shouldUpdateNavbar(mCurrentTheme, newTheme);
+ if (newTheme != null) mCurrentTheme = (ThemeConfig) newTheme.clone();
+ if (updateStatusBar) {
+ recreateStatusBar();
+ } else {
+ loadDimens();
+ }
+
// Update the quick setting tiles
if (mQSPanel != null) {
mQSPanel.updateResources();
@@ -3053,6 +3943,66 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mBrightnessMirrorController != null) {
mBrightnessMirrorController.updateResources();
}
+
+ if (mNavigationBarView != null && updateNavBar) {
+ mNavigationBarView.updateResources(getNavbarThemedResources());
+ }
+ }
+
+ /**
+ * Determines if we need to recreate the status bar due to a theme change. We currently
+ * check if the overlay for the status bar, fonts, or icons, or last theme change time is
+ * greater than mLastThemeChangeTime
+ *
+ * @param oldTheme
+ * @param newTheme
+ * @return True if we should recreate the status bar
+ */
+ private boolean shouldUpdateStatusbar(ThemeConfig oldTheme, ThemeConfig newTheme) {
+ // no newTheme, so no need to update status bar
+ if (newTheme == null) return false;
+
+ final String overlay = newTheme.getOverlayForStatusBar();
+ final String icons = newTheme.getIconPackPkgName();
+ final String fonts = newTheme.getFontPkgName();
+ boolean isNewThemeChange = false;
+ try {
+ isNewThemeChange = mLastThemeChangeTime < mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+
+ return oldTheme == null ||
+ (overlay != null && !overlay.equals(oldTheme.getOverlayForStatusBar()) ||
+ (fonts != null && !fonts.equals(oldTheme.getFontPkgName())) ||
+ (icons != null && !icons.equals(oldTheme.getIconPackPkgName())) ||
+ isNewThemeChange);
+ }
+
+ /**
+ * Determines if we need to update the navbar resources due to a theme change. We currently
+ * check if the overlay for the navbar, or last theme change time is greater than
+ * mLastThemeChangeTime
+ *
+ * @param oldTheme
+ * @param newTheme
+ * @return True if we should update the navbar
+ */
+ private boolean shouldUpdateNavbar(ThemeConfig oldTheme, ThemeConfig newTheme) {
+ // no newTheme, so no need to update navbar
+ if (newTheme == null) return false;
+
+ final String overlay = newTheme.getOverlayForNavBar();
+ boolean isNewThemeChange = false;
+ try {
+ isNewThemeChange = mLastThemeChangeTime < mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+
+ return oldTheme == null ||
+ (overlay != null && !overlay.equals(oldTheme.getOverlayForNavBar()) ||
+ isNewThemeChange);
}
protected void loadDimens() {
@@ -3066,6 +4016,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mKeyguardMaxNotificationCount = res.getInteger(R.integer.keyguard_max_notification_count);
+ mStatusBarHeaderHeight = res.getDimensionPixelSize(R.dimen.status_bar_header_height);
+
if (DEBUG) Log.v(TAG, "updateResources");
}
@@ -3207,7 +4159,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
@Override
public boolean shouldDisableNavbarGestures() {
- return !isDeviceProvisioned() || (mDisabled1 & StatusBarManager.DISABLE_SEARCH) != 0;
+ return !isDeviceProvisioned() || (mDisabled1 & StatusBarManager.DISABLE_SEARCH) != 0
+ || (mNavigationBarView != null && mNavigationBarView.isInEditMode());
}
public void postStartActivityDismissingKeyguard(final PendingIntent intent) {
@@ -3327,6 +4280,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
if (modeChange || command.equals(COMMAND_BATTERY)) {
dispatchDemoCommandToView(command, args, R.id.battery);
+ dispatchDemoCommandToView(command, args, R.id.dock_battery);
}
if (modeChange || command.equals(COMMAND_STATUS)) {
mIconController.dispatchDemoCommand(command, args);
@@ -3407,6 +4361,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mDraggedDownRow = null;
}
mAssistManager.onLockscreenShown();
+ mKeyguardBottomArea.requestFocus();
+ try {
+ WindowManagerGlobal.getWindowManagerService()
+ .setLiveLockscreenEdgeDetector(false);
+ } catch (RemoteException e){
+ e.printStackTrace();
+ }
+ if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
+ mLiveLockScreenController.onLiveLockScreenFocusChanged(false);
+ mLiveLockScreenController.getLiveLockScreenView().onKeyguardShowing(
+ mStatusBarKeyguardViewManager.isScreenTurnedOn());
+ }
}
private void onLaunchTransitionFadingEnded() {
@@ -3557,6 +4523,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mNotificationPanel.onAffordanceLaunchEnded();
mNotificationPanel.animate().cancel();
mNotificationPanel.setAlpha(1f);
+ if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
+ mLiveLockScreenController.getLiveLockScreenView().onKeyguardDismissed();
+ }
return staying;
}
@@ -3566,6 +4535,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
+ boolean isSecure() {
+ return mStatusBarKeyguardViewManager != null && mStatusBarKeyguardViewManager.isSecure();
+ }
+
+ public boolean isKeyguardInputRestricted() {
+ return mStatusBarKeyguardViewManager != null && mStatusBarKeyguardViewManager.isInputRestricted();
+ }
+
public long calculateGoingToFullShadeDelay() {
return mKeyguardFadingAwayDelay + mKeyguardFadingAwayDuration;
}
@@ -3641,6 +4618,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mIconPolicy.setKeyguardShowing(false);
}
mNotificationPanel.setBarState(mState, mKeyguardFadingAway, goingToFullShade);
+ mLiveLockScreenController.setBarState(mState);
updateDozingState();
updatePublicMode();
updateStackScrollerState(goingToFullShade);
@@ -3662,12 +4640,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mDozeScrimController.setDozing(mDozing &&
mFingerprintUnlockController.getMode()
!= FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING, animate);
+ mVisualizerView.setDozing(mDozing);
}
public void updateStackScrollerState(boolean goingToFullShade) {
if (mStackScroller == null) return;
boolean onKeyguard = mState == StatusBarState.KEYGUARD;
- mStackScroller.setHideSensitive(isLockscreenPublicMode(), goingToFullShade);
+ mStackScroller.setHideSensitive(isLockscreenPublicMode()
+ || (!userAllowsPrivateNotificationsInPublic(mCurrentUserId) && onKeyguard),
+ goingToFullShade);
mStackScroller.setDimmed(onKeyguard, false /* animate */);
mStackScroller.setExpandingEnabled(!onKeyguard);
ActivatableNotificationView activatedChild = mStackScroller.getActivatedChild();
@@ -3726,13 +4707,34 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return false;
}
- private void showBouncer() {
- if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
+ public void showBouncer() {
+ if (!mRecreating && mNotificationPanel.mCanDismissKeyguard
+ && (mState != StatusBarState.SHADE || mLiveLockScreenController.getLiveLockScreenHasFocus())) {
mWaitingForKeyguardExit = mStatusBarKeyguardViewManager.isShowing();
mStatusBarKeyguardViewManager.dismiss();
}
}
+ protected void showBouncerOrFocusKeyguardExternalView() {
+ if (mLiveLockScreenController.isShowingLiveLockScreenView() && !isKeyguardShowingMedia() &&
+ mLiveLockScreenController.isLiveLockScreenInteractive()) {
+ focusKeyguardExternalView();
+ } else {
+ showBouncer();
+ }
+ }
+
+ protected void unfocusKeyguardExternalView() {
+ mStatusBarKeyguardViewManager.setKeyguardExternalViewFocus(false);
+ }
+
+ public void focusKeyguardExternalView() {
+ mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/,
+ 1.0f /* speedUpFactor */);
+ mStatusBarKeyguardViewManager.setKeyguardExternalViewFocus(true);
+ setBarState(StatusBarState.SHADE);
+ }
+
private void instantExpandNotificationsPanel() {
// Make our window larger and the panel expanded.
@@ -3770,6 +4772,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
clearNotificationEffects();
}
mState = state;
+ mVisualizerView.setStatusBarState(state);
mGroupManager.setStatusBarState(state);
mStatusBarWindowManager.setStatusBarState(state);
updateDozing();
@@ -3792,24 +4795,41 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
public void onUnlockHintStarted() {
- mKeyguardIndicationController.showTransientIndication(R.string.keyguard_unlock);
+ mKeyguardIndicationController.showTransientIndication(R.string.keyguard_unlock,
+ mNotificationPanel.shouldShowScreenOnHints() ?
+ KeyguardIndicationController.IndicationDirection.UP :
+ KeyguardIndicationController.IndicationDirection.NONE);
+ }
+
+ public void onLlsHintStarted() {
+ String llsName = mLiveLockScreenController.getLiveLockScreenName();
+ mKeyguardIndicationController.showTransientIndication(
+ mContext.getString(R.string.swipe_left_hint, llsName),
+ KeyguardIndicationController.IndicationDirection.LEFT);
+ }
+
+ public void onExpandHintStarted() {
+ mKeyguardIndicationController.showTransientIndication(R.string.expand_hint,
+ KeyguardIndicationController.IndicationDirection.DOWN);
+ }
+
+ public void onNotificationsHintStarted() {
+ mKeyguardIndicationController.showTransientIndication(R.string.swipe_right_hint,
+ KeyguardIndicationController.IndicationDirection.RIGHT);
}
public void onHintFinished() {
// Delay the reset a bit so the user can read the text.
mKeyguardIndicationController.hideTransientIndicationDelayed(HINT_RESET_DELAY_MS);
+ mKeyguardBottomArea.expand(false);
}
- public void onCameraHintStarted() {
- mKeyguardIndicationController.showTransientIndication(R.string.camera_hint);
- }
-
- public void onVoiceAssistHintStarted() {
- mKeyguardIndicationController.showTransientIndication(R.string.voice_hint);
+ public void onCameraHintStarted(String hint) {
+ mKeyguardIndicationController.showTransientIndication(hint);
}
- public void onPhoneHintStarted() {
- mKeyguardIndicationController.showTransientIndication(R.string.phone_hint);
+ public void onLeftHintStarted(String hint) {
+ mKeyguardIndicationController.showTransientIndication(hint);
}
public void onTrackingStopped(boolean expand) {
@@ -3822,7 +4842,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
@Override
protected int getMaxKeyguardNotifications() {
- return mKeyguardMaxNotificationCount;
+ int max = mKeyguardMaxNotificationCount;
+ // When an interactive live lockscreen is showing
+ // we want to limit the number of maximum notifications
+ // by 1 so there is additional space for the user to dismiss keygard
+ if (mLiveLockScreenController.isLiveLockScreenInteractive()) {
+ max--;
+ }
+ return max;
}
public NavigationBarView getNavigationBarView() {
@@ -3938,6 +4965,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mWakeUpTouchLocation = null;
mStackScroller.setAnimationsEnabled(false);
updateVisibleToUser();
+ if (mQSTileHost.isEditing()) {
+ mQSTileHost.setEditing(false);
+ }
if (mLaunchCameraOnFinishedGoingToSleep) {
mLaunchCameraOnFinishedGoingToSleep = false;
@@ -3970,12 +5000,23 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private void vibrateForCameraGesture() {
// Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep.
- mVibrator.vibrate(new long[] { 0, 750L }, -1 /* repeat */);
+ mVibrator.vibrate(new long[] { 0, 250L }, -1 /* repeat */);
}
public void onScreenTurnedOn() {
mScreenTurningOn = false;
mDozeScrimController.onScreenTurnedOn();
+ mVisualizerView.setVisible(true);
+ if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
+ mLiveLockScreenController.onScreenTurnedOn();
+ }
+ }
+
+ public void onScreenTurnedOff() {
+ mVisualizerView.setVisible(false);
+ if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
+ mLiveLockScreenController.onScreenTurnedOff();
+ }
}
/**
@@ -3994,6 +5035,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private void handleLongPressBackRecents(View v) {
try {
boolean sendBackLongPress = false;
+ boolean hijackRecentsLongPress = false;
IActivityManager activityManager = ActivityManagerNative.getDefault();
boolean isAccessiblityEnabled = mAccessibilityManager.isEnabled();
if (activityManager.isInLockTaskMode() && !isAccessiblityEnabled) {
@@ -4004,17 +5046,23 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
activityManager.stopLockTaskModeOnCurrent();
// When exiting refresh disabled flags.
mNavigationBarView.setDisabledFlags(mDisabled1, true);
- } else if ((v.getId() == R.id.back)
+ } else if (NavbarEditor.NAVBAR_BACK.equals(v.getTag())
&& !mNavigationBarView.getRecentsButton().isPressed()) {
// If we aren't pressing recents right now then they presses
// won't be together, so send the standard long-press action.
sendBackLongPress = true;
+ } else if (NavbarEditor.NAVBAR_RECENT.equals(v.getTag())
+ && !activityManager.isInLockTaskMode()) {
+ hijackRecentsLongPress = true;
}
mLastLockToAppLongPress = time;
} else {
// If this is back still need to handle sending the long-press event.
- if (v.getId() == R.id.back) {
+ if (NavbarEditor.NAVBAR_BACK.equals(v.getTag())) {
sendBackLongPress = true;
+ } else if (NavbarEditor.NAVBAR_RECENT.equals(v.getTag())
+ && !activityManager.isInLockTaskMode()) {
+ hijackRecentsLongPress = true;
} else if (isAccessiblityEnabled && activityManager.isInLockTaskMode()) {
// When in accessibility mode a long press that is recents (not back)
// should stop lock task.
@@ -4028,11 +5076,201 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
keyButtonView.sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
keyButtonView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
}
+
+ if (hijackRecentsLongPress) {
+ // If there is a user-selected, registered handler for the
+ // recents long press, start the Intent. Otherwise,
+ // perform the default action, which is last app switching.
+
+ // Copy it so the value doesn't change between now and when the activity is started.
+ ComponentName customRecentsLongPressHandler = mCustomRecentsLongPressHandler;
+ if (customRecentsLongPressHandler != null) {
+ startCustomRecentsLongPressActivity(customRecentsLongPressHandler);
+ } else {
+ ActionUtils.switchToLastApp(mContext, mCurrentUserId);
+ }
+ }
} catch (RemoteException e) {
Log.d(TAG, "Unable to reach activity manager", e);
}
}
+ protected View.OnTouchListener mRecentsPreloadOnTouchListener = new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ int action = event.getAction() & MotionEvent.ACTION_MASK;
+
+ // Handle Document switcher
+ // Additional optimization when we have software system buttons - start loading the recent
+ // tasks on touch down
+ if (action == MotionEvent.ACTION_DOWN) {
+ preloadRecents();
+ } else if (action == MotionEvent.ACTION_CANCEL) {
+ cancelPreloadingRecents();
+ } else if (action == MotionEvent.ACTION_UP) {
+ if (!v.isPressed()) {
+ cancelPreloadingRecents();
+ }
+ }
+
+ // Handle custom recents long press
+ if (action == MotionEvent.ACTION_CANCEL ||
+ action == MotionEvent.ACTION_UP) {
+ cleanupCustomRecentsLongPressHandler();
+ }
+ return false;
+ }
+ };
+
+ /**
+ * If a custom Recents Long Press activity was dispatched, then the certain
+ * handlers need to be cleaned up after the event ends.
+ */
+ private void cleanupCustomRecentsLongPressHandler() {
+ if (mCustomRecentsLongPressed) {
+ mNavigationBarView.setSlippery(false);
+ }
+ mCustomRecentsLongPressed = false;
+ }
+
+ /**
+ * An ACTION_RECENTS_LONG_PRESS intent was received, and a custom handler is
+ * set and points to a valid app. Start this activity.
+ */
+ private void startCustomRecentsLongPressActivity(ComponentName customComponentName) {
+ Intent intent = new Intent(cyanogenmod.content.Intent.ACTION_RECENTS_LONG_PRESS);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+ // Include the package name of the app currently in the foreground
+ IActivityManager am = ActivityManagerNative.getDefault();
+ List<ActivityManager.RecentTaskInfo> recentTasks = null;
+ try {
+ recentTasks = am.getRecentTasks(
+ 1, ActivityManager.RECENT_WITH_EXCLUDED, UserHandle.myUserId());
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot get recent tasks", e);
+ }
+ if (recentTasks != null && recentTasks.size() > 0) {
+ String pkgName = recentTasks.get(0).baseIntent.getComponent().getPackageName();
+ intent.putExtra(Intent.EXTRA_CURRENT_PACKAGE_NAME, pkgName);
+ }
+
+ intent.setComponent(customComponentName);
+ try {
+ // Allow the touch event to continue into the new activity.
+ mNavigationBarView.setSlippery(true);
+ mCustomRecentsLongPressed = true;
+
+ mContext.startActivityAsUser(intent, new UserHandle(UserHandle.USER_CURRENT));
+
+ } catch (ActivityNotFoundException e) {
+ Log.e(TAG, "Cannot start activity", e);
+
+ // If the activity failed to launch, clean up
+ cleanupCustomRecentsLongPressHandler();
+ }
+ }
+
+ /**
+ * Get component name for the recent long press setting. Null means default switch to last app.
+ *
+ * Note: every time packages changed, the setting must be re-evaluated. This is to check that the
+ * component was not uninstalled or disabled.
+ */
+ private void updateCustomRecentsLongPressHandler(boolean scanPackages) {
+ // scanPackages should be true when the PhoneStatusBar is starting for
+ // the first time, and when any package activity occurred.
+ if (scanPackages) {
+ updateCustomRecentsLongPressCandidates();
+ }
+
+ String componentString = CMSettings.Secure.getString(mContext.getContentResolver(),
+ CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY);
+ if (componentString == null) {
+ mCustomRecentsLongPressHandler = null;
+ return;
+ }
+
+ ComponentName customComponentName = ComponentName.unflattenFromString(componentString);
+ synchronized (mCustomRecentsLongPressHandlerCandidates) {
+ for (ComponentName candidate : mCustomRecentsLongPressHandlerCandidates) {
+ if (candidate.equals(customComponentName)) {
+ // Found match
+ mCustomRecentsLongPressHandler = customComponentName;
+
+ return;
+ }
+ }
+
+ // Did not find match, probably because the selected application has
+ // now been uninstalled for some reason. Since user-selected app is
+ // still saved inside Settings, PhoneStatusBar should fall back to
+ // the default for now. (We will update this either when the
+ // package is reinstalled or when the user selects another Setting.)
+ mCustomRecentsLongPressHandler = null;
+ }
+ }
+
+ /**
+ * Updates the cache of Recents Long Press applications.
+ *
+ * These applications must:
+ * - handle the cyanogenmod.contentIntent.ACTION_RECENTS_LONG_PRESS
+ * (which is permissions protected); and
+ * - not be disabled by the user or the system.
+ *
+ * More than one handler can be a candidate. When the action is invoked,
+ * the user setting (stored in CMSettings.Secure) is consulted.
+ */
+ private void updateCustomRecentsLongPressCandidates() {
+ synchronized (mCustomRecentsLongPressHandlerCandidates) {
+ mCustomRecentsLongPressHandlerCandidates.clear();
+
+ PackageManager pm = mContext.getPackageManager();
+ Intent intent = new Intent(cyanogenmod.content.Intent.ACTION_RECENTS_LONG_PRESS);
+
+ // Search for all apps that can handle ACTION_RECENTS_LONG_PRESS
+ List<ResolveInfo> activities = pm.queryIntentActivities(intent,
+ PackageManager.MATCH_DEFAULT_ONLY);
+ for (ResolveInfo info : activities) {
+ // Only cache packages that are not disabled
+ int packageState = mContext.getPackageManager().getApplicationEnabledSetting(
+ info.activityInfo.packageName);
+
+ if (packageState != PackageManager.COMPONENT_ENABLED_STATE_DISABLED &&
+ packageState != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
+
+ mCustomRecentsLongPressHandlerCandidates.add(
+ new ComponentName(info.activityInfo.packageName, info.activityInfo.name));
+ }
+
+ }
+ }
+ }
+
+ private ActivityManager.RunningTaskInfo getLastTask(final ActivityManager am) {
+ final String defaultHomePackage = resolveCurrentLauncherPackage();
+ List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(5);
+
+ for (int i = 1; i < tasks.size(); i++) {
+ String packageName = tasks.get(i).topActivity.getPackageName();
+ if (!packageName.equals(defaultHomePackage)
+ && !packageName.equals(mContext.getPackageName())) {
+ return tasks.get(i);
+ }
+ }
+
+ return null;
+ }
+
+ private String resolveCurrentLauncherPackage() {
+ final Intent launcherIntent = new Intent(Intent.ACTION_MAIN)
+ .addCategory(Intent.CATEGORY_HOME);
+ final PackageManager pm = mContext.getPackageManager();
+ final ResolveInfo launcherInfo = pm.resolveActivity(launcherIntent, 0);
+ return launcherInfo.activityInfo.packageName;
+ }
+
// Recents
@Override
@@ -4143,7 +5381,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
pm.wakeUp(SystemClock.uptimeMillis(), "com.android.systemui:CAMERA_GESTURE");
mStatusBarKeyguardViewManager.notifyDeviceWakeUpRequested();
}
- vibrateForCameraGesture();
+ if (source != StatusBarManager.CAMERA_LAUNCH_SOURCE_SCREEN_GESTURE) {
+ vibrateForCameraGesture();
+ }
if (!mStatusBarKeyguardViewManager.isShowing()) {
startActivity(KeyguardBottomAreaView.INSECURE_CAMERA_INTENT,
true /* dismissShade */);
@@ -4178,6 +5418,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
updateDozingState();
}
+ public VisualizerView getVisualizer() {
+ return mVisualizerView;
+ }
+
+ public boolean isShowingLiveLockScreenView() {
+ return mLiveLockScreenController.isShowingLiveLockScreenView();
+ }
+
+ public void slideNotificationPanelIn() {
+ mNotificationPanel.slideLockScreenIn();
+ }
+
private final class ShadeUpdates {
private final ArraySet<String> mVisibleNotifications = new ArraySet<String>();
private final ArraySet<String> mNewVisibleNotifications = new ArraySet<String>();
@@ -4330,4 +5582,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
}
+
+ public boolean isAffordanceSwipeInProgress() {
+ return mNotificationPanel.isAffordanceSwipeInProgress();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index 83edc96..1395ff6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -20,18 +20,29 @@ import android.app.ActivityManagerNative;
import android.app.AlarmManager;
import android.app.AlarmManager.AlarmClockInfo;
import android.app.IUserSwitchObserver;
+import android.app.PendingIntent;
import android.app.StatusBarManager;
+import android.bluetooth.BluetoothAssignedNumbers;
+import android.bluetooth.BluetoothHeadset;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.UserInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.database.ContentObserver;
+import android.graphics.Bitmap;
import android.media.AudioManager;
+import android.net.Uri;
+import android.os.Binder;
import android.os.Handler;
import android.os.IRemoteCallback;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings;
import android.provider.Settings.Global;
import android.telecom.TelecomManager;
import android.util.Log;
@@ -46,6 +57,17 @@ import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.CastController.CastDevice;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.UserInfoController;
+import com.android.systemui.statusbar.policy.SuController;
+
+import cyanogenmod.app.CMStatusBarManager;
+import cyanogenmod.app.CustomTile;
+import cyanogenmod.providers.CMSettings;
+
+import org.cyanogenmod.internal.util.QSUtils;
+import org.cyanogenmod.internal.util.QSUtils.OnQSChanged;
+import org.cyanogenmod.internal.util.QSConstants;
+
+import java.util.ArrayList;
/**
* This class contains all of the policy about which icons are installed in the status
@@ -64,6 +86,7 @@ public class PhoneStatusBarPolicy implements Callback {
private static final String SLOT_VOLUME = "volume";
private static final String SLOT_ALARM_CLOCK = "alarm_clock";
private static final String SLOT_MANAGED_PROFILE = "managed_profile";
+ private static final String SLOT_SU = "su";
private final Context mContext;
private final StatusBarManager mService;
@@ -72,6 +95,8 @@ public class PhoneStatusBarPolicy implements Callback {
private final HotspotController mHotspot;
private final AlarmManager mAlarmManager;
private final UserInfoController mUserInfoController;
+ private boolean mAlarmIconVisible;
+ private final SuController mSuController;
// Assume it's all good unless we hear otherwise. We don't always seem
// to get broadcasts that it *is* there.
@@ -80,6 +105,7 @@ public class PhoneStatusBarPolicy implements Callback {
private boolean mZenVisible;
private boolean mVolumeVisible;
private boolean mCurrentUserSetup;
+ private Float mBluetoothBatteryLevel = null;
private int mZen;
@@ -106,6 +132,9 @@ public class PhoneStatusBarPolicy implements Callback {
else if (action.equals(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED)) {
updateTTY(intent);
}
+ else if (action.equals(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)) {
+ updateBluetoothBattery(intent);
+ }
}
};
@@ -117,8 +146,15 @@ public class PhoneStatusBarPolicy implements Callback {
}
};
+ private final OnQSChanged mQSListener = new OnQSChanged() {
+ @Override
+ public void onQSChanged() {
+ processQSChangedLocked();
+ }
+ };
+
public PhoneStatusBarPolicy(Context context, CastController cast, HotspotController hotspot,
- UserInfoController userInfoController, BluetoothController bluetooth) {
+ UserInfoController userInfoController, BluetoothController bluetooth, SuController su) {
mContext = context;
mCast = cast;
mHotspot = hotspot;
@@ -127,6 +163,7 @@ public class PhoneStatusBarPolicy implements Callback {
mService = (StatusBarManager) context.getSystemService(Context.STATUS_BAR_SERVICE);
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
mUserInfoController = userInfoController;
+ mSuController = su;
// listen for broadcasts
IntentFilter filter = new IntentFilter();
@@ -135,6 +172,9 @@ public class PhoneStatusBarPolicy implements Callback {
filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION);
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
filter.addAction(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED);
+ filter.addAction(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT);
+ filter.addCategory(BluetoothHeadset.VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY
+ + "." + Integer.toString(BluetoothAssignedNumbers.APPLE));
mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
// listen for user / profile change.
@@ -151,9 +191,16 @@ public class PhoneStatusBarPolicy implements Callback {
// bluetooth status
updateBluetooth();
+ //Update initial tty mode
+ updateTTYMode();
+
// Alarm clock
mService.setIcon(SLOT_ALARM_CLOCK, R.drawable.stat_sys_alarm, 0, null);
mService.setIconVisibility(SLOT_ALARM_CLOCK, false);
+ mAlarmIconObserver.onChange(true);
+ mContext.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.SHOW_ALARM_ICON),
+ false, mAlarmIconObserver);
// zen
mService.setIcon(SLOT_ZEN, R.drawable.stat_sys_zen_important, 0, null);
@@ -175,12 +222,33 @@ public class PhoneStatusBarPolicy implements Callback {
mService.setIconVisibility(SLOT_HOTSPOT, mHotspot.isHotspotEnabled());
mHotspot.addCallback(mHotspotCallback);
+ // su
+ mService.setIcon(SLOT_SU, R.drawable.stat_sys_su, 0, null);
+ mService.setIconVisibility(SLOT_SU, false);
+ mSuController.addCallback(mSuCallback);
+
// managed profile
mService.setIcon(SLOT_MANAGED_PROFILE, R.drawable.stat_sys_managed_profile_status, 0,
mContext.getString(R.string.accessibility_managed_profile));
mService.setIconVisibility(SLOT_MANAGED_PROFILE, false);
+
+ QSUtils.registerObserverForQSChanges(mContext, mQSListener);
}
+ private ContentObserver mAlarmIconObserver = new ContentObserver(null) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ mAlarmIconVisible = CMSettings.System.getInt(mContext.getContentResolver(),
+ CMSettings.System.SHOW_ALARM_ICON, 1) == 1;
+ updateAlarm();
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onChange(selfChange, null);
+ }
+ };
+
public void setZenMode(int zen) {
mZen = zen;
updateVolumeZen();
@@ -192,7 +260,7 @@ public class PhoneStatusBarPolicy implements Callback {
final boolean zenNone = mZen == Global.ZEN_MODE_NO_INTERRUPTIONS;
mService.setIcon(SLOT_ALARM_CLOCK, zenNone ? R.drawable.stat_sys_alarm_dim
: R.drawable.stat_sys_alarm, 0, null);
- mService.setIconVisibility(SLOT_ALARM_CLOCK, mCurrentUserSetup && hasAlarm);
+ mService.setIconVisibility(SLOT_ALARM_CLOCK, mCurrentUserSetup && hasAlarm && mAlarmIconVisible);
}
private final void updateSimState(Intent intent) {
@@ -236,8 +304,17 @@ public class PhoneStatusBarPolicy implements Callback {
if (DndTile.isVisible(mContext) || DndTile.isCombinedIcon(mContext)) {
zenVisible = mZen != Global.ZEN_MODE_OFF;
- zenIconId = mZen == Global.ZEN_MODE_NO_INTERRUPTIONS
- ? R.drawable.stat_sys_dnd_total_silence : R.drawable.stat_sys_dnd;
+ switch(mZen) {
+ case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS:
+ zenIconId = R.drawable.stat_sys_dnd_priority;
+ break;
+ case Global.ZEN_MODE_NO_INTERRUPTIONS:
+ zenIconId = R.drawable.stat_sys_dnd_total_silence;
+ break;
+ default:
+ zenIconId = R.drawable.stat_sys_dnd;
+ break;
+ }
zenDescription = mContext.getString(R.string.quick_settings_dnd_label);
} else if (mZen == Global.ZEN_MODE_NO_INTERRUPTIONS) {
zenVisible = true;
@@ -289,6 +366,27 @@ public class PhoneStatusBarPolicy implements Callback {
updateBluetooth();
}
+ private void updateBluetoothBattery(Intent intent) {
+ if (intent.hasExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD)) {
+ String command = intent.getStringExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD);
+ if ("+IPHONEACCEV".equals(command)) {
+ Object[] args = (Object[]) intent.getSerializableExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS);
+ if (args.length >= 3 && args[0] instanceof Integer && ((Integer)args[0])*2+1<=args.length) {
+ for (int i=0;i<((Integer)args[0]);i++) {
+ if (!(args[i*2+1] instanceof Integer) || !(args[i*2+2] instanceof Integer)) {
+ continue;
+ }
+ if (args[i*2+1].equals(1)) {
+ mBluetoothBatteryLevel = (((Integer)args[i*2+2])+1)/10.0f;
+ updateBluetooth();
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
private final void updateBluetooth() {
int iconId = R.drawable.stat_sys_data_bluetooth;
String contentDescription =
@@ -297,8 +395,24 @@ public class PhoneStatusBarPolicy implements Callback {
if (mBluetooth != null) {
bluetoothEnabled = mBluetooth.isBluetoothEnabled();
if (mBluetooth.isBluetoothConnected()) {
- iconId = R.drawable.stat_sys_data_bluetooth_connected;
+ if (mBluetoothBatteryLevel == null) {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected;
+ } else {
+ if (mBluetoothBatteryLevel<=0.15f) {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected_battery_1;
+ } else if (mBluetoothBatteryLevel<=0.375f) {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected_battery_2;
+ } else if (mBluetoothBatteryLevel<=0.625f) {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected_battery_3;
+ } else if (mBluetoothBatteryLevel<=0.85f) {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected_battery_4;
+ } else {
+ iconId = R.drawable.stat_sys_data_bluetooth_connected_battery_5;
+ }
+ }
contentDescription = mContext.getString(R.string.accessibility_bluetooth_connected);
+ } else {
+ mBluetoothBatteryLevel = null;
}
}
@@ -326,6 +440,29 @@ public class PhoneStatusBarPolicy implements Callback {
}
}
+ private boolean isWiredHeadsetOn() {
+ AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+ return audioManager.isWiredHeadsetOn();
+ }
+
+ private final void updateTTYMode() {
+ int ttyMode = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.PREFERRED_TTY_MODE, TelecomManager.TTY_MODE_OFF);
+ boolean enabled = ttyMode != TelecomManager.TTY_MODE_OFF;
+ if (DEBUG) Log.v(TAG, "updateTTYMode: enabled: " + enabled);
+ if (enabled && isWiredHeadsetOn()) {
+ // TTY is on
+ if (DEBUG) Log.v(TAG, "updateTTYMode: set TTY on");
+ mService.setIcon(SLOT_TTY, R.drawable.stat_sys_tty_mode, 0,
+ mContext.getString(R.string.accessibility_tty_enabled));
+ mService.setIconVisibility(SLOT_TTY, true);
+ } else {
+ // TTY is off
+ if (DEBUG) Log.v(TAG, "updateTTYMode: set TTY off");
+ mService.setIconVisibility(SLOT_TTY, false);
+ }
+ }
+
private void updateCast() {
boolean isCasting = false;
for (CastDevice device : mCast.getCastDevices()) {
@@ -410,6 +547,16 @@ public class PhoneStatusBarPolicy implements Callback {
}
};
+ private void updateSu() {
+ mService.setIconVisibility(SLOT_SU, mSuController.hasActiveSessions());
+ final int userId = UserHandle.myUserId();
+ if (isSuEnabledForUser(userId)) {
+ publishSuCustomTile();
+ } else {
+ unpublishSuCustomTile();
+ }
+ }
+
private final CastController.Callback mCastCallback = new CastController.Callback() {
@Override
public void onCastDevicesChanged() {
@@ -431,4 +578,118 @@ public class PhoneStatusBarPolicy implements Callback {
mCurrentUserSetup = userSetup;
updateAlarm();
}
+
+ private final SuController.Callback mSuCallback = new SuController.Callback() {
+ @Override
+ public void onSuSessionsChanged() {
+ updateSu();
+ }
+ };
+
+ private void publishSuCustomTile() {
+ // This action should be performed as system
+ final int userId = UserHandle.myUserId();
+ long token = Binder.clearCallingIdentity();
+ try {
+ final UserHandle user = new UserHandle(userId);
+ final int icon = QSUtils.getDynamicQSTileResIconId(mContext, userId,
+ QSConstants.DYNAMIC_TILE_SU);
+ final String contentDesc = QSUtils.getDynamicQSTileLabel(mContext, userId,
+ QSConstants.DYNAMIC_TILE_SU);
+ final Context resourceContext = QSUtils.getQSTileContext(mContext, userId);
+
+ CustomTile.ListExpandedStyle style = new CustomTile.ListExpandedStyle();
+ ArrayList<CustomTile.ExpandedListItem> items = new ArrayList<>();
+ for (String pkg : mSuController.getPackageNamesWithActiveSuSessions()) {
+ CustomTile.ExpandedListItem item = new CustomTile.ExpandedListItem();
+ int appIconIdentifier = getActiveSuApkDrawableId(pkg);
+ if (appIconIdentifier != -1) {
+ item.setExpandedListItemDrawable(appIconIdentifier);
+ } else {
+ item.setExpandedListItemDrawable(icon);
+ }
+ item.setExpandedListItemTitle(getActiveSuApkLabel(pkg));
+ item.setExpandedListItemSummary(pkg);
+ item.setExpandedListItemOnClickIntent(getCustomTilePendingIntent(pkg));
+ items.add(item);
+ }
+ style.setListItems(items);
+
+ CMStatusBarManager statusBarManager = CMStatusBarManager.getInstance(mContext);
+ CustomTile tile = new CustomTile.Builder(resourceContext)
+ .setLabel(contentDesc)
+ .setContentDescription(contentDesc)
+ .setIcon(icon)
+ .setOnSettingsClickIntent(getCustomTileSettingsIntent())
+ .setExpandedStyle(style)
+ .build();
+ statusBarManager.publishTileAsUser(QSConstants.DYNAMIC_TILE_SU,
+ PhoneStatusBarPolicy.class.hashCode(), tile, user);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private void unpublishSuCustomTile() {
+ // This action should be performed as system
+ final int userId = UserHandle.myUserId();
+ long token = Binder.clearCallingIdentity();
+ try {
+ CMStatusBarManager statusBarManager = CMStatusBarManager.getInstance(mContext);
+ statusBarManager.removeTileAsUser(QSConstants.DYNAMIC_TILE_SU,
+ PhoneStatusBarPolicy.class.hashCode(), new UserHandle(userId));
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private PendingIntent getCustomTilePendingIntent(String pkg) {
+ Intent i = new Intent(Intent.ACTION_MAIN);
+ i.setPackage(pkg);
+ i.addCategory(Intent.CATEGORY_LAUNCHER);
+ i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ return PendingIntent.getActivity(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
+ }
+
+ private Intent getCustomTileSettingsIntent() {
+ Intent i = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
+ i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ return i;
+ }
+
+ private String getActiveSuApkLabel(String pkg) {
+ final PackageManager pm = mContext.getPackageManager();
+ ApplicationInfo ai = null;
+ try {
+ ai = pm.getApplicationInfo(pkg, 0);
+ } catch (final NameNotFoundException e) {
+ // Ignore
+ }
+ return (String) (ai != null ? pm.getApplicationLabel(ai) : pkg);
+ }
+
+ private int getActiveSuApkDrawableId(String pkg) {
+ final PackageManager pm = mContext.getPackageManager();
+ ApplicationInfo ai;
+ try {
+ ai = pm.getApplicationInfo(pkg, 0);
+ } catch (final NameNotFoundException e) {
+ return -1;
+ }
+ return ai.icon;
+ }
+
+ private boolean isSuEnabledForUser(int userId) {
+ final boolean hasSuAccess = mSuController.hasActiveSessions();
+ return (userId == UserHandle.USER_OWNER) && hasSuAccess;
+ }
+
+ private void processQSChangedLocked() {
+ final int userId = UserHandle.myUserId();
+ if (isSuEnabledForUser(userId)) {
+ publishSuCustomTile();
+ } else {
+ unpublishSuCustomTile();
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
index fb1addf..bb3095e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
@@ -36,7 +36,10 @@ public final class PhoneStatusBarTransitions extends BarTransitions {
private Animator mCurrentAnimation;
public PhoneStatusBarTransitions(PhoneStatusBarView view) {
- super(view, R.drawable.status_background);
+ super(view, R.drawable.status_background, R.color.status_bar_background_opaque,
+ R.color.status_bar_background_semi_transparent,
+ R.color.status_bar_background_transparent,
+ com.android.internal.R.color.battery_saver_mode_color);
mView = view;
final Resources res = mView.getContext().getResources();
mIconAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index c0887ca..8c9daee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -111,6 +111,7 @@ public class PhoneStatusBarView extends PanelBar {
@Override
public void onPanelPeeked() {
super.onPanelPeeked();
+ removePendingHideExpandedRunnables();
mBar.makeExpandedVisible(false);
}
@@ -193,6 +194,7 @@ public class PhoneStatusBarView extends PanelBar {
super.panelExpansionChanged(panel, frac, expanded);
mPanelFraction = frac;
updateScrimFraction();
+ mBar.setBlur(frac);
}
private void updateScrimFraction() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
index e66c63b..e88ed73 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -16,29 +16,57 @@
package com.android.systemui.statusbar.phone;
+import android.app.ActivityManager;
import android.app.PendingIntent;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Process;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.ArrayMap;
import android.util.Log;
+import com.android.internal.logging.MetricsLogger;
+import android.widget.RemoteViews;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
+import com.android.systemui.qs.tiles.AdbOverNetworkTile;
import com.android.systemui.qs.tiles.AirplaneModeTile;
+import com.android.systemui.qs.tiles.AmbientDisplayTile;
+import com.android.systemui.qs.tiles.BatterySaverTile;
import com.android.systemui.qs.tiles.BluetoothTile;
+import com.android.systemui.qs.tiles.CaffeineTile;
import com.android.systemui.qs.tiles.CastTile;
import com.android.systemui.qs.tiles.CellularTile;
import com.android.systemui.qs.tiles.ColorInversionTile;
+import com.android.systemui.qs.tiles.CompassTile;
+import com.android.systemui.qs.tiles.CustomQSTile;
import com.android.systemui.qs.tiles.DndTile;
+import com.android.systemui.qs.tiles.EditTile;
import com.android.systemui.qs.tiles.FlashlightTile;
+import com.android.systemui.qs.tiles.HeadsUpTile;
import com.android.systemui.qs.tiles.HotspotTile;
import com.android.systemui.qs.tiles.IntentTile;
import com.android.systemui.qs.tiles.LocationTile;
+import com.android.systemui.qs.tiles.LockscreenToggleTile;
+import com.android.systemui.qs.tiles.NfcTile;
+import com.android.systemui.qs.tiles.PerfProfileTile;
+import com.android.systemui.qs.tiles.ProfilesTile;
import com.android.systemui.qs.tiles.RotationLockTile;
+import com.android.systemui.qs.tiles.ScreenTimeoutTile;
+import com.android.systemui.qs.tiles.SyncTile;
+import com.android.systemui.qs.tiles.UsbTetherTile;
+import com.android.systemui.qs.tiles.VolumeTile;
import com.android.systemui.qs.tiles.WifiTile;
+import com.android.systemui.statusbar.CustomTileData;
+import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.FlashlightController;
@@ -53,6 +81,10 @@ import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
+import cyanogenmod.app.CustomTileListenerService;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.providers.CMSettings;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -65,7 +97,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
private static final String TAG = "QSTileHost";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- protected static final String TILES_SETTING = "sysui_qs_tiles";
+ public static final int TILES_PER_PAGE = 8;
private final Context mContext;
private final PhoneStatusBar mStatusBar;
@@ -83,6 +115,10 @@ public class QSTileHost implements QSTile.Host, Tunable {
private final UserSwitcherController mUserSwitcherController;
private final KeyguardMonitor mKeyguard;
private final SecurityController mSecurity;
+ private final BatteryController mBattery;
+
+ private CustomTileData mCustomTileData;
+ private CustomTileListenerService mCustomTileListenerService;
private Callback mCallback;
@@ -92,7 +128,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
ZenModeController zen, HotspotController hotspot,
CastController cast, FlashlightController flashlight,
UserSwitcherController userSwitcher, KeyguardMonitor keyguard,
- SecurityController security) {
+ SecurityController security, BatteryController battery) {
mContext = context;
mStatusBar = statusBar;
mBluetooth = bluetooth;
@@ -106,19 +142,36 @@ public class QSTileHost implements QSTile.Host, Tunable {
mUserSwitcherController = userSwitcher;
mKeyguard = keyguard;
mSecurity = security;
+ mBattery = battery;
+ mCustomTileData = new CustomTileData();
final HandlerThread ht = new HandlerThread(QSTileHost.class.getSimpleName(),
Process.THREAD_PRIORITY_BACKGROUND);
ht.start();
mLooper = ht.getLooper();
- TunerService.get(mContext).addTunable(this, TILES_SETTING);
+ TunerService.get(mContext).addTunableByProvider(this, CMSettings.Secure.QS_TILES, true);
}
public void destroy() {
TunerService.get(mContext).removeTunable(this);
}
+ public boolean isEditing() {
+ if (mCallback != null) {
+ return mCallback.isEditing();
+ }
+ return false;
+ }
+
+ public void setEditing(boolean editing) {
+ mCallback.setEditing(editing);
+ }
+
+ void setCustomTileListenerService(CustomTileListenerService customTileListenerService) {
+ mCustomTileListenerService = customTileListenerService;
+ }
+
@Override
public void setCallback(Callback callback) {
mCallback = callback;
@@ -129,12 +182,33 @@ public class QSTileHost implements QSTile.Host, Tunable {
return mTiles.values();
}
+ public List<String> getTileSpecs() {
+ return mTileSpecs;
+ }
+
+ public String getSpec(QSTile<?> tile) {
+ for (Map.Entry<String, QSTile<?>> entry : mTiles.entrySet()) {
+ if (entry.getValue() == tile) {
+ return entry.getKey();
+ }
+ }
+ return null;
+ }
+
@Override
public void startActivityDismissingKeyguard(final Intent intent) {
mStatusBar.postStartActivityDismissingKeyguard(intent, 0);
}
@Override
+ public void removeCustomTile(StatusBarPanelCustomTile customTile) {
+ if (mCustomTileListenerService != null) {
+ mCustomTileListenerService.removeCustomTile(customTile.getPackage(),
+ customTile.getTag(), customTile.getId());
+ }
+ }
+
+ @Override
public void startActivityDismissingKeyguard(PendingIntent intent) {
mStatusBar.postStartActivityDismissingKeyguard(intent);
}
@@ -150,6 +224,11 @@ public class QSTileHost implements QSTile.Host, Tunable {
}
@Override
+ public RemoteViews.OnClickHandler getOnClickHandler() {
+ return mStatusBar.getOnClickHandler();
+ }
+
+ @Override
public Looper getLooper() {
return mLooper;
}
@@ -204,6 +283,11 @@ public class QSTileHost implements QSTile.Host, Tunable {
return mKeyguard;
}
+ @Override
+ public BatteryController getBatteryController() {
+ return mBattery;
+ }
+
public UserSwitcherController getUserSwitcherController() {
return mUserSwitcherController;
}
@@ -214,14 +298,14 @@ public class QSTileHost implements QSTile.Host, Tunable {
@Override
public void onTuningChanged(String key, String newValue) {
- if (!TILES_SETTING.equals(key)) {
+ if (!CMSettings.Secure.QS_TILES.equals(key)) {
return;
}
if (DEBUG) Log.d(TAG, "Recreating tiles");
final List<String> tileSpecs = loadTileSpecs(newValue);
if (tileSpecs.equals(mTileSpecs)) return;
for (Map.Entry<String, QSTile<?>> tile : mTiles.entrySet()) {
- if (!tileSpecs.contains(tile.getKey())) {
+ if (!tileSpecs.contains(tile.getKey()) && mCustomTileData.get(tile.getKey()) == null) {
if (DEBUG) Log.d(TAG, "Destroying tile: " + tile.getKey());
tile.getValue().destroy();
}
@@ -233,7 +317,14 @@ public class QSTileHost implements QSTile.Host, Tunable {
} else {
if (DEBUG) Log.d(TAG, "Creating tile: " + tileSpec);
try {
- newTiles.put(tileSpec, createTile(tileSpec));
+ if (mCustomTileData.get(tileSpec) != null) {
+ final CustomQSTile value = new CustomQSTile(this,
+ mCustomTileData.get(tileSpec).sbc);
+ newTiles.put(tileSpec, value);
+ } else {
+ final QSTile<?> tile = createTile(tileSpec);
+ newTiles.put(tileSpec, tile);
+ }
} catch (Throwable t) {
Log.w(TAG, "Error creating tile for spec: " + tileSpec, t);
}
@@ -248,7 +339,14 @@ public class QSTileHost implements QSTile.Host, Tunable {
}
}
- protected QSTile<?> createTile(String tileSpec) {
+ @Override
+ public void goToSettingsPage() {
+ if (mCallback != null) {
+ mCallback.goToSettingsPage();
+ }
+ }
+
+ public QSTile<?> createTile(String tileSpec) {
if (tileSpec.equals("wifi")) return new WifiTile(this);
else if (tileSpec.equals("bt")) return new BluetoothTile(this);
else if (tileSpec.equals("inversion")) return new ColorInversionTile(this);
@@ -260,13 +358,34 @@ public class QSTileHost implements QSTile.Host, Tunable {
else if (tileSpec.equals("location")) return new LocationTile(this);
else if (tileSpec.equals("cast")) return new CastTile(this);
else if (tileSpec.equals("hotspot")) return new HotspotTile(this);
+ else if (tileSpec.equals("edit")) return new EditTile(this);
+ else if (tileSpec.equals("adb_network")) return new AdbOverNetworkTile(this);
+ else if (tileSpec.equals("compass")) return new CompassTile(this);
+ else if (tileSpec.equals("nfc")) return new NfcTile(this);
+ else if (tileSpec.equals("profiles")) return new ProfilesTile(this);
+ else if (tileSpec.equals("sync")) return new SyncTile(this);
+ else if (tileSpec.equals("volume_panel")) return new VolumeTile(this);
+ else if (tileSpec.equals("usb_tether")) return new UsbTetherTile(this);
+ else if (tileSpec.equals("screen_timeout")) return new ScreenTimeoutTile(this);
+ else if (tileSpec.equals("performance")) return new PerfProfileTile(this);
+ else if (tileSpec.equals("lockscreen")) return new LockscreenToggleTile(this);
+ else if (tileSpec.equals("ambient_display")) return new AmbientDisplayTile(this);
+ else if (tileSpec.equals("heads_up")) return new HeadsUpTile(this);
+ else if (tileSpec.equals("battery_saver")) return new BatterySaverTile(this);
+ else if (tileSpec.equals("caffeine")) return new CaffeineTile(this);
else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(this,tileSpec);
- else throw new IllegalArgumentException("Bad tile spec: " + tileSpec);
+ else if (TextUtils.split(tileSpec, "\\|").length == 3) {
+ /** restores placeholder for
+ * {@link cyanogenmod.app.StatusBarPanelCustomTile#persistableKey()} **/
+ return new CustomQSTile(this, tileSpec);
+ } else
+ throw new IllegalArgumentException("Bad tile spec: " + tileSpec);
}
protected List<String> loadTileSpecs(String tileList) {
final Resources res = mContext.getResources();
- final String defaultTileList = res.getString(R.string.quick_settings_tiles_default);
+ final String defaultTileList = res.getString(org.cyanogenmod.platform.internal.
+ R.string.config_defaultQuickSettingsTiles);
if (tileList == null) {
tileList = res.getString(R.string.quick_settings_tiles);
if (DEBUG) Log.d(TAG, "Loaded tile specs from config: " + tileList);
@@ -287,6 +406,140 @@ public class QSTileHost implements QSTile.Host, Tunable {
tiles.add(tile);
}
}
+ // ensure edit tile is present, default placement should be handled in the default
+ // tile list.
+ if (!tiles.contains("edit")) {
+ tiles.add("edit");
+ }
return tiles;
}
+
+ public void remove(String tile) {
+ MetricsLogger.action(getContext(), MetricsLogger.TUNER_QS_REMOVE, tile);
+ List<String> tiles = new ArrayList<>(mTileSpecs);
+ tiles.remove(tile);
+ setTiles(tiles);
+ }
+
+ public void setTiles(List<String> tiles) {
+ CMSettings.Secure.putStringForUser(getContext().getContentResolver(),
+ CMSettings.Secure.QS_TILES,
+ TextUtils.join(",", tiles), ActivityManager.getCurrentUser());
+ }
+
+ public void initiateReset() {
+ if (mCallback != null) {
+ mCallback.resetTiles();
+ }
+ }
+
+ @Override
+ public void resetTiles() {
+ CMSettings.Secure.putStringForUser(getContext().getContentResolver(),
+ CMSettings.Secure.QS_TILES, "default", ActivityManager.getCurrentUser());
+ }
+
+ public QSTile<?> getTile(String spec) {
+ return mTiles.get(spec);
+ }
+
+ public static int getLabelResource(String spec) {
+ if (spec.equals("wifi")) return R.string.quick_settings_wifi_label;
+ else if (spec.equals("bt")) return R.string.quick_settings_bluetooth_label;
+ else if (spec.equals("inversion")) return R.string.quick_settings_inversion_label;
+ else if (spec.equals("cell")) return R.string.quick_settings_cellular_detail_title;
+ else if (spec.equals("airplane")) return R.string.airplane_mode;
+ else if (spec.equals("dnd")) return R.string.quick_settings_dnd_label;
+ else if (spec.equals("rotation")) return R.string.quick_settings_rotation_locked_label;
+ else if (spec.equals("flashlight")) return R.string.quick_settings_flashlight_label;
+ else if (spec.equals("location")) return R.string.quick_settings_location_label;
+ else if (spec.equals("cast")) return R.string.quick_settings_cast_title;
+ else if (spec.equals("hotspot")) return R.string.quick_settings_hotspot_label;
+ else if (spec.equals("edit")) return R.string.quick_settings_edit_label;
+ else if (spec.equals("adb_network")) return R.string.quick_settings_network_adb_label;
+ else if (spec.equals("compass")) return R.string.quick_settings_compass_label;
+ else if (spec.equals("nfc")) return R.string.quick_settings_nfc_label;
+ else if (spec.equals("profiles")) return R.string.quick_settings_profiles;
+ else if (spec.equals("sync")) return R.string.quick_settings_sync_label;
+ else if (spec.equals("volume_panel")) return R.string.quick_settings_volume_panel_label;
+ else if (spec.equals("usb_tether")) return R.string.quick_settings_usb_tether_label;
+ else if (spec.equals("screen_timeout")) return R.string.quick_settings_screen_timeout_detail_title;
+ else if (spec.equals("performance")) return R.string.qs_tile_performance;
+ else if (spec.equals("lockscreen")) return R.string.quick_settings_lockscreen_label;
+ else if (spec.equals("ambient_display")) return R.string.quick_settings_ambient_display_label;
+ else if (spec.equals("heads_up")) return R.string.quick_settings_heads_up_label;
+ else if (spec.equals("battery_saver")) return R.string.quick_settings_battery_saver_label;
+ else if (spec.equals("caffeine")) return R.string.quick_settings_caffeine_label;
+ return 0;
+ }
+
+ public static int getIconResource(String spec) {
+ if (spec.equals("wifi")) return R.drawable.ic_qs_wifi_full_4;
+ else if (spec.equals("bt")) return R.drawable.ic_qs_bluetooth_on;
+ else if (spec.equals("inversion")) return R.drawable.ic_invert_colors_enable_animation;
+ else if (spec.equals("cell")) return R.drawable.ic_qs_signal_full_4;
+ else if (spec.equals("airplane")) return R.drawable.ic_signal_airplane_enable;
+ else if (spec.equals("dnd")) return R.drawable.ic_dnd;
+ else if (spec.equals("rotation")) return R.drawable.ic_portrait_from_auto_rotate;
+ else if (spec.equals("flashlight")) return R.drawable.ic_signal_flashlight_enable;
+ else if (spec.equals("location")) return R.drawable.ic_signal_location_enable;
+ else if (spec.equals("cast")) return R.drawable.ic_qs_cast_on;
+ else if (spec.equals("hotspot")) return R.drawable.ic_hotspot_enable;
+ else if (spec.equals("edit")) return R.drawable.ic_qs_edit_tiles;
+ else if (spec.equals("adb_network")) return R.drawable.ic_qs_network_adb_on;
+ else if (spec.equals("compass")) return R.drawable.ic_qs_compass_on;
+ else if (spec.equals("nfc")) return R.drawable.ic_qs_nfc_on;
+ else if (spec.equals("profiles")) return R.drawable.ic_qs_profiles_on;
+ else if (spec.equals("sync")) return R.drawable.ic_qs_sync_on;
+ else if (spec.equals("volume_panel")) return R.drawable.ic_qs_volume_panel;
+ else if (spec.equals("usb_tether")) return R.drawable.ic_qs_usb_tether_on;
+ else if (spec.equals("screen_timeout")) return R.drawable.ic_qs_screen_timeout_short_avd;
+ else if (spec.equals("performance")) return R.drawable.ic_qs_perf_profile;
+ else if (spec.equals("lockscreen")) return R.drawable.ic_qs_lock_screen_on;
+ else if (spec.equals("ambient_display")) return R.drawable.ic_qs_ambientdisplay_on;
+ else if (spec.equals("heads_up")) return R.drawable.ic_qs_heads_up_on;
+ else if (spec.equals("battery_saver")) return R.drawable.ic_qs_battery_saver_on;
+ else if (spec.equals("caffeine")) return R.drawable.ic_qs_caffeine_on;
+ return 0;
+ }
+
+ void updateCustomTile(StatusBarPanelCustomTile sbc) {
+ synchronized (mTiles) {
+ if (mTiles.containsKey(sbc.persistableKey())) {
+ QSTile<?> tile = mTiles.get(sbc.persistableKey());
+ if (tile instanceof CustomQSTile) {
+ CustomQSTile qsTile = (CustomQSTile) tile;
+ qsTile.update(sbc);
+ }
+ }
+ }
+ }
+
+ void addCustomTile(StatusBarPanelCustomTile sbc) {
+ synchronized (mTiles) {
+ mCustomTileData.add(new CustomTileData.Entry(sbc));
+ mTileSpecs.add(sbc.persistableKey());
+ mTiles.put(sbc.persistableKey(), new CustomQSTile(this, sbc));
+ if (mCallback != null) {
+ mCallback.onTilesChanged();
+ }
+ }
+ }
+
+ void removeCustomTileSysUi(String key) {
+ synchronized (mTiles) {
+ if (mTiles.containsKey(key)) {
+ mTileSpecs.remove(key);
+ mTiles.remove(key);
+ mCustomTileData.remove(key);
+ if (mCallback != null) {
+ mCallback.onTilesChanged();
+ }
+ }
+ }
+ }
+
+ public CustomTileData getCustomTileData() {
+ return mCustomTileData;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index b9e9292..975cb77 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -45,9 +45,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
public static final long ANIMATION_DURATION = 220;
public static final Interpolator KEYGUARD_FADE_OUT_INTERPOLATOR
= new PathInterpolator(0f, 0, 0.7f, 1f);
+ public static final float SCRIM_BEHIND_ALPHA_KEYGUARD = 0.45f;
private static final float SCRIM_BEHIND_ALPHA = 0.62f;
- private static final float SCRIM_BEHIND_ALPHA_KEYGUARD = 0.45f;
private static final float SCRIM_BEHIND_ALPHA_UNLOCKING = 0.2f;
private static final float SCRIM_IN_FRONT_ALPHA = 0.75f;
private static final int TAG_KEY_ANIM = R.id.scrim;
@@ -255,7 +255,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
}
}
- private void setScrimBehindColor(float alpha) {
+ public void setScrimBehindColor(float alpha) {
setScrimColor(mScrimBehind, alpha);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java
index 18db5b8..3e0aa18 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java
@@ -17,18 +17,18 @@ package com.android.systemui.statusbar.phone;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
+import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
-import android.graphics.drawable.RippleDrawable;
-import android.os.Handler;
-import android.os.Message;
import android.util.AttributeSet;
+import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
+import android.view.animation.DecelerateInterpolator;
import com.android.keyguard.AlphaOptimizedImageButton;
public class SettingsButton extends AlphaOptimizedImageButton {
@@ -56,6 +56,10 @@ public class SettingsButton extends AlphaOptimizedImageButton {
return mUpToSpeed;
}
+ public void consumeClick() {
+ mUpToSpeed = false;
+ }
+
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
@@ -78,6 +82,7 @@ public class SettingsButton extends AlphaOptimizedImageButton {
if ((x < -mSlop) || (y < -mSlop) || (x > getWidth() + mSlop)
|| (y > getHeight() + mSlop)) {
cancelLongClick();
+ startExitAnimation();
}
break;
}
@@ -99,32 +104,11 @@ public class SettingsButton extends AlphaOptimizedImageButton {
}
private void startExitAnimation() {
+ cancelAnimation();
animate()
- .translationX(((View) getParent().getParent()).getWidth() - getX())
- .alpha(0)
- .setDuration(RUN_DURATION)
- .setInterpolator(AnimationUtils.loadInterpolator(mContext,
- android.R.interpolator.accelerate_cubic))
- .setListener(new AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- setAlpha(1f);
- setTranslationX(0);
- cancelLongClick();
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- }
- })
+ .rotation(0)
+ .setDuration(ACCEL_LENGTH)
+ .setInterpolator(new DecelerateInterpolator(4))
.start();
}
@@ -164,6 +148,8 @@ public class SettingsButton extends AlphaOptimizedImageButton {
mAnimator.setDuration(FULL_SPEED_LENGTH);
mAnimator.setRepeatCount(Animation.INFINITE);
mAnimator.start();
+
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
}
private final Runnable mLongPressCallback = new Runnable() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
index 971978d..f9b1f38 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
@@ -16,18 +16,31 @@
package com.android.systemui.statusbar.phone;
+import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
+import android.content.ContentUris;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
+import android.os.Handler;
+import android.os.IRemoteCallback;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.provider.AlarmClock;
+import android.provider.CalendarContract;
+import android.provider.Settings;
+import android.net.Uri;
import android.util.AttributeSet;
+import android.util.Log;
import android.util.MathUtils;
import android.util.TypedValue;
import android.view.View;
@@ -41,30 +54,42 @@ import android.widget.TextView;
import android.widget.Toast;
import com.android.keyguard.KeyguardStatusView;
+import com.android.systemui.BatteryLevelTextView;
import com.android.systemui.BatteryMeterView;
+import com.android.systemui.DockBatteryMeterView;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
+import com.android.systemui.qs.QSDragPanel;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.DockBatteryController;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.EmergencyListener;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.UserInfoController;
+import com.android.systemui.statusbar.policy.WeatherController;
+import com.android.systemui.statusbar.policy.WeatherControllerImpl;
import com.android.systemui.tuner.TunerService;
import java.text.NumberFormat;
+import cyanogenmod.app.StatusBarPanelCustomTile;
+import cyanogenmod.providers.CMSettings;
+import cyanogenmod.weather.util.WeatherUtils;
+import org.cyanogenmod.internal.logging.CMMetricsLogger;
+
/**
* The view to manage the header area in the expanded status bar.
*/
public class StatusBarHeaderView extends RelativeLayout implements View.OnClickListener,
- BatteryController.BatteryStateChangeCallback, NextAlarmController.NextAlarmChangeCallback,
- EmergencyListener {
+ NextAlarmController.NextAlarmChangeCallback, WeatherController.Callback, EmergencyListener {
private boolean mExpanded;
private boolean mListening;
private ViewGroup mSystemIconsContainer;
+ private ViewGroup mWeatherContainer;
private View mSystemIconsSuperContainer;
private View mDateGroup;
private View mClock;
@@ -83,8 +108,11 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private Switch mQsDetailHeaderSwitch;
private ImageView mQsDetailHeaderProgress;
private TextView mEmergencyCallsOnly;
- private TextView mBatteryLevel;
+ private BatteryLevelTextView mBatteryLevel;
+ private BatteryLevelTextView mDockBatteryLevel;
private TextView mAlarmStatus;
+ private TextView mWeatherLine1, mWeatherLine2;
+ private TextView mEditTileDoneText;
private boolean mShowEmergencyCallsOnly;
private boolean mAlarmShowing;
@@ -112,9 +140,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private float mAvatarCollapsedScaleFactor;
private ActivityStarter mActivityStarter;
- private BatteryController mBatteryController;
private NextAlarmController mNextAlarmController;
- private QSPanel mQSPanel;
+ private WeatherController mWeatherController;
+ private QSDragPanel mQSPanel;
private final Rect mClipBounds = new Rect();
@@ -127,6 +155,14 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private float mCurrentT;
private boolean mShowingDetail;
private boolean mDetailTransitioning;
+ private SettingsObserver mSettingsObserver;
+ private boolean mShowWeather;
+ private boolean mShowBatteryTextExpanded;
+
+ private QSTile.DetailAdapter mEditingDetailAdapter;
+ private boolean mEditing;
+
+ private UserInfoController mUserInfoController;
public StatusBarHeaderView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -139,7 +175,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mSystemIconsContainer = (ViewGroup) findViewById(R.id.system_icons_container);
mSystemIconsSuperContainer.setOnClickListener(this);
mDateGroup = findViewById(R.id.date_group);
+ mDateGroup.setOnClickListener(this);
mClock = findViewById(R.id.clock);
+ mClock.setOnClickListener(this);
mTime = (TextView) findViewById(R.id.time_view);
mAmPm = (TextView) findViewById(R.id.am_pm_view);
mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch);
@@ -155,11 +193,18 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mQsDetailHeaderSwitch = (Switch) mQsDetailHeader.findViewById(android.R.id.toggle);
mQsDetailHeaderProgress = (ImageView) findViewById(R.id.qs_detail_header_progress);
mEmergencyCallsOnly = (TextView) findViewById(R.id.header_emergency_calls_only);
- mBatteryLevel = (TextView) findViewById(R.id.battery_level);
+ mBatteryLevel = (BatteryLevelTextView) findViewById(R.id.battery_level_text);
+ mDockBatteryLevel = (BatteryLevelTextView) findViewById(R.id.dock_battery_level_text);
mAlarmStatus = (TextView) findViewById(R.id.alarm_status);
mAlarmStatus.setOnClickListener(this);
mSignalCluster = findViewById(R.id.signal_cluster);
mSystemIcons = (LinearLayout) findViewById(R.id.system_icons);
+ mWeatherContainer = (LinearLayout) findViewById(R.id.weather_container);
+ mWeatherContainer.setOnClickListener(this);
+ mWeatherLine1 = (TextView) findViewById(R.id.weather_line_1);
+ mWeatherLine2 = (TextView) findViewById(R.id.weather_line_2);
+ mEditTileDoneText = (TextView) findViewById(R.id.done);
+ mSettingsObserver = new SettingsObserver(new Handler());
loadDimens();
updateVisibilities();
updateClockScale();
@@ -188,9 +233,18 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
// RenderThread is doing more harm than good when touching the header (to expand quick
// settings), so disable it for this view
- ((RippleDrawable) getBackground()).setForceSoftware(true);
- ((RippleDrawable) mSettingsButton.getBackground()).setForceSoftware(true);
- ((RippleDrawable) mSystemIconsSuperContainer.getBackground()).setForceSoftware(true);
+ Drawable d = getBackground();
+ if (d instanceof RippleDrawable) {
+ ((RippleDrawable) d).setForceSoftware(true);
+ }
+ d = mSettingsButton.getBackground();
+ if (d instanceof RippleDrawable) {
+ ((RippleDrawable) d).setForceSoftware(true);
+ }
+ d = mSystemIconsSuperContainer.getBackground();
+ if (d instanceof RippleDrawable) {
+ ((RippleDrawable) d).setForceSoftware(true);
+ }
}
@Override
@@ -211,7 +265,6 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- FontSizeUtils.updateFontSize(mBatteryLevel, R.dimen.battery_level_text_size);
FontSizeUtils.updateFontSize(mEmergencyCallsOnly,
R.dimen.qs_emergency_calls_only_text_size);
FontSizeUtils.updateFontSize(mDateCollapsed, R.dimen.qs_date_collapsed_size);
@@ -228,10 +281,23 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mClockExpandedSize = getResources().getDimensionPixelSize(R.dimen.qs_time_expanded_size);
mClockCollapsedScaleFactor = (float) mClockCollapsedSize / (float) mClockExpandedSize;
+ if (mEditTileDoneText != null) {
+ mEditTileDoneText.setText(R.string.quick_settings_done);
+ }
+
updateClockScale();
updateClockCollapsedMargin();
}
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ if (mUserInfoController != null) {
+ mUserInfoController.removeListener(mUserInfoChangedListener);
+ }
+ setListening(false);
+ }
+
private void updateClockCollapsedMargin() {
Resources res = getResources();
int padding = res.getDimensionPixelSize(R.dimen.clock_collapsed_bottom_margin);
@@ -274,17 +340,42 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
public void setActivityStarter(ActivityStarter activityStarter) {
mActivityStarter = activityStarter;
+ if (mMultiUserSwitch != null) {
+ mMultiUserSwitch.setActivityStarter(activityStarter);
+ }
}
public void setBatteryController(BatteryController batteryController) {
- mBatteryController = batteryController;
- ((BatteryMeterView) findViewById(R.id.battery)).setBatteryController(batteryController);
+ BatteryMeterView v = ((BatteryMeterView) findViewById(R.id.battery));
+ v.setBatteryStateRegistar(batteryController);
+ v.setBatteryController(batteryController);
+ mBatteryLevel.setBatteryStateRegistar(batteryController);
+ }
+
+ public void setDockBatteryController(DockBatteryController dockBatteryController) {
+ DockBatteryMeterView v = ((DockBatteryMeterView) findViewById(R.id.dock_battery));
+ if (dockBatteryController != null) {
+ v.setBatteryStateRegistar(dockBatteryController);
+ mDockBatteryLevel.setBatteryStateRegistar(dockBatteryController);
+ } else {
+ if (v != null) {
+ removeView(v);
+ }
+ if (mDockBatteryLevel != null) {
+ removeView(mDockBatteryLevel);
+ mDockBatteryLevel = null;
+ }
+ }
}
public void setNextAlarmController(NextAlarmController nextAlarmController) {
mNextAlarmController = nextAlarmController;
}
+ public void setWeatherController(WeatherController weatherController) {
+ mWeatherController = weatherController;
+ }
+
public int getCollapsedHeight() {
return mCollapsedHeight;
}
@@ -305,6 +396,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
boolean changed = expanded != mExpanded;
mExpanded = expanded;
if (changed) {
+ if (mShowingDetail && !expanded) {
+ mQsPanelCallback.onShowingDetail(null);
+ }
updateEverything();
}
}
@@ -335,14 +429,18 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mDateExpanded.setVisibility(mExpanded && mAlarmShowing ? View.INVISIBLE : View.VISIBLE);
mAlarmStatus.setVisibility(mExpanded && mAlarmShowing ? View.VISIBLE : View.INVISIBLE);
mSettingsContainer.setVisibility(mExpanded ? View.VISIBLE : View.INVISIBLE);
- mQsDetailHeader.setVisibility(mExpanded && mShowingDetail? View.VISIBLE : View.INVISIBLE);
+ mWeatherContainer.setVisibility(mExpanded && mShowWeather ? View.VISIBLE : View.GONE);
+ mQsDetailHeader.setVisibility(mExpanded && mShowingDetail ? View.VISIBLE : View.INVISIBLE);
if (mSignalCluster != null) {
updateSignalClusterDetachment();
}
mEmergencyCallsOnly.setVisibility(mExpanded && mShowEmergencyCallsOnly ? VISIBLE : GONE);
- mBatteryLevel.setVisibility(mExpanded ? View.VISIBLE : View.GONE);
- mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility(
- TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE);
+ mBatteryLevel.setForceShown(mExpanded && mShowBatteryTextExpanded);
+ mBatteryLevel.setVisibility(View.VISIBLE);
+ if (mDockBatteryLevel != null) {
+ mDockBatteryLevel.setForceShown(mExpanded && mShowBatteryTextExpanded);
+ mDockBatteryLevel.setVisibility(View.VISIBLE);
+ }
}
private void updateSignalClusterDetachment() {
@@ -375,11 +473,13 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private void updateListeners() {
if (mListening) {
- mBatteryController.addStateChangedCallback(this);
+ mSettingsObserver.observe();
mNextAlarmController.addStateChangedCallback(this);
+ mWeatherController.addCallback(this);
} else {
- mBatteryController.removeStateChangedCallback(this);
mNextAlarmController.removeStateChangedCallback(this);
+ mWeatherController.removeCallback(this);
+ mSettingsObserver.unobserve();
}
}
@@ -408,17 +508,6 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
}
@Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
- String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);
- mBatteryLevel.setText(percentage);
- }
-
- @Override
- public void onPowerSaveChanged() {
- // could not care less
- }
-
- @Override
public void onNextAlarmChanged(AlarmManager.AlarmClockInfo nextAlarm) {
mNextAlarm = nextAlarm;
if (nextAlarm != null) {
@@ -429,6 +518,19 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
requestCaptureValues();
}
+ @Override
+ public void onWeatherChanged(WeatherController.WeatherInfo info) {
+ if (Double.isNaN(info.temp) || info.condition == null) {
+ mWeatherLine1.setText(null);
+ } else {
+ mWeatherLine1.setText(mContext.getString(
+ R.string.status_bar_expanded_header_weather_format,
+ WeatherUtils.formatTemperature(info.temp, info.tempUnit),
+ info.condition));
+ }
+ mWeatherLine2.setText(info.city);
+ }
+
private void updateClickTargets() {
mMultiUserSwitch.setClickable(mExpanded);
mMultiUserSwitch.setFocusable(mExpanded);
@@ -496,33 +598,31 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
invalidateOutline();
}
+ private UserInfoController.OnUserInfoChangedListener mUserInfoChangedListener =
+ new UserInfoController.OnUserInfoChangedListener() {
+ @Override
+ public void onUserInfoChanged(String name, Drawable picture) {
+ mMultiUserAvatar.setImageDrawable(picture);
+ }
+ };
+
public void setUserInfoController(UserInfoController userInfoController) {
- userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
- @Override
- public void onUserInfoChanged(String name, Drawable picture) {
- mMultiUserAvatar.setImageDrawable(picture);
- }
- });
+ mUserInfoController = userInfoController;
+ userInfoController.addListener(mUserInfoChangedListener);
+ if (mMultiUserSwitch != null) {
+ mMultiUserSwitch.setUserInfoController(mUserInfoController);
+ }
}
@Override
public void onClick(View v) {
if (v == mSettingsButton) {
if (mSettingsButton.isTunerClick()) {
- if (TunerService.isTunerEnabled(mContext)) {
- TunerService.showResetRequest(mContext, new Runnable() {
- @Override
- public void run() {
- // Relaunch settings so that the tuner disappears.
- startSettingsActivity();
- }
- });
- } else {
- Toast.makeText(getContext(), R.string.tuner_toast, Toast.LENGTH_LONG).show();
- TunerService.setTunerEnabled(mContext, true);
- }
+ mSettingsButton.consumeClick();
+ mQSPanel.getHost().setEditing(!mQSPanel.getHost().isEditing());
+ } else {
+ startSettingsActivity();
}
- startSettingsActivity();
} else if (v == mSystemIconsSuperContainer) {
startBatteryActivity();
} else if (v == mAlarmStatus && mNextAlarm != null) {
@@ -530,6 +630,12 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
if (showIntent != null) {
mActivityStarter.startPendingIntentDismissingKeyguard(showIntent);
}
+ } else if (v == mClock) {
+ startClockActivity();
+ } else if (v == mDateGroup) {
+ startDateActivity();
+ } else if (v == mWeatherContainer) {
+ startForecastActivity();
}
}
@@ -543,7 +649,27 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
true /* dismissShade */);
}
- public void setQSPanel(QSPanel qsp) {
+ private void startClockActivity() {
+ mActivityStarter.startActivity(new Intent(AlarmClock.ACTION_SHOW_ALARMS),
+ true /* dismissShade */);
+ }
+
+ private void startDateActivity() {
+ Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+ builder.appendPath("time");
+ ContentUris.appendId(builder, System.currentTimeMillis());
+ Intent intent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
+ mActivityStarter.startActivity(intent, true /* dismissShade */);
+ }
+
+ private void startForecastActivity() {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setComponent(WeatherControllerImpl.COMPONENT_WEATHER_FORECAST);
+ mActivityStarter.startActivity(intent, true /* dismissShade */);
+ }
+
+ public void setQSPanel(QSDragPanel qsp) {
mQSPanel = qsp;
if (mQSPanel != null) {
mQSPanel.setCallback(mQsPanelCallback);
@@ -585,6 +711,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
target.avatarScale = mMultiUserAvatar.getScaleX();
target.avatarX = mMultiUserSwitch.getLeft() + mMultiUserAvatar.getLeft();
target.avatarY = mMultiUserSwitch.getTop() + mMultiUserAvatar.getTop();
+ target.weatherY = mClock.getBottom() - mWeatherLine1.getHeight();
if (getLayoutDirection() == LAYOUT_DIRECTION_LTR) {
target.batteryX = mSystemIconsSuperContainer.getLeft()
+ mSystemIconsContainer.getRight();
@@ -623,6 +750,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mTime.setScaleY(values.timeScale);
mClock.setY(values.clockY - mClock.getHeight());
mDateGroup.setY(values.dateY);
+ mWeatherContainer.setY(values.weatherY);
mAlarmStatus.setY(values.dateY - mAlarmStatus.getPaddingTop());
mMultiUserAvatar.setScaleX(values.avatarScale);
mMultiUserAvatar.setScaleY(values.avatarScale);
@@ -662,7 +790,12 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
applyAlpha(mDateCollapsed, values.dateCollapsedAlpha);
applyAlpha(mDateExpanded, values.dateExpandedAlpha);
applyAlpha(mBatteryLevel, values.batteryLevelAlpha);
+ if (mDockBatteryLevel != null) {
+ applyAlpha(mDockBatteryLevel, values.batteryLevelAlpha);
+ }
applyAlpha(mSettingsContainer, values.settingsAlpha);
+ applyAlpha(mWeatherLine1, values.settingsAlpha);
+ applyAlpha(mWeatherLine2, values.settingsAlpha);
applyAlpha(mSignalCluster, values.signalClusterAlpha);
if (!mExpanded) {
mTime.setScaleX(1f);
@@ -671,6 +804,50 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
updateAmPmTranslation();
}
+ public void setEditing(boolean editing) {
+ mEditing = editing;
+ if (editing && mEditingDetailAdapter == null) {
+ mEditingDetailAdapter = new QSTile.DetailAdapter() {
+ @Override
+ public int getTitle() {
+ return R.string.quick_settings_edit_label;
+ }
+
+ @Override
+ public Boolean getToggleState() {
+ return null;
+ }
+
+ @Override
+ public View createDetailView(Context context, View convertView, ViewGroup parent) {
+ return null;
+ }
+
+ @Override
+ public Intent getSettingsIntent() {
+ return null;
+ }
+
+ @Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
+ public void setToggleState(boolean state) {
+
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return CMMetricsLogger.DONT_LOG;
+ }
+ };
+ }
+ mQsPanelCallback.onShowingDetail(mEditing ? mEditingDetailAdapter : null);
+ updateEverything();
+ }
+
/**
* Captures all layout values (position, visibility) for a certain state. This is used for
* animations.
@@ -690,10 +867,12 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
float batteryX;
float batteryY;
float batteryLevelAlpha;
+ float batteryLevelExpandedAlpha;
float settingsAlpha;
float settingsTranslation;
float signalClusterAlpha;
float settingsRotation;
+ float weatherY;
public void interpoloate(LayoutValues v1, LayoutValues v2, float t) {
timeScale = v1.timeScale * (1 - t) + v2.timeScale * t;
@@ -705,6 +884,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
batteryX = v1.batteryX * (1 - t) + v2.batteryX * t;
batteryY = v1.batteryY * (1 - t) + v2.batteryY * t;
settingsTranslation = v1.settingsTranslation * (1 - t) + v2.settingsTranslation * t;
+ weatherY = v1.weatherY * (1 - t) + v2.weatherY * t;
float t1 = Math.max(0, t - 0.5f) * 2;
settingsRotation = v1.settingsRotation * (1 - t1) + v2.settingsRotation * t1;
@@ -720,6 +900,8 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
dateExpandedAlpha = v1.dateExpandedAlpha * (1 - t3) + v2.dateExpandedAlpha * t3;
dateCollapsedAlpha = v1.dateCollapsedAlpha * (1 - t3) + v2.dateCollapsedAlpha * t3;
alarmStatusAlpha = v1.alarmStatusAlpha * (1 - t3) + v2.alarmStatusAlpha * t3;
+ batteryLevelExpandedAlpha =
+ v1.batteryLevelExpandedAlpha * (1 - t3) + v2.batteryLevelExpandedAlpha * t3;
}
}
@@ -742,7 +924,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
post(new Runnable() {
@Override
public void run() {
- handleShowingDetail(detail);
+ handleShowingDetail(mEditing && detail == null ? mEditingDetailAdapter : detail);
}
});
}
@@ -778,18 +960,33 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
final boolean showingDetail = detail != null;
transition(mClock, !showingDetail);
transition(mDateGroup, !showingDetail);
+ if (mShowWeather) {
+ transition(mWeatherContainer, !showingDetail);
+ }
if (mAlarmShowing) {
- transition(mAlarmStatus, !showingDetail);
+ transition(mAlarmStatus, !showingDetail && !mDetailTransitioning);
}
transition(mQsDetailHeader, showingDetail);
mShowingDetail = showingDetail;
if (showingDetail) {
mQsDetailHeaderTitle.setText(detail.getTitle());
final Boolean toggleState = detail.getToggleState();
- if (toggleState == null) {
+ if (detail.getTitle() == R.string.quick_settings_edit_label) {
+ mEditTileDoneText.setVisibility(View.VISIBLE);
mQsDetailHeaderSwitch.setVisibility(INVISIBLE);
+ mQsDetailHeader.setClickable(true);
+ mQsDetailHeader.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mQSPanel.getHost().setEditing(false);
+ }
+ });
+ } else if (toggleState == null) {
+ mQsDetailHeaderSwitch.setVisibility(INVISIBLE);
+ mEditTileDoneText.setVisibility(View.GONE);
mQsDetailHeader.setClickable(false);
} else {
+ mEditTileDoneText.setVisibility(View.GONE);
mQsDetailHeaderSwitch.setVisibility(VISIBLE);
mQsDetailHeaderSwitch.setChecked(toggleState);
mQsDetailHeader.setClickable(true);
@@ -829,4 +1026,58 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
.start();
}
};
+
+ class SettingsObserver extends UserContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ protected void observe() {
+ super.observe();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_SHOW_WEATHER), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_BATTERY_STYLE), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT), false, this, UserHandle.USER_ALL);
+ update();
+ }
+
+ @Override
+ protected void unobserve() {
+ super.unobserve();
+
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void update() {
+
+ ContentResolver resolver = mContext.getContentResolver();
+ int currentUserId = ActivityManager.getCurrentUser();
+ int batteryStyle = CMSettings.System.getIntForUser(resolver,
+ CMSettings.System.STATUS_BAR_BATTERY_STYLE, 0, currentUserId);
+ boolean showExpandedBatteryPercentage = CMSettings.System.getIntForUser(resolver,
+ CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, 0, currentUserId) == 0;
+
+ switch (batteryStyle) {
+ case 4: //BATTERY_METER_GONE
+ case 6: //BATTERY_METER_TEXT
+ showExpandedBatteryPercentage = false;
+ break;
+ default:
+ break;
+ }
+
+ mShowBatteryTextExpanded = showExpandedBatteryPercentage;
+ mShowWeather = CMSettings.System.getInt(
+ resolver, CMSettings.System.STATUS_BAR_SHOW_WEATHER, 1) == 1;
+ updateVisibilities();
+ requestCaptureValues();
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 5de1c13..a7fa27d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -24,6 +24,7 @@ import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArraySet;
import android.view.View;
@@ -36,12 +37,14 @@ import android.widget.TextView;
import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.util.NotificationColorUtil;
+import com.android.systemui.BatteryLevelTextView;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
+import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
@@ -73,8 +76,10 @@ public class StatusBarIconController implements Tunable {
private IconMerger mNotificationIcons;
private View mNotificationIconArea;
private ImageView mMoreIcon;
+ private BatteryLevelTextView mBatteryLevelTextView;
private BatteryMeterView mBatteryMeterView;
- private TextView mClock;
+ private ClockController mClockController;
+ private View mCenterClockLayout;
private int mIconSize;
private int mIconHPadding;
@@ -117,8 +122,9 @@ public class StatusBarIconController implements Tunable {
mMoreIcon = (ImageView) statusBar.findViewById(R.id.moreIcon);
mNotificationIcons.setOverflowIndicator(mMoreIcon);
mStatusIconsKeyguard = (LinearLayout) keyguardStatusBar.findViewById(R.id.statusIcons);
+ mBatteryLevelTextView =
+ (BatteryLevelTextView) statusBar.findViewById(R.id.battery_level_text);
mBatteryMeterView = (BatteryMeterView) statusBar.findViewById(R.id.battery);
- mClock = (TextView) statusBar.findViewById(R.id.clock);
mLinearOutSlowIn = AnimationUtils.loadInterpolator(mContext,
android.R.interpolator.linear_out_slow_in);
mFastOutSlowIn = AnimationUtils.loadInterpolator(mContext,
@@ -126,6 +132,8 @@ public class StatusBarIconController implements Tunable {
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
mHandler = new Handler();
+ mClockController = new ClockController(statusBar, mNotificationIcons, mHandler);
+ mCenterClockLayout = statusBar.findViewById(R.id.center_clock_layout);
updateResources();
TunerService.get(mContext).addTunable(this, ICON_BLACKLIST);
@@ -158,7 +166,7 @@ public class StatusBarIconController implements Tunable {
com.android.internal.R.dimen.status_bar_icon_size);
mIconHPadding = mContext.getResources().getDimensionPixelSize(
R.dimen.status_bar_icon_padding);
- FontSizeUtils.updateFontSize(mClock, R.dimen.status_bar_clock_size);
+ mClockController.updateFontSize();
}
public void addSystemIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
@@ -247,22 +255,26 @@ public class StatusBarIconController implements Tunable {
public void hideSystemIconArea(boolean animate) {
animateHide(mSystemIconArea, animate);
+ animateHide(mCenterClockLayout, animate);
}
public void showSystemIconArea(boolean animate) {
animateShow(mSystemIconArea, animate);
+ animateShow(mCenterClockLayout, animate);
}
public void hideNotificationIconArea(boolean animate) {
animateHide(mNotificationIconArea, animate);
+ animateHide(mCenterClockLayout, animate);
}
public void showNotificationIconArea(boolean animate) {
animateShow(mNotificationIconArea, animate);
+ animateShow(mCenterClockLayout, animate);
}
public void setClockVisibility(boolean visible) {
- mClock.setVisibility(visible ? View.VISIBLE : View.GONE);
+ mClockController.setVisibility(visible);
}
public void dump(PrintWriter pw) {
@@ -392,8 +404,9 @@ public class StatusBarIconController implements Tunable {
}
mSignalCluster.setIconTint(mIconTint, mDarkIntensity);
mMoreIcon.setImageTintList(ColorStateList.valueOf(mIconTint));
+ mBatteryLevelTextView.setTextColor(mIconTint);
mBatteryMeterView.setDarkIntensity(mDarkIntensity);
- mClock.setTextColor(mIconTint);
+ mClockController.setTextColor(mIconTint);
applyNotificationIconsTint();
}
@@ -462,4 +475,32 @@ public class StatusBarIconController implements Tunable {
}
return ret;
}
+
+ public void refreshAllStatusBarIcons() {
+ refreshAllIconsForLayout(mStatusIcons);
+ refreshAllIconsForLayout(mStatusIconsKeyguard);
+ refreshAllIconsForLayout(mNotificationIcons);
+ }
+
+ public LinearLayout getStatusIcons() {
+ return mStatusIcons;
+ }
+
+ public void cleanup() {
+ TunerService.get(mContext).removeTunable(this);
+ mClockController.cleanup();
+ if (mSignalCluster != null) {
+ mSignalCluster.setSecurityController(null);
+ }
+ }
+
+ private void refreshAllIconsForLayout(LinearLayout ll) {
+ final int count = ll.getChildCount();
+ for (int n = 0; n < count; n++) {
+ View child = ll.getChildAt(n);
+ if (child instanceof StatusBarIconView) {
+ ((StatusBarIconView) child).updateDrawable();
+ }
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 05f6e57..96cf093 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -18,17 +18,21 @@ package com.android.systemui.statusbar.phone;
import android.content.ComponentCallbacks2;
import android.content.Context;
+import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Trace;
+import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewRootImpl;
+import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.keyguard.R;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.statusbar.CommandQueue;
@@ -94,9 +98,10 @@ public class StatusBarKeyguardViewManager {
mContainer = container;
mStatusBarWindowManager = statusBarWindowManager;
mScrimController = scrimController;
+ if (mBouncer != null) mBouncer.removeView();
mFingerprintUnlockController = fingerprintUnlockController;
mBouncer = new KeyguardBouncer(mContext, mViewMediatorCallback, mLockPatternUtils,
- mStatusBarWindowManager, container);
+ mStatusBarWindowManager, container, mPhoneStatusBar);
}
/**
@@ -107,23 +112,38 @@ public class StatusBarKeyguardViewManager {
mShowing = true;
mStatusBarWindowManager.setKeyguardShowing(true);
mScrimController.abortKeyguardFadingOut();
- reset();
+ reset(false);
}
/**
* Shows the notification keyguard or the bouncer depending on
* {@link KeyguardBouncer#needsFullscreenBouncer()}.
*/
- private void showBouncerOrKeyguard() {
- if (mBouncer.needsFullscreenBouncer()) {
-
- // The keyguard might be showing (already). So we need to hide it.
- mPhoneStatusBar.hideKeyguard();
- mBouncer.show(true /* resetSecuritySelection */);
- } else {
- mPhoneStatusBar.showKeyguard();
- mBouncer.hide(false /* destroyView */);
- mBouncer.prepare();
+ private void showBouncerOrKeyguard(boolean isBackPressed) {
+ switch (mBouncer.needsFullscreenBouncer()) {
+ case KeyguardBouncer.UNLOCK_SEQUENCE_FORCE_BOUNCER:
+ // SIM PIN/PUK
+ // The keyguard might be showing (already). So we need to hide it.
+ mPhoneStatusBar.hideKeyguard();
+ mBouncer.show(true /* resetSecuritySelection */);
+ break;
+ case KeyguardBouncer.UNLOCK_SEQUENCE_BOUNCER_FIRST:
+ // Pattern/PIN/Password with "Directly pass to security view" enabled
+ if (isBackPressed) {
+ mPhoneStatusBar.showKeyguard();
+ mBouncer.hide(false /* destroyView */);
+ mBouncer.prepare();
+ } else {
+ // The keyguard might be showing (already). So we need to hide it.
+ mPhoneStatusBar.hideKeyguard();
+ mBouncer.show(true /* resetSecuritySelection */);
+ }
+ break;
+ case KeyguardBouncer.UNLOCK_SEQUENCE_DEFAULT:
+ mPhoneStatusBar.showKeyguard();
+ mBouncer.hide(false /* destroyView */);
+ mBouncer.prepare();
+ break;
}
}
@@ -150,14 +170,14 @@ public class StatusBarKeyguardViewManager {
/**
* Reset the state of the view.
*/
- public void reset() {
+ public void reset(boolean isBackPressed) {
if (mShowing) {
if (mOccluded) {
mPhoneStatusBar.hideKeyguard();
mPhoneStatusBar.stopWaitingForKeyguardExit();
mBouncer.hide(false /* destroyView */);
} else {
- showBouncerOrKeyguard();
+ showBouncerOrKeyguard(isBackPressed);
}
KeyguardUpdateMonitor.getInstance(mContext).sendKeyguardReset();
updateStates();
@@ -197,10 +217,12 @@ public class StatusBarKeyguardViewManager {
updateStates();
}
mPhoneStatusBar.onScreenTurnedOn();
+ mStatusBarWindowManager.onKeyguardChanged();
}
public void onScreenTurnedOff() {
mScreenTurnedOn = false;
+ mPhoneStatusBar.onScreenTurnedOff();
}
public void notifyDeviceWakeUpRequested() {
@@ -224,7 +246,7 @@ public class StatusBarKeyguardViewManager {
@Override
public void run() {
mStatusBarWindowManager.setKeyguardOccluded(mOccluded);
- reset();
+ reset(false);
}
});
return;
@@ -232,7 +254,11 @@ public class StatusBarKeyguardViewManager {
}
mOccluded = occluded;
mStatusBarWindowManager.setKeyguardOccluded(occluded);
- reset();
+ mPhoneStatusBar.getVisualizer().setOccluded(occluded);
+ if (!occluded) {
+ mPhoneStatusBar.mKeyguardBottomArea.setVisibility(View.GONE);
+ }
+ reset(false);
}
public boolean isOccluded() {
@@ -359,16 +385,14 @@ public class StatusBarKeyguardViewManager {
private void executeAfterKeyguardGoneAction() {
if (mAfterKeyguardGoneAction != null) {
+ dismiss();
mAfterKeyguardGoneAction.onDismiss();
mAfterKeyguardGoneAction = null;
}
}
- /**
- * Dismisses the keyguard by going to the next screen or making it gone.
- */
public void dismiss() {
- if (mDeviceInteractive || mDeviceWillWakeUp) {
+ if ((mDeviceInteractive || mDeviceWillWakeUp)) {
showBouncer();
}
}
@@ -395,7 +419,7 @@ public class StatusBarKeyguardViewManager {
public boolean onBackPressed() {
if (mBouncer.isShowing()) {
mPhoneStatusBar.endAffordanceLaunch();
- reset();
+ reset(true);
return true;
}
return false;
@@ -428,7 +452,8 @@ public class StatusBarKeyguardViewManager {
boolean showing = mShowing;
boolean occluded = mOccluded;
boolean bouncerShowing = mBouncer.isShowing();
- boolean bouncerDismissible = !mBouncer.isFullscreenBouncer();
+ boolean bouncerDismissible = (mBouncer.isFullscreenBouncer() !=
+ KeyguardBouncer.UNLOCK_SEQUENCE_FORCE_BOUNCER);
if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing)
|| mFirstUpdate) {
@@ -503,7 +528,8 @@ public class StatusBarKeyguardViewManager {
}
public boolean shouldDisableWindowAnimationsForUnlock() {
- return mPhoneStatusBar.isInLaunchTransition();
+ return mPhoneStatusBar.isInLaunchTransition() ||
+ mPhoneStatusBar.isShowingLiveLockScreenView();
}
public boolean isGoingToNotificationShade() {
@@ -525,6 +551,10 @@ public class StatusBarKeyguardViewManager {
public void animateCollapsePanels(float speedUpFactor) {
mPhoneStatusBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */,
false /* delayed */, speedUpFactor);
+ if (mStatusBarWindowManager.keyguardExternalViewHasFocus()) {
+ mStatusBarWindowManager.setKeyguardExternalViewFocus(false);
+ dismiss();
+ }
}
/**
@@ -542,4 +572,12 @@ public class StatusBarKeyguardViewManager {
public ViewRootImpl getViewRootImpl() {
return mPhoneStatusBar.getStatusBarView().getViewRootImpl();
}
+
+ public boolean isKeyguardShowingMedia() {
+ return mPhoneStatusBar.isKeyguardShowingMedia();
+ }
+
+ public void setKeyguardExternalViewFocus(boolean hasFocus) {
+ mStatusBarWindowManager.setKeyguardExternalViewFocus(hasFocus);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
index ccfa0dd..f0d7828 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
@@ -18,19 +18,28 @@ package com.android.systemui.statusbar.phone;
import android.content.Context;
import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.graphics.Point;
import android.graphics.PixelFormat;
+import android.os.Handler;
import android.os.SystemProperties;
+import android.provider.Settings;
import android.view.Gravity;
+import android.view.Display;
+import android.view.SurfaceSession;
import android.view.View;
import android.view.ViewGroup;
-import android.view.Window;
import android.view.WindowManager;
import com.android.keyguard.R;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
+import com.android.systemui.statusbar.policy.LiveLockScreenController;
+import cyanogenmod.providers.CMSettings;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -39,7 +48,7 @@ import java.lang.reflect.Field;
/**
* Encapsulates all logic for the status bar window state management.
*/
-public class StatusBarWindowManager {
+public class StatusBarWindowManager implements KeyguardMonitor.Callback {
private final Context mContext;
private final WindowManager mWindowManager;
@@ -47,22 +56,49 @@ public class StatusBarWindowManager {
private WindowManager.LayoutParams mLp;
private WindowManager.LayoutParams mLpChanged;
private int mBarHeight;
- private final boolean mKeyguardScreenRotation;
+ private boolean mKeyguardScreenRotation;
private final float mScreenBrightnessDoze;
+ private final boolean mBlurSupported;
+
+ private boolean mKeyguardBlurEnabled;
+ private boolean mShowingMedia;
+ private BlurLayer mKeyguardBlur;
+ private final SurfaceSession mFxSession;
+
+ private final KeyguardMonitor mKeyguardMonitor;
+ private int mCurrentOrientation;
+
+ private static final int TYPE_LAYER_MULTIPLIER = 10000; // refer to WindowManagerService.TYPE_LAYER_MULTIPLIER
+ private static final int TYPE_LAYER_OFFSET = 1000; // refer to WindowManagerService.TYPE_LAYER_OFFSET
+
+ private static final int STATUS_BAR_LAYER = 16 * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET;
+
private final State mCurrentState = new State();
+ private LiveLockScreenController mLiveLockScreenController;
- public StatusBarWindowManager(Context context) {
+ public StatusBarWindowManager(Context context, KeyguardMonitor kgm) {
mContext = context;
mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation();
mScreenBrightnessDoze = mContext.getResources().getInteger(
com.android.internal.R.integer.config_screenBrightnessDoze) / 255f;
+ mBlurSupported = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_ui_blur_enabled);
+
+ mKeyguardMonitor = kgm;
+ mKeyguardMonitor.addCallback(this);
+ mFxSession = new SurfaceSession();
}
private boolean shouldEnableKeyguardScreenRotation() {
Resources res = mContext.getResources();
+ boolean enableAccelerometerRotation = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.ACCELEROMETER_ROTATION, 1) != 0;
+ boolean enableLockScreenRotation = CMSettings.System.getInt(mContext.getContentResolver(),
+ CMSettings.System.LOCKSCREEN_ROTATION, 0) != 0;
return SystemProperties.getBoolean("lockscreen.rot_override", false)
- || res.getBoolean(R.bool.config_enableLockScreenRotation);
+ || (res.getBoolean(R.bool.config_enableLockScreenRotation)
+ && (enableLockScreenRotation && enableAccelerometerRotation));
}
/**
@@ -72,7 +108,6 @@ public class StatusBarWindowManager {
* @param barHeight The height of the status bar in collapsed state.
*/
public void add(View statusBarView, int barHeight) {
-
// Now that the status bar window encompasses the sliding panel and its
// translucent backdrop, the entire thing is made TRANSLUCENT and is
// hardware-accelerated.
@@ -96,15 +131,37 @@ public class StatusBarWindowManager {
mWindowManager.addView(mStatusBarView, mLp);
mLpChanged = new WindowManager.LayoutParams();
mLpChanged.copyFrom(mLp);
+
+ mKeyguardBlurEnabled = mBlurSupported ?
+ CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.LOCK_SCREEN_BLUR_ENABLED, 1) == 1 : false;
+ if (mBlurSupported) {
+ Display display = mWindowManager.getDefaultDisplay();
+ Point xy = new Point();
+ display.getRealSize(xy);
+ mCurrentOrientation = mContext.getResources().getConfiguration().orientation;
+ mKeyguardBlur = new BlurLayer(mFxSession, xy.x, xy.y, "KeyGuard");
+ if (mKeyguardBlur != null) {
+ mKeyguardBlur.setLayer(STATUS_BAR_LAYER - 2);
+ }
+ }
+
+ SettingsObserver observer = new SettingsObserver(new Handler());
+ observer.observe(mContext);
}
private void applyKeyguardFlags(State state) {
if (state.keyguardShowing) {
- mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
mLpChanged.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
+ if (!mKeyguardBlurEnabled || mShowingMedia) {
+ mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
+ }
} else {
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
mLpChanged.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
+ if (mKeyguardBlurEnabled && mKeyguardBlur != null) {
+ mKeyguardBlur.hide();
+ }
}
}
@@ -217,13 +274,33 @@ public class StatusBarWindowManager {
}
}
+ private void applyKeyguardBlurShow(){
+ boolean isblur = false;
+ if (mCurrentState.keyguardShowing && mKeyguardBlurEnabled
+ && !mCurrentState.keyguardOccluded
+ && !mShowingMedia) {
+ isblur = true;
+ }
+ if (mKeyguardBlur != null) {
+ if (isblur) {
+ mKeyguardBlur.show();
+ } else {
+ mKeyguardBlur.hide();
+ }
+ }
+ }
+
public void setKeyguardShowing(boolean showing) {
mCurrentState.keyguardShowing = showing;
apply(mCurrentState);
}
public void setKeyguardOccluded(boolean occluded) {
+ final boolean oldOccluded = mCurrentState.keyguardOccluded;
mCurrentState.keyguardOccluded = occluded;
+ if (oldOccluded != occluded) {
+ applyKeyguardBlurShow();
+ }
apply(mCurrentState);
}
@@ -263,6 +340,39 @@ public class StatusBarWindowManager {
apply(mCurrentState);
}
+ void setBlur(float b){
+ if (mKeyguardBlurEnabled && mKeyguardBlur != null) {
+ float minBlur = mKeyguardMonitor.isSecure() ? 1.0f : 0.0f;
+ if (b < minBlur) {
+ b = minBlur;
+ } else if (b > 1.0f) {
+ b = 1.0f;
+ }
+ mKeyguardBlur.setBlur(b);
+ }
+ }
+
+ public void setShowingMedia(boolean showingMedia) {
+ mShowingMedia = showingMedia;
+ applyKeyguardBlurShow();
+ }
+
+ public void setKeyguardExternalViewFocus(boolean hasFocus) {
+ mLiveLockScreenController.onLiveLockScreenFocusChanged(hasFocus);
+ // make the keyguard occluded so the external view gets full focus
+ setKeyguardOccluded(hasFocus);
+ }
+
+ public void onConfigurationChanged(Configuration newConfig) {
+ if (mKeyguardBlur != null && newConfig.orientation != mCurrentOrientation) {
+ Display display = mWindowManager.getDefaultDisplay();
+ Point xy = new Point();
+ display.getRealSize(xy);
+ mKeyguardBlur.setSize(xy.x, xy.y);
+ mCurrentOrientation = newConfig.orientation;
+ }
+ }
+
/**
* @param state The {@link StatusBarState} of the status bar.
*/
@@ -300,11 +410,24 @@ public class StatusBarWindowManager {
apply(mCurrentState);
}
+ @Override
+ public void onKeyguardChanged() {
+ applyKeyguardBlurShow();
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("StatusBarWindowManager state:");
pw.println(mCurrentState);
}
+ public boolean keyguardExternalViewHasFocus() {
+ return mLiveLockScreenController.getLiveLockScreenHasFocus();
+ }
+
+ public void setLiveLockscreenController(LiveLockScreenController liveLockScreenController) {
+ mLiveLockScreenController = liveLockScreenController;
+ }
+
private static class State {
boolean keyguardShowing;
boolean keyguardOccluded;
@@ -355,4 +478,39 @@ public class StatusBarWindowManager {
return result.toString();
}
}
+
+ private class SettingsObserver extends ContentObserver {
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe(Context context) {
+ context.getContentResolver().registerContentObserver(
+ CMSettings.Secure.getUriFor(CMSettings.Secure.LOCK_SCREEN_BLUR_ENABLED),
+ false,
+ this);
+ context.getContentResolver().registerContentObserver(
+ Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),
+ false,
+ this);
+ context.getContentResolver().registerContentObserver(
+ CMSettings.System.getUriFor(CMSettings.System.LOCKSCREEN_ROTATION),
+ false,
+ this);
+ }
+
+ public void unobserve(Context context) {
+ context.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ mKeyguardBlurEnabled = mBlurSupported ?
+ CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.LOCK_SCREEN_BLUR_ENABLED, 1) == 1 : false;
+ mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation();
+ // update the state
+ apply(mCurrentState);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 0e22aa8..56ced84 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -17,29 +17,42 @@
package com.android.systemui.statusbar.phone;
import android.app.StatusBarManager;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.res.TypedArray;
+import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.media.session.MediaSessionLegacyHelper;
+import android.net.Uri;
+import android.os.Handler;
import android.os.IBinder;
+import android.os.IPowerManager;
+import android.os.PowerManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.PowerManager;
+import android.provider.Settings;
import android.util.AttributeSet;
+import android.util.Log;
+import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.ViewRootImpl;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.widget.FrameLayout;
-
import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
+import cyanogenmod.providers.CMSettings;
public class StatusBarWindowView extends FrameLayout {
@@ -51,76 +64,24 @@ public class StatusBarWindowView extends FrameLayout {
private NotificationPanelView mNotificationPanel;
private View mBrightnessMirror;
- private int mRightInset = 0;
-
private PhoneStatusBar mService;
private final Paint mTransparentSrcPaint = new Paint();
+ private int mStatusBarHeaderHeight;
+
+ private boolean mDoubleTapToSleepEnabled;
+ private GestureDetector mDoubleTapGesture;
+ private Handler mHandler = new Handler();
+ private SettingsObserver mSettingsObserver;
+
public StatusBarWindowView(Context context, AttributeSet attrs) {
super(context, attrs);
setMotionEventSplittingEnabled(false);
mTransparentSrcPaint.setColor(0);
mTransparentSrcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
- }
-
- @Override
- protected boolean fitSystemWindows(Rect insets) {
- if (getFitsSystemWindows()) {
- boolean paddingChanged = insets.left != getPaddingLeft()
- || insets.top != getPaddingTop()
- || insets.bottom != getPaddingBottom();
-
- // Super-special right inset handling, because scrims and backdrop need to ignore it.
- if (insets.right != mRightInset) {
- mRightInset = insets.right;
- applyMargins();
- }
- // Drop top inset, apply left inset and pass through bottom inset.
- if (paddingChanged) {
- setPadding(insets.left, 0, 0, 0);
- }
- insets.left = 0;
- insets.top = 0;
- insets.right = 0;
- } else {
- if (mRightInset != 0) {
- mRightInset = 0;
- applyMargins();
- }
- boolean changed = getPaddingLeft() != 0
- || getPaddingRight() != 0
- || getPaddingTop() != 0
- || getPaddingBottom() != 0;
- if (changed) {
- setPadding(0, 0, 0, 0);
- }
- insets.top = 0;
- }
- return false;
- }
-
- private void applyMargins() {
- final int N = getChildCount();
- for (int i = 0; i < N; i++) {
- View child = getChildAt(i);
- if (child.getLayoutParams() instanceof LayoutParams) {
- LayoutParams lp = (LayoutParams) child.getLayoutParams();
- if (!lp.ignoreRightInset && lp.rightMargin != mRightInset) {
- lp.rightMargin = mRightInset;
- child.requestLayout();
- }
- }
- }
- }
-
- @Override
- public FrameLayout.LayoutParams generateLayoutParams(AttributeSet attrs) {
- return new LayoutParams(getContext(), attrs);
- }
-
- @Override
- protected FrameLayout.LayoutParams generateDefaultLayoutParams() {
- return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+ mStatusBarHeaderHeight = context
+ .getResources().getDimensionPixelSize(R.dimen.status_bar_header_height);
+ mSettingsObserver = new SettingsObserver(mHandler);
}
@Override
@@ -141,6 +102,21 @@ public class StatusBarWindowView extends FrameLayout {
protected void onAttachedToWindow () {
super.onAttachedToWindow();
+ mSettingsObserver.observe();
+ mDoubleTapGesture = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
+ @Override
+ public boolean onDoubleTap(MotionEvent e) {
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ Log.d(TAG, "Gesture!!");
+ if(pm != null)
+ pm.goToSleep(e.getEventTime());
+ else
+ Log.d(TAG, "getSystemService returned null PowerManager");
+
+ return true;
+ }
+ });
+
// We really need to be able to animate while window animations are going on
// so that activities may be started asynchronously from panel animations
final ViewRootImpl root = getViewRootImpl();
@@ -152,11 +128,13 @@ public class StatusBarWindowView extends FrameLayout {
// occur if our window is translucent. Since we are drawing the whole window anyway with
// the scrim, we don't need the window to be cleared in the beginning.
if (mService.isScrimSrcModeEnabled()) {
- IBinder windowToken = getWindowToken();
- WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams();
- lp.token = windowToken;
- setLayoutParams(lp);
- WindowManagerGlobal.getInstance().changeCanvasOpacity(windowToken, true);
+ if (getLayoutParams() instanceof WindowManager.LayoutParams) {
+ WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams();
+ IBinder windowToken = getWindowToken();
+ lp.token = windowToken;
+ setLayoutParams(lp);
+ WindowManagerGlobal.getInstance().changeCanvasOpacity(windowToken, true);
+ }
setWillNotDraw(false);
} else {
setWillNotDraw(!DEBUG);
@@ -164,6 +142,22 @@ public class StatusBarWindowView extends FrameLayout {
}
@Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mSettingsObserver.unobserve();
+ }
+
+ @Override
+ protected boolean fitSystemWindows(Rect insets) {
+ insets.bottom = 0;
+ insets.top = 0;
+ insets.right = 0;
+ insets.left = 0;
+ super.fitSystemWindows(insets);
+ return false;
+ }
+
+ @Override
public boolean dispatchKeyEvent(KeyEvent event) {
boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
switch (event.getKeyCode()) {
@@ -211,6 +205,11 @@ public class StatusBarWindowView extends FrameLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean intercept = false;
+ if (mDoubleTapToSleepEnabled
+ && ev.getY() < mStatusBarHeaderHeight) {
+ if (DEBUG) Log.w(TAG, "logging double tap gesture");
+ mDoubleTapGesture.onTouchEvent(ev);
+ }
if (mNotificationPanel.isFullyExpanded()
&& mStackScrollLayout.getVisibility() == View.VISIBLE
&& mService.getBarState() == StatusBarState.KEYGUARD
@@ -251,7 +250,7 @@ public class StatusBarWindowView extends FrameLayout {
}
@Override
- public void onDraw(Canvas canvas) {
+ protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mService.isScrimSrcModeEnabled()) {
// We need to ensure that our window is always drawn fully even when we have paddings,
@@ -288,21 +287,51 @@ public class StatusBarWindowView extends FrameLayout {
}
}
- public class LayoutParams extends FrameLayout.LayoutParams {
+ public void addContent(View content) {
+ addView(content);
+ mStackScrollLayout = (NotificationStackScrollLayout) content.findViewById(
+ R.id.notification_stack_scroller);
+ mNotificationPanel = (NotificationPanelView) content.findViewById(R.id.notification_panel);
+ mDragDownHelper = new DragDownHelper(getContext(), this, mStackScrollLayout, mService);
+ mBrightnessMirror = content.findViewById(R.id.brightness_mirror);
- public boolean ignoreRightInset;
+ }
- public LayoutParams(int width, int height) {
- super(width, height);
+ public void removeContent(View content) {
+ removeView(content);
+ }
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
}
- public LayoutParams(Context c, AttributeSet attrs) {
- super(c, attrs);
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(CMSettings.System.getUriFor(
+ CMSettings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this);
+ update();
+ }
+
+ void unobserve() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
- TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.StatusBarWindowView_Layout);
- ignoreRightInset = a.getBoolean(
- R.styleable.StatusBarWindowView_Layout_ignoreRightInset, false);
- a.recycle();
+ public void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mDoubleTapToSleepEnabled = CMSettings.System
+ .getInt(resolver, CMSettings.System.DOUBLE_TAP_SLEEP_GESTURE, 1) == 1;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
index d701b3c..9ebb79f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
@@ -33,12 +33,7 @@ public class SystemUIDialog extends AlertDialog {
super(context, R.style.Theme_SystemUI_Dialog);
mContext = context;
- getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
- | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
- WindowManager.LayoutParams attrs = getWindow().getAttributes();
- attrs.setTitle(getClass().getSimpleName());
- getWindow().setAttributes(attrs);
+ makeSystemUIDialog(this);
}
public void setShowForAllUsers(boolean show) {
@@ -62,4 +57,13 @@ public class SystemUIDialog extends AlertDialog {
public void setNegativeButton(int resId, OnClickListener onClick) {
setButton(BUTTON_NEGATIVE, mContext.getString(resId), onClick);
}
+
+ public static void makeSystemUIDialog(AlertDialog d) {
+ d.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
+ d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
+ | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+ WindowManager.LayoutParams attrs = d.getWindow().getAttributes();
+ attrs.setTitle(SystemUIDialog.class.getClass().getSimpleName());
+ d.getWindow().setAttributes(attrs);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ViewLinker.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ViewLinker.java
new file mode 100644
index 0000000..48457c6
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ViewLinker.java
@@ -0,0 +1,76 @@
+package com.android.systemui.statusbar.phone;
+
+import android.view.View;
+
+/*
+ Allows mirroring of view states such as alpha, translation...etc
+ */
+public class ViewLinker<T extends View & ViewLinker.ViewLinkerParent> {
+
+ public static final int LINK_ALPHA = 0x1;
+ public static final int LINK_TRANSLATION = 0x2;
+
+ private final LinkInfo[] mLinkedViews;
+ private final T mParent;
+
+ public interface ViewLinkerCallback {
+ void onAlphaChanged(float alpha);
+ void onTranslationXChanged(float translationX);
+ }
+
+ public interface ViewLinkerParent {
+ void registerLinker(ViewLinkerCallback callback);
+ }
+
+ public static class LinkInfo {
+ private View mView;
+ private int mFlags;
+ public LinkInfo(View v, int linkFlags) {
+ mView = v;
+ mFlags = linkFlags;
+ }
+ private boolean supportsFlag(int flag) {
+ return (mFlags & flag) != 0;
+ }
+ }
+
+ private ViewLinkerCallback mCallback = new ViewLinkerCallback() {
+ @Override
+ public void onAlphaChanged(float alpha) {
+ for (LinkInfo v : mLinkedViews) {
+ if (v.supportsFlag(LINK_ALPHA)) {
+ v.mView.setAlpha(alpha);
+ }
+ }
+ }
+
+ @Override
+ public void onTranslationXChanged(float translationX) {
+ for (LinkInfo v : mLinkedViews) {
+ if (v.supportsFlag(LINK_TRANSLATION)) {
+ v.mView.setTranslationX(translationX);
+ }
+ }
+ }
+ };
+
+ public ViewLinker(T parent, LinkInfo... viewsToLink) {
+ mLinkedViews = viewsToLink;
+ mParent = parent;
+ ensureParentNotInLink();
+ parent.registerLinker(mCallback);
+ }
+
+ private void ensureParentNotInLink() {
+ for (LinkInfo v : mLinkedViews) {
+ if (v.mView == mParent) {
+ throw new IllegalStateException("Parent cannot be" +
+ "one of the linked views");
+ }
+ }
+ }
+
+ public View getParent() {
+ return mParent;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
index d1b69ab..c59a0d8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -17,10 +17,14 @@
package com.android.systemui.statusbar.policy;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.Uri;
import android.os.BatteryManager;
+import android.os.Handler;
import android.os.PowerManager;
import android.util.Log;
@@ -28,20 +32,38 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
-public class BatteryController extends BroadcastReceiver {
+import cyanogenmod.providers.CMSettings;
+
+public class BatteryController extends BroadcastReceiver implements BatteryStateRegistar {
private static final String TAG = "BatteryController";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+ public static final int STYLE_ICON_PORTRAIT = 0;
+ public static final int STYLE_CIRCLE = 2;
+ public static final int STYLE_GONE = 4;
+ public static final int STYLE_ICON_LANDSCAPE = 5;
+ public static final int STYLE_TEXT = 6;
+
+ public static final int PERCENTAGE_MODE_OFF = 0;
+ public static final int PERCENTAGE_MODE_INSIDE = 1;
+ public static final int PERCENTAGE_MODE_OUTSIDE = 2;
+
private final ArrayList<BatteryStateChangeCallback> mChangeCallbacks = new ArrayList<>();
private final PowerManager mPowerManager;
private int mLevel;
+ private boolean mPresent;
private boolean mPluggedIn;
private boolean mCharging;
private boolean mCharged;
private boolean mPowerSave;
- public BatteryController(Context context) {
+ private int mStyle;
+ private int mPercentMode;
+ private int mUserId;
+ private SettingsObserver mObserver;
+
+ public BatteryController(Context context, Handler handler) {
mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
IntentFilter filter = new IntentFilter();
@@ -51,22 +73,34 @@ public class BatteryController extends BroadcastReceiver {
context.registerReceiver(this, filter);
updatePowerSave();
+
+ mObserver = new SettingsObserver(context, handler);
+ mObserver.observe();
+ }
+
+ public void setUserId(int userId) {
+ mUserId = userId;
+ mObserver.observe();
}
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("BatteryController state:");
pw.print(" mLevel="); pw.println(mLevel);
+ pw.print(" mPresent="); pw.println(mPresent);
pw.print(" mPluggedIn="); pw.println(mPluggedIn);
pw.print(" mCharging="); pw.println(mCharging);
pw.print(" mCharged="); pw.println(mCharged);
pw.print(" mPowerSave="); pw.println(mPowerSave);
}
+ @Override
public void addStateChangedCallback(BatteryStateChangeCallback cb) {
mChangeCallbacks.add(cb);
- cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
+ cb.onBatteryLevelChanged(mPresent, mLevel, mPluggedIn, mCharging);
+ cb.onBatteryStyleChanged(mStyle, mPercentMode);
}
+ @Override
public void removeStateChangedCallback(BatteryStateChangeCallback cb) {
mChangeCallbacks.remove(cb);
}
@@ -77,6 +111,7 @@ public class BatteryController extends BroadcastReceiver {
mLevel = (int)(100f
* intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
/ intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100));
+ mPresent = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false);
mPluggedIn = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
final int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
@@ -110,7 +145,7 @@ public class BatteryController extends BroadcastReceiver {
private void fireBatteryLevelChanged() {
final int N = mChangeCallbacks.size();
for (int i = 0; i < N; i++) {
- mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
+ mChangeCallbacks.get(i).onBatteryLevelChanged(mPresent, mLevel, mPluggedIn, mCharging);
}
}
@@ -121,8 +156,50 @@ public class BatteryController extends BroadcastReceiver {
}
}
- public interface BatteryStateChangeCallback {
- void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging);
- void onPowerSaveChanged();
+ private void fireSettingsChanged() {
+ final int N = mChangeCallbacks.size();
+ for (int i = 0; i < N; i++) {
+ mChangeCallbacks.get(i).onBatteryStyleChanged(mStyle, mPercentMode);
+ }
}
+
+ private final class SettingsObserver extends ContentObserver {
+ private ContentResolver mResolver;
+ private boolean mRegistered;
+
+ private final Uri STYLE_URI =
+ CMSettings.System.getUriFor(CMSettings.System.STATUS_BAR_BATTERY_STYLE);
+ private final Uri PERCENT_URI =
+ CMSettings.System.getUriFor(CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT);
+
+ public SettingsObserver(Context context, Handler handler) {
+ super(handler);
+ mResolver = context.getContentResolver();
+ }
+
+ public void observe() {
+ if (mRegistered) {
+ mResolver.unregisterContentObserver(this);
+ }
+ mResolver.registerContentObserver(STYLE_URI, false, this, mUserId);
+ mResolver.registerContentObserver(PERCENT_URI, false, this, mUserId);
+ mRegistered = true;
+
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
+
+ private void update() {
+ mStyle = CMSettings.System.getIntForUser(mResolver,
+ CMSettings.System.STATUS_BAR_BATTERY_STYLE, 0, mUserId);
+ mPercentMode = CMSettings.System.getIntForUser(mResolver,
+ CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, 0, mUserId);
+
+ fireSettingsChanged();
+ }
+ };
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateRegistar.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateRegistar.java
new file mode 100644
index 0000000..9fe9bb4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryStateRegistar.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui.statusbar.policy;
+
+public interface BatteryStateRegistar {
+ interface BatteryStateChangeCallback {
+ void onBatteryLevelChanged(boolean present, int level, boolean pluggedIn, boolean charging);
+ void onPowerSaveChanged();
+ void onBatteryStyleChanged(int style, int percentMode);
+ }
+
+ public void addStateChangedCallback(BatteryStateChangeCallback cb);
+ public void removeStateChangedCallback(BatteryStateChangeCallback cb);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index 0340984..1ccf80b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -38,7 +38,7 @@ public class BrightnessMirrorController {
private final View mPanelHolder;
private final int[] mInt2Cache = new int[2];
- public BrightnessMirrorController(StatusBarWindowView statusBarWindow) {
+ public BrightnessMirrorController(View statusBarWindow) {
mScrimBehind = (ScrimView) statusBarWindow.findViewById(R.id.scrim_behind);
mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror);
mPanelHolder = statusBarWindow.findViewById(R.id.panel_holder);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
index e618cb8..e7f65b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
@@ -126,14 +126,15 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa
public void setMobileDataIndicators(final IconState statusIcon, final IconState qsIcon,
final int statusType, final int qsType,final boolean activityIn,
final boolean activityOut, final String typeContentDescription,
- final String description, final boolean isWide, final int subId) {
+ final String description, final boolean isWide, final boolean showSeparateRoaming,
+ final int subId) {
post(new Runnable() {
@Override
public void run() {
for (SignalCallback signalCluster : mSignalCallbacks) {
signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType,
activityIn, activityOut, typeContentDescription, description, isWide,
- subId);
+ showSeparateRoaming, subId);
}
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
index e344954..835c8ad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
@@ -115,7 +115,7 @@ public class CastControllerImpl implements CastController {
}
if (mDiscovering) {
mMediaRouter.addCallback(ROUTE_TYPE_REMOTE_DISPLAY, mMediaCallback,
- MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
+ MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
mCallbackRegistered = true;
} else if (mCallbacks.size() != 0) {
mMediaRouter.addCallback(ROUTE_TYPE_REMOTE_DISPLAY, mMediaCallback,
@@ -164,7 +164,7 @@ public class CastControllerImpl implements CastController {
@Override
public void startCasting(CastDevice device) {
- if (device == null || device.tag == null) return;
+ if (device == null || !(device.tag instanceof RouteInfo)) return;
final RouteInfo route = (RouteInfo) device.tag;
if (DEBUG) Log.d(TAG, "startCasting: " + routeToString(route));
mMediaRouter.selectRoute(ROUTE_TYPE_REMOTE_DISPLAY, route);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index 61986ad..0cc82dc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -34,6 +34,7 @@ import android.widget.TextView;
import com.android.systemui.DemoMode;
import com.android.systemui.R;
+import com.android.systemui.cm.UserContentObserver;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -52,11 +53,11 @@ public class Clock extends TextView implements DemoMode {
private SimpleDateFormat mClockFormat;
private Locale mLocale;
- private static final int AM_PM_STYLE_NORMAL = 0;
- private static final int AM_PM_STYLE_SMALL = 1;
- private static final int AM_PM_STYLE_GONE = 2;
+ public static final int AM_PM_STYLE_NORMAL = 0;
+ public static final int AM_PM_STYLE_SMALL = 1;
+ public static final int AM_PM_STYLE_GONE = 2;
- private final int mAmPmStyle;
+ private int mAmPmStyle = AM_PM_STYLE_GONE;
public Clock(Context context) {
this(context, null);
@@ -68,15 +69,6 @@ public class Clock extends TextView implements DemoMode {
public Clock(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- TypedArray a = context.getTheme().obtainStyledAttributes(
- attrs,
- R.styleable.Clock,
- 0, 0);
- try {
- mAmPmStyle = a.getInt(R.styleable.Clock_amPmStyle, AM_PM_STYLE_GONE);
- } finally {
- a.recycle();
- }
}
@Override
@@ -138,7 +130,7 @@ public class Clock extends TextView implements DemoMode {
};
final void updateClock() {
- if (mDemoMode) return;
+ if (mDemoMode || mCalendar == null) return;
mCalendar.setTimeInMillis(System.currentTimeMillis());
setText(getSmallTime());
}
@@ -244,5 +236,11 @@ public class Clock extends TextView implements DemoMode {
setText(getSmallTime());
}
}
+
+ public void setAmPmStyle(int style) {
+ mAmPmStyle = style;
+ mClockFormatString = "";
+ updateClock();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
index 186005c..720ab44 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
@@ -1,4 +1,7 @@
/*
+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -105,11 +108,19 @@ public class DateView extends TextView {
}
mCurrentTime.setTime(System.currentTimeMillis());
-
- final String text = mDateFormat.format(mCurrentTime);
+ final String text = getDateFormat();
if (!text.equals(mLastText)) {
setText(text);
mLastText = text;
}
}
+
+ private String getDateFormat() {
+ if (getContext().getResources().getBoolean(
+ com.android.internal.R.bool.def_custom_dateformat)) {
+ return DateFormat.getDateFormat(getContext()).format(mCurrentTime);
+ } else {
+ return mDateFormat.format(mCurrentTime);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java
index 6eb88be..9864a0a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java
@@ -46,6 +46,7 @@ public class DeadZone extends View {
// mHold ms, then move back over the course of mDecay ms
private int mHold, mDecay;
private boolean mVertical;
+ private boolean mStartFromRight;
private long mLastPokeTime;
private final Runnable mDebugFlash = new Runnable() {
@@ -73,6 +74,7 @@ public class DeadZone extends View {
int index = a.getInt(R.styleable.DeadZone_orientation, -1);
mVertical = (index == VERTICAL);
+ mStartFromRight = false; // Assume deadzone is starting from the left side of the zone
if (DEBUG)
Slog.v(TAG, this + " size=[" + mSizeMin + "-" + mSizeMax + "] hold=" + mHold
@@ -100,6 +102,7 @@ public class DeadZone extends View {
mShouldFlash = dbg;
mFlashFrac = 0f;
postInvalidate();
+ mFlashFrac = dbg ? 1f : 0f;
}
// I made you a touch event...
@@ -117,7 +120,19 @@ public class DeadZone extends View {
Slog.v(TAG, this + " ACTION_DOWN: " + event.getX() + "," + event.getY());
}
int size = (int) getSize(event.getEventTime());
- if ((mVertical && event.getX() < size) || event.getY() < size) {
+ boolean isCaptured;
+ if (mVertical && mStartFromRight) {
+ // Landscape on the left side of the screen
+ float pixelsFromRight = getWidth() - event.getX();
+ isCaptured = 0 <= pixelsFromRight && pixelsFromRight < size;
+ } else if (mVertical) {
+ // Landscape
+ isCaptured = event.getX() < size;
+ } else {
+ // Portrait
+ isCaptured = event.getY() < size;
+ }
+ if (isCaptured) {
if (CHATTY) {
Slog.v(TAG, "consuming errant click: (" + event.getX() + "," + event.getY() + ")");
}
@@ -147,6 +162,11 @@ public class DeadZone extends View {
return mFlashFrac;
}
+ public void setStartFromRight(boolean startFromRight) {
+ mStartFromRight = startFromRight;
+ if (mShouldFlash) postInvalidate();
+ }
+
@Override
public void onDraw(Canvas can) {
if (!mShouldFlash || mFlashFrac <= 0f) {
@@ -154,7 +174,17 @@ public class DeadZone extends View {
}
final int size = (int) getSize(SystemClock.uptimeMillis());
- can.clipRect(0, 0, mVertical ? size : can.getWidth(), mVertical ? can.getHeight() : size);
+ if (mVertical && mStartFromRight) {
+ // Landscape on the left side of the screen
+ can.clipRect(can.getWidth() - size, 0, can.getWidth(), can.getHeight());
+ } else if (mVertical) {
+ // Landscape
+ can.clipRect(0, 0, size, can.getHeight());
+ } else {
+ // Portrait
+ can.clipRect(0, 0, can.getWidth(), size);
+ }
+
final float frac = DEBUG ? (mFlashFrac - 0.5f) + 0.5f : mFlashFrac;
can.drawARGB((int) (frac * 0xFF), 0xDD, 0xEE, 0xAA);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
new file mode 100644
index 0000000..3faf7d0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui.statusbar.policy;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.BatteryManager;
+import android.os.Handler;
+import android.provider.Settings;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+import cyanogenmod.providers.CMSettings;
+
+public class DockBatteryController extends BroadcastReceiver implements BatteryStateRegistar {
+
+ private final ArrayList<BatteryStateChangeCallback> mChangeCallbacks = new ArrayList<>();
+
+ private int mLevel;
+ private boolean mPresent;
+ private boolean mPluggedIn;
+ private boolean mCharging;
+ private boolean mCharged;
+ private boolean mPowerSave;
+
+ private int mStyle;
+ private int mPercentMode;
+ private int mUserId;
+ private SettingsObserver mObserver;
+
+ public DockBatteryController(Context context, Handler handler) {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ context.registerReceiver(this, filter);
+
+ mObserver = new SettingsObserver(context, handler);
+ mObserver.observe();
+ }
+
+ public void setUserId(int userId) {
+ mUserId = userId;
+ mObserver.observe();
+ }
+
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println("BatteryController state:");
+ pw.print(" mLevel="); pw.println(mLevel);
+ pw.print(" mPresent="); pw.println(mPresent);
+ pw.print(" mPluggedIn="); pw.println(mPluggedIn);
+ pw.print(" mCharging="); pw.println(mCharging);
+ pw.print(" mCharged="); pw.println(mCharged);
+ pw.print(" mPowerSave="); pw.println(mPowerSave);
+ }
+
+ @Override
+ public void addStateChangedCallback(BatteryStateChangeCallback cb) {
+ mChangeCallbacks.add(cb);
+ cb.onBatteryLevelChanged(mPresent, mLevel, mPluggedIn, mCharging);
+ cb.onBatteryStyleChanged(mStyle, mPercentMode);
+ }
+
+ @Override
+ public void removeStateChangedCallback(BatteryStateChangeCallback cb) {
+ mChangeCallbacks.remove(cb);
+ }
+
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
+ mLevel = (int)(100f
+ * intent.getIntExtra(BatteryManager.EXTRA_DOCK_LEVEL, 0)
+ / intent.getIntExtra(BatteryManager.EXTRA_DOCK_SCALE, 100));
+ mPresent = intent.getBooleanExtra(BatteryManager.EXTRA_DOCK_PRESENT, false);
+ mPluggedIn = intent.getIntExtra(BatteryManager.EXTRA_DOCK_PLUGGED, 0) != 0;
+
+ final int status = intent.getIntExtra(BatteryManager.EXTRA_DOCK_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
+ mCharged = status == BatteryManager.BATTERY_STATUS_FULL;
+ mCharging = mPluggedIn && (mCharged || status == BatteryManager.BATTERY_STATUS_CHARGING);
+
+ fireBatteryLevelChanged();
+ }
+ }
+
+ private void fireBatteryLevelChanged() {
+ final int N = mChangeCallbacks.size();
+ for (int i = 0; i < N; i++) {
+ mChangeCallbacks.get(i).onBatteryLevelChanged(mPresent, mLevel, mPresent, mCharging);
+ }
+ }
+
+ private void fireSettingsChanged() {
+ final int N = mChangeCallbacks.size();
+ for (int i = 0; i < N; i++) {
+ mChangeCallbacks.get(i).onBatteryStyleChanged(mStyle, mPercentMode);
+ }
+ }
+
+ private final class SettingsObserver extends ContentObserver {
+ private ContentResolver mResolver;
+ private boolean mRegistered;
+
+ private final Uri STYLE_URI =
+ CMSettings.System.getUriFor(CMSettings.System.STATUS_BAR_BATTERY_STYLE);
+ private final Uri PERCENT_URI =
+ CMSettings.System.getUriFor(CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT);
+
+ public SettingsObserver(Context context, Handler handler) {
+ super(handler);
+ mResolver = context.getContentResolver();
+ }
+
+ public void observe() {
+ if (mRegistered) {
+ mResolver.unregisterContentObserver(this);
+ }
+ mResolver.registerContentObserver(STYLE_URI, false, this, mUserId);
+ mResolver.registerContentObserver(PERCENT_URI, false, this, mUserId);
+ mRegistered = true;
+
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
+
+ private void update() {
+ mStyle = CMSettings.System.getIntForUser(mResolver,
+ CMSettings.System.STATUS_BAR_BATTERY_STYLE, 0, mUserId);
+ mPercentMode = CMSettings.System.getIntForUser(mResolver,
+ CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, 0, mUserId);
+
+ fireSettingsChanged();
+ }
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
index 29a8f67..52a2825 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
@@ -16,16 +16,26 @@
package com.android.systemui.statusbar.policy;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
import android.text.TextUtils;
import android.util.Log;
+import com.android.systemui.R;
+
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -41,6 +51,12 @@ public class FlashlightController {
private static final int DISPATCH_CHANGED = 1;
private static final int DISPATCH_AVAILABILITY_CHANGED = 2;
+ private static boolean mUseWakeLock;
+
+ private static final String ACTION_TURN_FLASHLIGHT_OFF =
+ "com.android.systemui.action.TURN_FLASHLIGHT_OFF";
+
+ private Context mContext;
private final CameraManager mCameraManager;
/** Call {@link #ensureHandler()} before using */
private Handler mHandler;
@@ -54,7 +70,28 @@ public class FlashlightController {
private final String mCameraId;
private boolean mTorchAvailable;
+ private WakeLock mWakeLock;
+
+ private Notification mNotification = null;
+ private boolean mReceiverRegistered;
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (ACTION_TURN_FLASHLIGHT_OFF.equals(intent.getAction())) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ setFlashlight(false);
+ }
+ });
+ } else if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) {
+ setNotificationShown(true);
+ }
+ }
+ };
+
public FlashlightController(Context mContext) {
+ this.mContext = mContext;
mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
String cameraId = null;
@@ -67,6 +104,11 @@ public class FlashlightController {
mCameraId = cameraId;
}
+ mUseWakeLock = mContext.getResources().getBoolean(R.bool.flashlight_use_wakelock);
+
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
+
if (mCameraId != null) {
ensureHandler();
mCameraManager.registerTorchCallback(mTorchCallback, mHandler);
@@ -78,12 +120,25 @@ public class FlashlightController {
synchronized (this) {
if (mFlashlightEnabled != enabled) {
mFlashlightEnabled = enabled;
+
+ if (mUseWakeLock) {
+ if (enabled) {
+ if (!mWakeLock.isHeld()) mWakeLock.acquire();
+ } else {
+ if (mWakeLock.isHeld()) mWakeLock.release();
+ }
+ }
+
try {
mCameraManager.setTorchMode(mCameraId, enabled);
} catch (CameraAccessException e) {
Log.e(TAG, "Couldn't set torch mode", e);
mFlashlightEnabled = false;
pendingError = true;
+
+ if (mUseWakeLock && mWakeLock.isHeld()) {
+ mWakeLock.release();
+ }
}
}
}
@@ -93,6 +148,56 @@ public class FlashlightController {
}
}
+ private void setNotificationShown(boolean showNotification) {
+ NotificationManager nm = (NotificationManager)
+ mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ if (showNotification) {
+ nm.notify(R.string.quick_settings_tile_flashlight_not_title, buildNotification());
+ } else {
+ nm.cancel(R.string.quick_settings_tile_flashlight_not_title);
+ mNotification = null;
+ }
+ }
+
+ private void setListenForScreenOff(boolean listen) {
+ if (listen && !mReceiverRegistered) {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(ACTION_TURN_FLASHLIGHT_OFF);
+ filter.addAction(Intent.ACTION_SCREEN_ON);
+ mContext.registerReceiver(mReceiver, filter);
+ mReceiverRegistered = true;
+ } else if (!listen) {
+ if (mReceiverRegistered) {
+ mContext.unregisterReceiver(mReceiver);
+ mReceiverRegistered = false;
+ }
+ setNotificationShown(false);
+ }
+ }
+
+ private Notification buildNotification() {
+ if (mNotification == null) {
+ Intent fireMe = new Intent(ACTION_TURN_FLASHLIGHT_OFF);
+ fireMe.addFlags(Intent.FLAG_FROM_BACKGROUND);
+ fireMe.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ fireMe.setPackage(mContext.getPackageName());
+
+ final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, fireMe, 0);
+ mNotification = new Notification.Builder(mContext)
+ .setContentTitle(
+ mContext.getString(R.string.quick_settings_tile_flashlight_not_title))
+ .setContentText(
+ mContext.getString(R.string.quick_settings_tile_flashlight_not_summary))
+ .setAutoCancel(false)
+ .setOngoing(true)
+ .setVisibility(Notification.VISIBILITY_PUBLIC)
+ .setSmallIcon(R.drawable.ic_signal_flashlight_disable)
+ .setContentIntent(pendingIntent)
+ .build();
+ }
+ return mNotification;
+ }
+
public synchronized boolean isEnabled() {
return mFlashlightEnabled;
}
@@ -188,6 +293,7 @@ public class FlashlightController {
public void onTorchModeUnavailable(String cameraId) {
if (TextUtils.equals(cameraId, mCameraId)) {
setCameraAvailable(false);
+ setListenForScreenOff(false);
}
}
@@ -196,6 +302,7 @@ public class FlashlightController {
if (TextUtils.equals(cameraId, mCameraId)) {
setCameraAvailable(true);
setTorchMode(enabled);
+ setListenForScreenOff(enabled);
}
}
@@ -204,6 +311,11 @@ public class FlashlightController {
synchronized (FlashlightController.this) {
changed = mTorchAvailable != available;
mTorchAvailable = available;
+
+ if (mUseWakeLock && !available) {
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
+ }
}
if (changed) {
if (DEBUG) Log.d(TAG, "dispatchAvailabilityChanged(" + available + ")");
@@ -216,6 +328,11 @@ public class FlashlightController {
synchronized (FlashlightController.this) {
changed = mFlashlightEnabled != enabled;
mFlashlightEnabled = enabled;
+
+ if (mUseWakeLock && !enabled) {
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
+ }
}
if (changed) {
if (DEBUG) Log.d(TAG, "dispatchModeChanged(" + enabled + ")");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
index 4a95d3a..3d1212b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
@@ -160,6 +160,10 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
mListeners.add(listener);
}
+ public void removeListener(OnHeadsUpChangedListener listener) {
+ mListeners.remove(listener);
+ }
+
public PhoneStatusBar getBar() {
return mBar;
}
@@ -453,7 +457,10 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
mReleaseOnExpandFinish = false;
} else {
for (NotificationData.Entry entry : mEntriesToRemoveAfterExpand) {
- removeHeadsUpEntry(entry);
+ if (isHeadsUp(entry.key)) {
+ // Maybe the heads-up was removed already
+ removeHeadsUpEntry(entry);
+ }
}
}
mEntriesToRemoveAfterExpand.clear();
@@ -572,6 +579,9 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
earliestRemovaltime = currentTime + mMinimumDisplayTime;
postTime = Math.max(postTime, currentTime);
removeAutoRemovalCallbacks();
+ if (mEntriesToRemoveAfterExpand.contains(entry)) {
+ mEntriesToRemoveAfterExpand.remove(entry);
+ }
if (!hasFullScreenIntent(entry)) {
long finishTime = postTime + mHeadsUpNotificationDecay;
long removeDelay = Math.max(finishTime - currentTime, mMinimumDisplayTime);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonRipple.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonRipple.java
index 3f63b5f..ed41121 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonRipple.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonRipple.java
@@ -66,16 +66,19 @@ public class KeyButtonRipple extends Drawable {
private final HashSet<Animator> mRunningAnimations = new HashSet<>();
private final ArrayList<Animator> mTmpArray = new ArrayList<>();
+ private int mRippleColor;
+
public KeyButtonRipple(Context ctx, View targetView) {
mMaxWidth = ctx.getResources().getDimensionPixelSize(R.dimen.key_button_ripple_max_width);
mTargetView = targetView;
+ mRippleColor = ctx.getResources().getColor(R.color.navbutton_ripple_color);
}
private Paint getRipplePaint() {
if (mRipplePaint == null) {
mRipplePaint = new Paint();
mRipplePaint.setAntiAlias(true);
- mRipplePaint.setColor(0xffffffff);
+ mRipplePaint.setColor(mRippleColor);
}
return mRipplePaint;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 4d268ce..6fef3d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -18,6 +18,9 @@ package com.android.systemui.statusbar.policy;
import android.app.ActivityManager;
import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.content.res.ThemeConfig;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.hardware.input.InputManager;
@@ -39,28 +42,46 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageView;
import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.NavbarEditor;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK;
+import cyanogenmod.power.PerformanceManager;
+
public class KeyButtonView extends ImageView {
+ public static final int CURSOR_REPEAT_FLAGS = KeyEvent.FLAG_SOFT_KEYBOARD
+ | KeyEvent.FLAG_KEEP_TOUCH_MODE;
+
private int mContentDescriptionRes;
private long mDownTime;
private int mCode;
+ private boolean mIsSmall;
private int mTouchSlop;
private boolean mSupportsLongpress = true;
+ private boolean mInEditMode;
private AudioManager mAudioManager;
private boolean mGestureAborted;
+ private boolean mPerformedLongClick;
+
+ private PerformanceManager mPerf;
private final Runnable mCheckLongPress = new Runnable() {
public void run() {
if (isPressed()) {
// Log.d("KeyButtonView", "longpressed: " + this);
- if (isLongClickable()) {
+ if (mCode == KeyEvent.KEYCODE_DPAD_LEFT || mCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
+ sendEvent(KeyEvent.ACTION_UP, CURSOR_REPEAT_FLAGS,
+ System.currentTimeMillis(), false);
+ sendEvent(KeyEvent.ACTION_DOWN, CURSOR_REPEAT_FLAGS,
+ System.currentTimeMillis(), false);
+ postDelayed(mCheckLongPress, ViewConfiguration.getKeyRepeatDelay());
+ } else if (isLongClickable()) {
// Just an old-fashioned ImageView
+ mPerformedLongClick = true;
performLongClick();
- } else if (mSupportsLongpress) {
+ } else {
sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
}
@@ -94,6 +115,7 @@ public class KeyButtonView extends ImageView {
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
setBackground(new KeyButtonRipple(context, this));
+ mPerf = PerformanceManager.getInstance(context);
}
@Override
@@ -142,7 +164,83 @@ public class KeyButtonView extends ImageView {
return super.performAccessibilityActionInternal(action, arguments);
}
+ @Override
+ public Resources getResources() {
+ ThemeConfig themeConfig = mContext.getResources().getConfiguration().themeConfig;
+ Resources res = null;
+ if (themeConfig != null) {
+ try {
+ final String navbarThemePkgName = themeConfig.getOverlayForNavBar();
+ final String sysuiThemePkgName = themeConfig.getOverlayForStatusBar();
+ // Check if the same theme is applied for systemui, if so we can skip this
+ if (navbarThemePkgName != null && !navbarThemePkgName.equals(sysuiThemePkgName)) {
+ res = mContext.getPackageManager().getThemedResourcesForApplication(
+ mContext.getPackageName(), navbarThemePkgName);
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ // don't care since we'll handle res being null below
+ }
+ }
+
+ return res != null ? res : super.getResources();
+ }
+
+ public void setEditMode(boolean editMode) {
+ mInEditMode = editMode;
+ updateVisibility();
+ }
+
+ public void setInfo(NavbarEditor.ButtonInfo item, boolean isVertical, boolean isSmall) {
+ final Resources res = getResources();
+ setInfo(item, isVertical, isSmall, res);
+ }
+
+ public void setInfo(NavbarEditor.ButtonInfo item, boolean isVertical, boolean isSmall,
+ Resources res) {
+ final int keyDrawableResId;
+
+ setTag(item);
+ setContentDescription(res.getString(item.contentDescription));
+ mCode = item.keyCode;
+ mIsSmall = isSmall;
+
+ if (isSmall) {
+ keyDrawableResId = item.sideResource;
+ } else if (!isVertical) {
+ keyDrawableResId = item.portResource;
+ } else {
+ keyDrawableResId = item.landResource;
+ }
+ // The reason for setImageDrawable vs setImageResource is because setImageResource calls
+ // relayout() w/o any checks. setImageDrawable performs size checks and only calls relayout
+ // if necessary. We rely on this because otherwise the setX/setY attributes which are post
+ // layout cause it to mess up the layout.
+ setImageDrawable(res.getDrawable(keyDrawableResId));
+ updateVisibility();
+ }
+
+ private void updateVisibility() {
+ if (mInEditMode) {
+ setVisibility(View.VISIBLE);
+ return;
+ }
+
+ NavbarEditor.ButtonInfo info = (NavbarEditor.ButtonInfo) getTag();
+ if (info == NavbarEditor.NAVBAR_EMPTY) {
+ setVisibility(mIsSmall ? View.INVISIBLE : View.GONE);
+ } else if (info == NavbarEditor.NAVBAR_CONDITIONAL_MENU) {
+ setVisibility(View.INVISIBLE);
+ }
+ }
+
+ private boolean supportsLongPress() {
+ return mSupportsLongpress;
+ }
+
public boolean onTouchEvent(MotionEvent ev) {
+ if (mInEditMode) {
+ return false;
+ }
final int action = ev.getAction();
int x, y;
if (action == MotionEvent.ACTION_DOWN) {
@@ -152,22 +250,32 @@ public class KeyButtonView extends ImageView {
return false;
}
+ // A lot of stuff is about to happen. Lets get ready.
+ mPerf.cpuBoost(750000);
+
switch (action) {
case MotionEvent.ACTION_DOWN:
mDownTime = SystemClock.uptimeMillis();
setPressed(true);
- if (mCode != 0) {
+ if (mCode == KeyEvent.KEYCODE_DPAD_LEFT || mCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
+ sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_VIRTUAL_HARD_KEY
+ | KeyEvent.FLAG_KEEP_TOUCH_MODE, mDownTime, false);
+ } else if (mCode != 0) {
sendEvent(KeyEvent.ACTION_DOWN, 0, mDownTime);
} else {
// Provide the same haptic feedback that the system offers for virtual keys.
performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
- removeCallbacks(mCheckLongPress);
- postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
+
+ if (supportsLongPress()) {
+ removeCallbacks(mCheckLongPress);
+ postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
+ }
+
break;
case MotionEvent.ACTION_MOVE:
- x = (int)ev.getX();
- y = (int)ev.getY();
+ x = (int) ev.getX();
+ y = (int) ev.getY();
setPressed(x >= -mTouchSlop
&& x < getWidth() + mTouchSlop
&& y >= -mTouchSlop
@@ -178,7 +286,13 @@ public class KeyButtonView extends ImageView {
if (mCode != 0) {
sendEvent(KeyEvent.ACTION_UP, KeyEvent.FLAG_CANCELED);
}
+
removeCallbacks(mCheckLongPress);
+
+ if (supportsLongPress()) {
+ removeCallbacks(mCheckLongPress);
+ }
+
break;
case MotionEvent.ACTION_UP:
final boolean doIt = isPressed();
@@ -193,11 +307,17 @@ public class KeyButtonView extends ImageView {
}
} else {
// no key code, just a regular ImageView
- if (doIt) {
+ if (doIt && !mPerformedLongClick) {
performClick();
}
}
+
removeCallbacks(mCheckLongPress);
+
+ if (supportsLongPress()) {
+ removeCallbacks(mCheckLongPress);
+ }
+ mPerformedLongClick = false;
break;
}
@@ -213,10 +333,17 @@ public class KeyButtonView extends ImageView {
}
void sendEvent(int action, int flags, long when) {
+ sendEvent(action, flags, when, true);
+ }
+
+ void sendEvent(int action, int flags, long when, boolean applyDefaultFlags) {
final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0;
+ if (applyDefaultFlags) {
+ flags |= KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY;
+ }
final KeyEvent ev = new KeyEvent(mDownTime, when, action, mCode, repeatCount,
0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
- flags | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
+ flags,
InputDevice.SOURCE_KEYBOARD);
InputManager.getInstance().injectInputEvent(ev,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java
new file mode 100644
index 0000000..2f290cc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java
@@ -0,0 +1,349 @@
+package com.android.systemui.statusbar.policy;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.PowerManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.EventLog;
+
+import android.view.View;
+import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.EventLogTags;
+import com.android.systemui.SystemUIApplication;
+import com.android.systemui.keyguard.KeyguardViewMediator;
+import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.phone.NotificationPanelView;
+import com.android.systemui.statusbar.phone.PhoneStatusBar;
+
+import cyanogenmod.app.CMContextConstants;
+import cyanogenmod.app.ILiveLockScreenChangeListener;
+import cyanogenmod.app.ILiveLockScreenManager;
+import cyanogenmod.app.LiveLockScreenInfo;
+import cyanogenmod.externalviews.KeyguardExternalView;
+
+import java.util.Objects;
+
+public class LiveLockScreenController {
+ private static final String TAG = LiveLockScreenController.class.getSimpleName();
+
+ private ILiveLockScreenManager mLLSM;
+ private Context mContext;
+ private PhoneStatusBar mBar;
+ private NotificationPanelView mPanelView;
+ private ComponentName mLiveLockScreenComponentName;
+ private KeyguardExternalView mLiveLockScreenView;
+ private Handler mHandler;
+
+ private int mStatusBarState;
+
+ private PowerManager mPowerManager;
+
+ private boolean mLlsHasFocus = false;
+
+ private boolean mScreenOnAndInteractive;
+
+ private String mLlsName;
+ private KeyguardViewMediator mKeyguardViewMediator;
+
+ public LiveLockScreenController(Context context, PhoneStatusBar bar,
+ NotificationPanelView panelView) {
+ mContext = context;
+ mHandler = new Handler(Looper.getMainLooper());
+
+ mLLSM = ILiveLockScreenManager.Stub.asInterface(ServiceManager.getService(
+ CMContextConstants.CM_LIVE_LOCK_SCREEN_SERVICE));
+ mBar = bar;
+ mPanelView = panelView;
+ mPowerManager = context.getSystemService(PowerManager.class);
+ mKeyguardViewMediator = ((SystemUIApplication)
+ mContext.getApplicationContext()).getComponent(KeyguardViewMediator.class);
+ registerListener();
+ try {
+ LiveLockScreenInfo llsInfo = mLLSM.getCurrentLiveLockScreen();
+ if (llsInfo != null && llsInfo.component != null) {
+ updateLiveLockScreenView(llsInfo.component);
+ }
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+ }
+
+ public void cleanup() {
+ unregisterListener();
+ mPanelView = null;
+ if (mLiveLockScreenView != null) {
+ mLiveLockScreenView.setProviderComponent(null);
+ }
+ mLiveLockScreenView = null;
+ mLiveLockScreenComponentName = null;
+ }
+
+ public void setBarState(int statusBarState) {
+ if (mStatusBarState != StatusBarState.SHADE && statusBarState == StatusBarState.SHADE) {
+ // going from KEYGUARD or SHADE_LOCKED to SHADE so device has been unlocked
+ onKeyguardDismissed();
+ }
+
+ if (statusBarState == StatusBarState.KEYGUARD) {
+ mBar.getScrimController().forceHideScrims(false);
+ }
+
+ mStatusBarState = statusBarState;
+ if (statusBarState == StatusBarState.KEYGUARD ||
+ statusBarState == StatusBarState.SHADE_LOCKED) {
+ if (mLiveLockScreenComponentName != null) {
+ if (mLiveLockScreenView == null) {
+ mLiveLockScreenView =
+ getExternalKeyguardView(mLiveLockScreenComponentName);
+ if (mLiveLockScreenView != null) {
+ mLiveLockScreenView.registerKeyguardExternalViewCallback(
+ mExternalKeyguardViewCallbacks);
+ }
+ }
+ if (mLiveLockScreenView != null && !mLiveLockScreenView.isAttachedToWindow()) {
+ mBar.updateRowStates();
+ mPanelView.addView(mLiveLockScreenView, 0);
+ }
+ }
+ } else {
+ if (isShowingLiveLockScreenView() && !mBar.isKeyguardInputRestricted()) {
+ mPanelView.removeView(mLiveLockScreenView);
+ }
+ mLlsHasFocus = false;
+ }
+ }
+
+ private ILiveLockScreenChangeListener mChangeListener =
+ new ILiveLockScreenChangeListener.Stub() {
+ @Override
+ public void onLiveLockScreenChanged(LiveLockScreenInfo llsInfo) throws RemoteException {
+ if (mPanelView != null) {
+ updateLiveLockScreenView(llsInfo != null ? llsInfo.component : null);
+ }
+ }
+ };
+
+ private void registerListener() {
+ try {
+ mLLSM.registerChangeListener(mChangeListener);
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+ }
+
+ private void unregisterListener() {
+ try {
+ mLLSM.unregisterChangeListener(mChangeListener);
+ } catch (RemoteException e) {
+ /* ignore */
+ }
+ }
+
+ private KeyguardExternalView getExternalKeyguardView(ComponentName componentName) {
+ try {
+ return new KeyguardExternalView(mContext, null, componentName);
+ } catch (Exception e) {
+ // just return null below and move on
+ }
+ return null;
+ }
+
+ private KeyguardExternalView.KeyguardExternalViewCallbacks mExternalKeyguardViewCallbacks =
+ new KeyguardExternalView.KeyguardExternalViewCallbacks() {
+ @Override
+ public boolean requestDismiss() {
+ if (isShowingLiveLockScreenView()) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mBar.showKeyguard();
+ mBar.showBouncer();
+ }
+ });
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean requestDismissAndStartActivity(final Intent intent) {
+ if (isShowingLiveLockScreenView()) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mBar.startActivityDismissingKeyguard(intent, false, true, true,
+ null);
+ }
+ });
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void providerDied() {
+ mLiveLockScreenView.unregisterKeyguardExternalViewCallback(
+ mExternalKeyguardViewCallbacks);
+ mLiveLockScreenView = null;
+ // make sure we're showing the notification panel if the LLS crashed while it had focus
+ if (mLlsHasFocus) {
+ mLlsHasFocus = false;
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mBar.showKeyguard();
+ }
+ });
+ }
+ }
+
+ @Override
+ public void slideLockscreenIn() {
+ if (mLlsHasFocus) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mBar.showKeyguard();
+ }
+ });
+ }
+ }
+ };
+
+ public boolean isShowingLiveLockScreenView() {
+ return mLiveLockScreenView != null && mLiveLockScreenView.isAttachedToWindow();
+ }
+
+ public boolean isLiveLockScreenInteractive() {
+ return mLiveLockScreenView != null && mLiveLockScreenView.isInteractive();
+ }
+
+ public KeyguardExternalView getLiveLockScreenView() {
+ return mLiveLockScreenView;
+ }
+
+ public void onScreenTurnedOn() {
+ mScreenOnAndInteractive = mPowerManager.isInteractive();
+ if (mScreenOnAndInteractive) {
+ if (mLiveLockScreenView != null) mLiveLockScreenView.onScreenTurnedOn();
+ EventLog.writeEvent(EventLogTags.SYSUI_LLS_KEYGUARD_SHOWING, 1);
+ }
+ }
+
+ public void onScreenTurnedOff() {
+ if (mScreenOnAndInteractive) {
+ if (mLiveLockScreenView != null) mLiveLockScreenView.onScreenTurnedOff();
+ if (mStatusBarState != StatusBarState.SHADE) {
+ EventLog.writeEvent(EventLogTags.SYSUI_LLS_KEYGUARD_SHOWING, 0);
+ }
+ mScreenOnAndInteractive = false;
+ }
+ }
+
+ public void onLiveLockScreenFocusChanged(boolean hasFocus) {
+ mKeyguardViewMediator.notifyKeyguardPanelFocusChanged(hasFocus);
+ if (mLiveLockScreenView != null) {
+ // make sure the LLS knows where the notification panel is
+ mLiveLockScreenView.onLockscreenSlideOffsetChanged(hasFocus ? 0f : 1f);
+ }
+ // don't log focus changes when screen is not interactive
+ if (hasFocus != mLlsHasFocus && mPowerManager.isInteractive()) {
+ EventLog.writeEvent(EventLogTags.SYSUI_LLS_NOTIFICATION_PANEL_SHOWN,
+ hasFocus ? 0 : 1);
+ }
+ // Hide statusbar and scrim if live lockscreen
+ // currently has focus
+ mBar.setStatusBarViewVisibility(!hasFocus);
+ mBar.getScrimController().forceHideScrims(hasFocus);
+ mLlsHasFocus = hasFocus;
+ }
+
+ public void onKeyguardDismissed() {
+ if (mLiveLockScreenView != null) mLiveLockScreenView.onKeyguardDismissed();
+ EventLog.writeEvent(EventLogTags.SYSUI_LLS_KEYGUARD_DISMISSED, mLlsHasFocus ? 1 : 0);
+ // Ensure we reset visibility when keyguard is dismissed
+ mBar.setStatusBarViewVisibility(true);
+ mBar.getScrimController().forceHideScrims(false);
+ }
+
+ public boolean getLiveLockScreenHasFocus() {
+ return mLlsHasFocus;
+ }
+
+ public String getLiveLockScreenName() {
+ return mLlsName;
+ }
+
+ private String getLlsNameFromComponentName(ComponentName cn) {
+ if (cn == null) return null;
+
+ PackageManager pm = mContext.getPackageManager();
+ Intent intent = new Intent();
+ intent.setComponent(cn);
+ ResolveInfo ri = pm.resolveService(intent, 0);
+ return ri != null ? ri.serviceInfo.loadLabel(pm).toString() : null;
+ }
+
+ private Runnable mAddNewLiveLockScreenRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (mLiveLockScreenComponentName != null) {
+ mLiveLockScreenView =
+ getExternalKeyguardView(mLiveLockScreenComponentName);
+ mLiveLockScreenView.registerKeyguardExternalViewCallback(
+ mExternalKeyguardViewCallbacks);
+ if (mStatusBarState != StatusBarState.SHADE) {
+ mPanelView.addView(mLiveLockScreenView);
+ mLiveLockScreenView.onKeyguardShowing(true);
+ }
+ } else {
+ mLiveLockScreenView = null;
+ }
+ }
+ };
+
+ private void updateLiveLockScreenView(final ComponentName cn) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ // If mThirdPartyKeyguardViewComponent differs from cn, go ahead and update
+ if (!Objects.equals(mLiveLockScreenComponentName, cn)) {
+ mLiveLockScreenComponentName = cn;
+ mLlsName = getLlsNameFromComponentName(cn);
+ if (mLiveLockScreenView != null) {
+ mLiveLockScreenView.unregisterKeyguardExternalViewCallback(
+ mExternalKeyguardViewCallbacks);
+ // setProviderComponent(null) will unbind the existing service
+ mLiveLockScreenView.setProviderComponent(null);
+ if (mPanelView.indexOfChild(mLiveLockScreenView) >= 0) {
+ mLiveLockScreenView.registerOnWindowAttachmentChangedListener(
+ new KeyguardExternalView.OnWindowAttachmentChangedListener() {
+ @Override
+ public void onAttachedToWindow() {
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ mLiveLockScreenView
+ .unregisterOnWindowAttachmentChangedListener(
+ this);
+ mHandler.post(mAddNewLiveLockScreenRunnable);
+ }
+ }
+ );
+ mPanelView.removeView(mLiveLockScreenView);
+ } else {
+ mAddNewLiveLockScreenRunnable.run();
+ }
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
index 29a8981..a88f22d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
@@ -19,6 +19,9 @@ package com.android.systemui.statusbar.policy;
public interface LocationController {
boolean isLocationEnabled();
boolean setLocationEnabled(boolean enabled);
+ boolean setLocationMode(int mode);
+ int getLocationCurrentState();
+ boolean isAdvancedSettingsEnabled();
void addSettingsChangedCallback(LocationSettingsChangeCallback cb);
void removeSettingsChangedCallback(LocationSettingsChangeCallback cb);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
index 93a8fd8..e7867b6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
@@ -37,6 +37,8 @@ import com.android.systemui.R;
import java.util.ArrayList;
import java.util.List;
+import cyanogenmod.providers.CMSettings;
+
/**
* A controller to manage changes of location related states and update the views accordingly.
*/
@@ -55,6 +57,7 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
private StatusBarManager mStatusBarManager;
private boolean mAreActiveLocationRequests;
+ private int mLastActiveMode;
private ArrayList<LocationSettingsChangeCallback> mSettingsChangeCallbacks =
new ArrayList<LocationSettingsChangeCallback>();
@@ -63,6 +66,11 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
public LocationControllerImpl(Context context, Looper bgLooper) {
mContext = context;
+ // Initialize last active mode. If state was off use the default high accuracy mode
+ mLastActiveMode = getLocationCurrentState();
+ if(mLastActiveMode == Settings.Secure.LOCATION_MODE_OFF)
+ mLastActiveMode = Settings.Secure.LOCATION_MODE_HIGH_ACCURACY;
+
// Register to listen for changes in location settings.
IntentFilter filter = new IntentFilter();
filter.addAction(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION);
@@ -107,10 +115,17 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
return false;
}
final ContentResolver cr = mContext.getContentResolver();
+
+ // Store last active mode if we are switching off
+ // so we can restore it at the next enable
+ if(!enabled) {
+ mLastActiveMode = getLocationCurrentState();
+ }
+
// When enabling location, a user consent dialog will pop up, and the
// setting won't be fully enabled until the user accepts the agreement.
int mode = enabled
- ? Settings.Secure.LOCATION_MODE_HIGH_ACCURACY : Settings.Secure.LOCATION_MODE_OFF;
+ ? mLastActiveMode : Settings.Secure.LOCATION_MODE_OFF;
// QuickSettings always runs as the owner, so specifically set the settings
// for the current foreground user.
return Settings.Secure
@@ -118,6 +133,44 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
}
/**
+ * Enable or disable location in settings to a specific mode.
+ *
+ * <p>This will attempt to enable/disable every type of location setting
+ * (e.g. high and balanced power).
+ *
+ * <p>If enabling, a user consent dialog will pop up prompting the user to accept.
+ * If the user doesn't accept, network location won't be enabled.
+ *
+ * @return true if attempt to change setting was successful.
+ */
+ public boolean setLocationMode(int mode) {
+ int currentUserId = ActivityManager.getCurrentUser();
+ if (isUserLocationRestricted(currentUserId)) {
+ return false;
+ }
+ final ContentResolver cr = mContext.getContentResolver();
+ // When enabling location, a user consent dialog will pop up, and the
+ // setting won't be fully enabled until the user accepts the agreement.
+ // QuickSettings always runs as the owner, so specifically set the settings
+ // for the current foreground user.
+ return Settings.Secure.putIntForUser(cr, Settings.Secure.LOCATION_MODE,
+ mode, currentUserId);
+ }
+
+ /**
+ * Returns int corresponding to current location mode in settings.
+ */
+ public int getLocationCurrentState() {
+ int currentUserId = ActivityManager.getCurrentUser();
+ if (isUserLocationRestricted(currentUserId)) {
+ return Settings.Secure.LOCATION_MODE_OFF;
+ }
+ final ContentResolver cr = mContext.getContentResolver();
+ return Settings.Secure.getIntForUser(cr, Settings.Secure.LOCATION_MODE,
+ Settings.Secure.LOCATION_MODE_OFF, currentUserId);
+ }
+
+ /**
* Returns true if location isn't disabled in settings.
*/
public boolean isLocationEnabled() {
@@ -130,6 +183,14 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
}
/**
+ * Check if advanced location tile is enabled in settings
+ */
+ public boolean isAdvancedSettingsEnabled() {
+ return CMSettings.Secure.getIntForUser(mContext.getContentResolver(),
+ CMSettings.Secure.QS_LOCATION_ADVANCED, 0, ActivityManager.getCurrentUser()) == 1;
+ }
+
+ /**
* Returns true if the current user is restricted from using location.
*/
private boolean isUserLocationRestricted(int userId) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index b65bf43..f7d6f85 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -19,6 +19,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.NetworkCapabilities;
import android.os.Looper;
+import android.os.SystemProperties;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -159,6 +160,7 @@ public class MobileSignalController extends SignalController<
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_B, TelephonyIcons.THREE_G);
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EHRPD, TelephonyIcons.THREE_G);
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_UMTS, TelephonyIcons.THREE_G);
+ mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_TD_SCDMA, TelephonyIcons.THREE_G);
if (!mConfig.showAtLeast3G) {
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_UNKNOWN,
@@ -187,12 +189,18 @@ public class MobileSignalController extends SignalController<
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSDPA, hGroup);
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSUPA, hGroup);
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSPA, hGroup);
+ if (mConfig.hspaDataDistinguishable) {
+ hGroup = TelephonyIcons.HP;
+ }
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_HSPAP, hGroup);
if (mConfig.show4gForLte) {
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.FOUR_G);
+ mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
+ TelephonyIcons.FOUR_G_PLUS);
} else {
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.LTE);
+ mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, TelephonyIcons.LTE);
}
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC);
}
@@ -231,6 +239,7 @@ public class MobileSignalController extends SignalController<
int typeIcon = showDataIcon ? icons.mDataType : 0;
mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
activityIn, activityOut, dataContentDescription, description, icons.mIsWide,
+ mCurrentState.showSeparateRoaming,
mSubscriptionInfo.getSubscriptionId());
}
@@ -270,13 +279,15 @@ public class MobileSignalController extends SignalController<
}
private boolean isRoaming() {
- if (isCdma()) {
+ if (mServiceState == null) {
+ return false;
+ } else if (isCdma()) {
final int iconMode = mServiceState.getCdmaEriIconMode();
return mServiceState.getCdmaEriIconIndex() != EriInfo.ROAMING_INDICATOR_OFF
&& (iconMode == EriInfo.ROAMING_ICON_MODE_NORMAL
|| iconMode == EriInfo.ROAMING_ICON_MODE_FLASH);
} else {
- return mServiceState != null && mServiceState.getRoaming();
+ return mServiceState.getRoaming();
}
}
@@ -371,6 +382,13 @@ public class MobileSignalController extends SignalController<
mCurrentState.level = mSignalStrength.getCdmaLevel();
} else {
mCurrentState.level = mSignalStrength.getLevel();
+ if (mConfig.showRsrpSignalLevelforLTE) {
+ int dataType = mServiceState.getDataNetworkType();
+ if (dataType == TelephonyManager.NETWORK_TYPE_LTE ||
+ dataType == TelephonyManager.NETWORK_TYPE_LTE_CA) {
+ mCurrentState.level = getAlternateLteLevel(mSignalStrength);
+ }
+ }
}
}
if (mNetworkToIconLookup.indexOfKey(mDataNetType) >= 0) {
@@ -379,12 +397,18 @@ public class MobileSignalController extends SignalController<
mCurrentState.iconGroup = mDefaultIcons;
}
mCurrentState.dataConnected = mCurrentState.connected
- && mDataState == TelephonyManager.DATA_CONNECTED;
+ && mDataState == TelephonyManager.DATA_CONNECTED
+ && mCurrentState.dataSim;
+ mCurrentState.showSeparateRoaming = false;
if (isCarrierNetworkChangeActive()) {
mCurrentState.iconGroup = TelephonyIcons.CARRIER_NETWORK_CHANGE;
} else if (isRoaming()) {
- mCurrentState.iconGroup = TelephonyIcons.ROAMING;
+ if (SystemProperties.getBoolean("ro.config.always_show_roaming", false)) {
+ mCurrentState.showSeparateRoaming = true;
+ } else {
+ mCurrentState.iconGroup = TelephonyIcons.ROAMING;
+ }
}
if (isEmergencyOnly() != mCurrentState.isEmergency) {
mCurrentState.isEmergency = isEmergencyOnly();
@@ -399,6 +423,21 @@ public class MobileSignalController extends SignalController<
notifyListenersIfNecessary();
}
+ private int getAlternateLteLevel(SignalStrength signalStrength) {
+ int lteRsrp = signalStrength.getLteDbm();
+ int rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ if (lteRsrp > -44) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (lteRsrp >= -97) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_GREAT;
+ else if (lteRsrp >= -105) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_GOOD;
+ else if (lteRsrp >= -113) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_MODERATE;
+ else if (lteRsrp >= -120) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_POOR;
+ else if (lteRsrp >= -140) rsrpLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ if (DEBUG) {
+ Log.d(mTag, "getAlternateLteLevel lteRsrp:" + lteRsrp + " rsrpLevel = " + rsrpLevel);
+ }
+ return rsrpLevel;
+ }
+
@VisibleForTesting
void setActivity(int activity) {
mCurrentState.activityIn = activity == TelephonyManager.DATA_ACTIVITY_INOUT
@@ -440,6 +479,7 @@ public class MobileSignalController extends SignalController<
+ " dataState=" + state.getDataRegState());
}
mServiceState = state;
+ mDataNetType = state.getDataNetworkType();
updateTelephony();
}
@@ -501,6 +541,7 @@ public class MobileSignalController extends SignalController<
boolean airplaneMode;
boolean carrierNetworkChangeMode;
boolean isDefault;
+ boolean showSeparateRoaming;
@Override
public void copyFrom(State s) {
@@ -514,6 +555,7 @@ public class MobileSignalController extends SignalController<
isEmergency = state.isEmergency;
airplaneMode = state.airplaneMode;
carrierNetworkChangeMode = state.carrierNetworkChangeMode;
+ showSeparateRoaming = state.showSeparateRoaming;
}
@Override
@@ -528,6 +570,7 @@ public class MobileSignalController extends SignalController<
builder.append("isEmergency=").append(isEmergency).append(',');
builder.append("airplaneMode=").append(airplaneMode).append(',');
builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode);
+ builder.append("showSeparateRoaming=").append(showSeparateRoaming);
}
@Override
@@ -540,7 +583,8 @@ public class MobileSignalController extends SignalController<
&& ((MobileState) o).isEmergency == isEmergency
&& ((MobileState) o).airplaneMode == airplaneMode
&& ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
- && ((MobileState) o).isDefault == isDefault;
+ && ((MobileState) o).isDefault == isDefault
+ && ((MobileState) o).showSeparateRoaming == showSeparateRoaming;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 38656ee..57b0dba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -40,7 +40,7 @@ public interface NetworkController {
void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId);
+ String description, boolean isWide, boolean showSeparateRoaming, int subId);
void setSubs(List<SubscriptionInfo> subs);
void setNoSims(boolean show);
@@ -82,7 +82,7 @@ public interface NetworkController {
public interface AccessPointCallback {
void onAccessPointsChanged(List<AccessPoint> accessPoints);
- void onSettingsActivityTriggered(Intent settingsIntent);
+ void onSettingsActivityTriggered(Intent intent);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 2996808..7e1bf05 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -245,6 +245,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
mCallbackHandler.setEmergencyCallsOnly(isEmergencyOnly());
}
+ public void removeEmergencyListener(EmergencyListener listener) {
+ mCallbackHandler.setListening(listener, false);
+ }
+
public boolean hasMobileDataFeature() {
return mHasMobileDataFeature;
}
@@ -751,9 +755,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
datatype.equals("1x") ? TelephonyIcons.ONE_X :
datatype.equals("3g") ? TelephonyIcons.THREE_G :
datatype.equals("4g") ? TelephonyIcons.FOUR_G :
+ datatype.equals("4g+") ? TelephonyIcons.FOUR_G_PLUS :
datatype.equals("e") ? TelephonyIcons.E :
datatype.equals("g") ? TelephonyIcons.G :
datatype.equals("h") ? TelephonyIcons.H :
+ datatype.equals("h+") ? TelephonyIcons.HP :
datatype.equals("lte") ? TelephonyIcons.LTE :
datatype.equals("roam") ? TelephonyIcons.ROAMING :
TelephonyIcons.UNKNOWN;
@@ -780,7 +786,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
private SubscriptionInfo addSignalController(int id, int simSlotIndex) {
SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
- null, 0, 0, "");
+ null, 0, 0, "", 0);
mMobileSignalControllers.put(id, new MobileSignalController(mContext,
mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, this, info,
mSubDefaults, mReceiverHandler.getLooper()));
@@ -825,6 +831,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
boolean alwaysShowCdmaRssi = false;
boolean show4gForLte = false;
boolean hspaDataDistinguishable;
+ boolean showRsrpSignalLevelforLTE;
static Config readConfig(Context context) {
Config config = new Config();
@@ -836,6 +843,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
config.show4gForLte = res.getBoolean(R.bool.config_show4GForLTE);
config.hspaDataDistinguishable =
res.getBoolean(R.bool.config_hspa_data_distinguishable);
+ config.showRsrpSignalLevelforLTE =
+ res.getBoolean(R.bool.config_showRsrpSignalLevelforLTE);
return config;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
index c3bcd94..e54df32 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
@@ -64,7 +64,7 @@ public final class RotationLockControllerImpl implements RotationLockController
}
public boolean isRotationLockAffordanceVisible() {
- return RotationPolicy.isRotationLockToggleVisible(mContext);
+ return RotationPolicy.isRotationSupported(mContext);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
index dce889f..f13ef9f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
@@ -37,7 +37,7 @@ public class SignalCallbackAdapter implements SignalCallback {
@Override
public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
- String description, boolean isWide, int subId) {
+ String description, boolean isWide, boolean showSeparateRoaming, int subId) {
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
index 5e9447e..72e3a06 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
@@ -256,6 +256,7 @@ public abstract class SignalController<T extends SignalController.State,
IconGroup iconGroup;
int inetCondition;
int rssi; // Only for logging.
+ boolean showSeparateRoaming;
// Not used for comparison, just used for logging.
long time;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuController.java
new file mode 100644
index 0000000..de67261
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuController.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.statusbar.policy;
+
+import java.util.List;
+
+public interface SuController {
+ void addCallback(Callback callback);
+ void removeCallback(Callback callback);
+ boolean hasActiveSessions();
+ List<String> getPackageNamesWithActiveSuSessions();
+
+ public interface Callback {
+ void onSuSessionsChanged();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuControllerImpl.java
new file mode 100644
index 0000000..c663bab
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SuControllerImpl.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.statusbar.policy;
+
+import android.app.AppOpsManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A controller to manage changes to superuser-related states and update the views accordingly.
+ */
+public class SuControllerImpl implements SuController {
+ private static final String TAG = "SuControllerImpl";
+
+ private static final int[] mSuOpArray = new int[] {AppOpsManager.OP_SU};
+
+ private ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
+
+ private AppOpsManager mAppOpsManager;
+
+ private List<String> mActiveSuSessions = new ArrayList<>();
+
+ public SuControllerImpl(Context context) {
+ mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(AppOpsManager.ACTION_SU_SESSION_CHANGED);
+ context.registerReceiverAsUser(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(TAG, "Got change");
+ String action = intent.getAction();
+ if (AppOpsManager.ACTION_SU_SESSION_CHANGED.equals(action)) {
+ updateActiveSuSessions();
+ }
+ }
+ }, UserHandle.ALL, intentFilter, null, new Handler());
+
+ updateActiveSuSessions();
+ }
+
+ @Override
+ public void addCallback(Callback callback) {
+ mCallbacks.add(callback);
+ fireCallback(callback);
+ }
+
+ @Override
+ public void removeCallback(Callback callback) {
+ mCallbacks.remove(callback);
+ }
+
+ @Override
+ public boolean hasActiveSessions() {
+ synchronized (mActiveSuSessions) {
+ return mActiveSuSessions.size() > 0;
+ }
+ }
+
+ private void fireCallback(Callback callback) {
+ callback.onSuSessionsChanged();
+ }
+
+ private void fireCallbacks() {
+ for (Callback callback : mCallbacks) {
+ callback.onSuSessionsChanged();
+ }
+ }
+
+ // Return the list of package names that currently have an active su session
+ @Override
+ public List<String> getPackageNamesWithActiveSuSessions() {
+ List<String> packageNames = new ArrayList<>();
+ List<AppOpsManager.PackageOps> packages
+ = mAppOpsManager.getPackagesForOps(mSuOpArray);
+ // AppOpsManager can return null when there is no requested data.
+ if (packages != null) {
+ final int numPackages = packages.size();
+ for (int packageInd = 0; packageInd < numPackages; packageInd++) {
+ AppOpsManager.PackageOps packageOp = packages.get(packageInd);
+ List<AppOpsManager.OpEntry> opEntries = packageOp.getOps();
+ if (opEntries != null) {
+ final int numOps = opEntries.size();
+ for (int opInd = 0; opInd < numOps; opInd++) {
+ AppOpsManager.OpEntry opEntry = opEntries.get(opInd);
+ if (opEntry.getOp() == AppOpsManager.OP_SU) {
+ if (opEntry.isRunning()) {
+ packageNames.add(packageOp.getPackageName());
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return packageNames;
+ }
+
+ private synchronized void updateActiveSuSessions() {
+ List<String> newList = getPackageNamesWithActiveSuSessions();
+ synchronized (mActiveSuSessions) {
+ if (!newList.equals(mActiveSuSessions)) {
+ mActiveSuSessions.clear();
+ mActiveSuSessions.addAll(newList);
+ fireCallbacks();
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index 83e0446..d770681 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -153,6 +153,20 @@ class TelephonyIcons {
static final int QS_DATA_H = R.drawable.ic_qs_signal_h;
+ //HSPA+
+ static final int[][] DATA_HP = {
+ { R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp },
+ { R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp,
+ R.drawable.stat_sys_data_fully_connected_hp }
+ };
+
+ static final int QS_DATA_HP = R.drawable.ic_qs_signal_hp;
+
//CDMA
// Use 3G icons for EVDO data and 1x icons for 1XRTT data
static final int[][] DATA_1X = {
@@ -182,6 +196,19 @@ class TelephonyIcons {
static final int QS_DATA_4G = R.drawable.ic_qs_signal_4g;
+ static final int[][] DATA_4G_PLUS = {
+ { R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus },
+ { R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus,
+ R.drawable.stat_sys_data_fully_connected_4g_plus }
+ };
+
+ static final int QS_DATA_4G_PLUS = R.drawable.ic_qs_signal_4g_plus;
+
// LTE branded "LTE"
static final int[][] DATA_LTE = {
{ R.drawable.stat_sys_data_fully_connected_lte,
@@ -202,8 +229,10 @@ class TelephonyIcons {
static final int ICON_G = R.drawable.stat_sys_data_fully_connected_g;
static final int ICON_E = R.drawable.stat_sys_data_fully_connected_e;
static final int ICON_H = R.drawable.stat_sys_data_fully_connected_h;
+ static final int ICON_HP = R.drawable.stat_sys_data_fully_connected_hp;
static final int ICON_3G = R.drawable.stat_sys_data_fully_connected_3g;
static final int ICON_4G = R.drawable.stat_sys_data_fully_connected_4g;
+ static final int ICON_4G_PLUS = R.drawable.stat_sys_data_fully_connected_4g_plus;
static final int ICON_1X = R.drawable.stat_sys_data_fully_connected_1x;
static final int ICON_CARRIER_NETWORK_CHANGE =
R.drawable.stat_sys_signal_carrier_network_change_animation;
@@ -211,6 +240,7 @@ class TelephonyIcons {
static final int QS_ICON_LTE = R.drawable.ic_qs_signal_lte;
static final int QS_ICON_3G = R.drawable.ic_qs_signal_3g;
static final int QS_ICON_4G = R.drawable.ic_qs_signal_4g;
+ static final int QS_ICON_4G_PLUS = R.drawable.ic_qs_signal_4g_plus;
static final int QS_ICON_1X = R.drawable.ic_qs_signal_1x;
static final int QS_ICON_CARRIER_NETWORK_CHANGE =
R.drawable.ic_qs_signal_carrier_network_change_animation;
@@ -323,12 +353,27 @@ class TelephonyIcons {
TelephonyIcons.TELEPHONY_NO_NETWORK,
TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
- R.string.accessibility_data_connection_3_5g,
+ R.string.accessibility_data_connection_hspa,
TelephonyIcons.ICON_H,
false,
TelephonyIcons.QS_DATA_H
);
+ static final MobileIconGroup HP = new MobileIconGroup(
+ "HP",
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
+ TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
+ 0, 0,
+ TelephonyIcons.TELEPHONY_NO_NETWORK,
+ TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
+ R.string.accessibility_data_connection_hspap,
+ TelephonyIcons.ICON_HP,
+ false,
+ TelephonyIcons.QS_DATA_HP
+ );
+
static final MobileIconGroup FOUR_G = new MobileIconGroup(
"4G",
TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
@@ -344,6 +389,21 @@ class TelephonyIcons {
TelephonyIcons.QS_DATA_4G
);
+ static final MobileIconGroup FOUR_G_PLUS = new MobileIconGroup(
+ "4G+",
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
+ TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
+ 0,0,
+ TelephonyIcons.TELEPHONY_NO_NETWORK,
+ TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
+ R.string.accessibility_data_connection_4g_plus,
+ TelephonyIcons.ICON_4G_PLUS,
+ true,
+ TelephonyIcons.QS_DATA_4G_PLUS
+ );
+
static final MobileIconGroup LTE = new MobileIconGroup(
"LTE",
TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
index a8d4f13..58168e8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
@@ -54,6 +54,7 @@ public final class UserInfoController {
private boolean mUseDefaultAvatar;
private String mUserName;
private Drawable mUserDrawable;
+ private boolean mProfileSetup;
public UserInfoController(Context context) {
mContext = context;
@@ -73,6 +74,10 @@ public final class UserInfoController {
mCallbacks.add(callback);
}
+ public void removeListener (OnUserInfoChangedListener callback) {
+ mCallbacks.remove(callback);
+ }
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -158,24 +163,23 @@ public final class UserInfoController {
mUseDefaultAvatar = true;
}
- // If it's a single-user device, get the profile name, since the nickname is not
- // usually valid
- if (um.getUsers().size() <= 1) {
- // Try and read the display name from the local profile
- final Cursor cursor = context.getContentResolver().query(
- ContactsContract.Profile.CONTENT_URI, new String[] {
- ContactsContract.CommonDataKinds.Phone._ID,
- ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
- }, null, null, null);
- if (cursor != null) {
- try {
- if (cursor.moveToFirst()) {
- name = cursor.getString(cursor.getColumnIndex(
- ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
- }
- } finally {
- cursor.close();
+ mProfileSetup = false;
+
+ // Try and read the display name from the local profile
+ final Cursor cursor = context.getContentResolver().query(
+ ContactsContract.Profile.CONTENT_URI, new String[] {
+ ContactsContract.CommonDataKinds.Phone._ID,
+ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ }, null, null, null);
+ if (cursor != null) {
+ try {
+ if (cursor.moveToFirst()) {
+ mProfileSetup = true;
+ name = cursor.getString(cursor.getColumnIndex(
+ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}
+ } finally {
+ cursor.close();
}
}
return new Pair<String, Drawable>(name, avatar);
@@ -198,6 +202,10 @@ public final class UserInfoController {
}
}
+ public boolean isProfileSetup() {
+ return mProfileSetup;
+ }
+
public interface OnUserInfoChangedListener {
public void onUserInfoChanged(String name, Drawable picture);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index 3e8d4e9..38fb275 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -53,6 +53,7 @@ import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.tiles.UserDetailView;
import com.android.systemui.statusbar.phone.SystemUIDialog;
+import cyanogenmod.app.StatusBarPanelCustomTile;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -587,6 +588,11 @@ public class UserSwitcherController {
}
@Override
+ public StatusBarPanelCustomTile getCustomTile() {
+ return null;
+ }
+
+ @Override
public Boolean getToggleState() {
return null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherController.java
new file mode 100644
index 0000000..0f71bcc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherController.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.statusbar.policy;
+
+public interface WeatherController {
+ void addCallback(Callback callback);
+ void removeCallback(Callback callback);
+ WeatherInfo getWeatherInfo();
+
+ public interface Callback {
+ void onWeatherChanged(WeatherInfo temp);
+ }
+ public static class WeatherInfo {
+ public double temp = Double.NaN;
+ public String city = null;
+ public String condition = null;
+ public int tempUnit;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherControllerImpl.java
new file mode 100644
index 0000000..1a798f0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WeatherControllerImpl.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.systemui.statusbar.policy;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Handler;
+import android.util.Log;
+import cyanogenmod.providers.CMSettings;
+import cyanogenmod.providers.WeatherContract;
+import cyanogenmod.weather.CMWeatherManager;
+import cyanogenmod.weather.util.WeatherUtils;
+
+import java.util.ArrayList;
+
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.CURRENT_CITY;
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.CURRENT_CONDITION;
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.CURRENT_TEMPERATURE;
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.CURRENT_TEMPERATURE_UNIT;
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.TempUnit.CELSIUS;
+import static cyanogenmod.providers.WeatherContract.WeatherColumns.TempUnit.FAHRENHEIT;
+
+public class WeatherControllerImpl implements WeatherController {
+
+ private static final String TAG = WeatherController.class.getSimpleName();
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+ private WeatherContentObserver mWeatherContentObserver;
+ private Handler mHandler;
+ private int mWeatherUnit;
+ private Uri mWeatherTempetarureUri;
+
+ public static final ComponentName COMPONENT_WEATHER_FORECAST = new ComponentName(
+ "com.cyanogenmod.lockclock", "com.cyanogenmod.lockclock.weather.ForecastActivity");
+ public static final String ACTION_FORCE_WEATHER_UPDATE
+ = "com.cyanogenmod.lockclock.action.FORCE_WEATHER_UPDATE";
+ private static final String[] WEATHER_PROJECTION = new String[]{
+ CURRENT_TEMPERATURE,
+ CURRENT_TEMPERATURE_UNIT,
+ CURRENT_CITY,
+ CURRENT_CONDITION
+ };
+
+ private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
+ private final Context mContext;
+
+ private WeatherInfo mCachedInfo = new WeatherInfo();
+
+ public WeatherControllerImpl(Context context) {
+ mContext = context;
+ mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+ mHandler = new Handler();
+ mWeatherContentObserver = new WeatherContentObserver(mHandler);
+ mWeatherTempetarureUri
+ = CMSettings.Global.getUriFor(CMSettings.Global.WEATHER_TEMPERATURE_UNIT);
+ mContext.getContentResolver().registerContentObserver(
+ WeatherContract.WeatherColumns.CURRENT_WEATHER_URI,true, mWeatherContentObserver);
+ mContext.getContentResolver().registerContentObserver(mWeatherTempetarureUri, true,
+ mWeatherContentObserver);
+ queryWeatherTempUnit();
+ queryWeather();
+ }
+
+ public void addCallback(Callback callback) {
+ if (callback == null || mCallbacks.contains(callback)) return;
+ if (DEBUG) Log.d(TAG, "addCallback " + callback);
+ mCallbacks.add(callback);
+ callback.onWeatherChanged(mCachedInfo); // immediately update with current values
+ }
+
+ public void removeCallback(Callback callback) {
+ if (callback == null) return;
+ if (DEBUG) Log.d(TAG, "removeCallback " + callback);
+ mCallbacks.remove(callback);
+ }
+
+ @Override
+ public WeatherInfo getWeatherInfo() {
+ return mCachedInfo;
+ }
+
+ private void queryWeather() {
+ Cursor c = mContext.getContentResolver().query(
+ WeatherContract.WeatherColumns.CURRENT_WEATHER_URI, WEATHER_PROJECTION,
+ null, null, null);
+ if (c == null) {
+ if(DEBUG) Log.e(TAG, "cursor was null for temperature, forcing weather update");
+ //LockClock keeps track of the user settings (temp unit, search by geo location/city)
+ //so we delegate the responsibility of handling a weather update to LockClock
+ mContext.sendBroadcast(new Intent(ACTION_FORCE_WEATHER_UPDATE));
+ } else {
+ try {
+ c.moveToFirst();
+ double temp = c.getDouble(0);
+ int reportedUnit = c.getInt(1);
+ if (reportedUnit == CELSIUS && mWeatherUnit == FAHRENHEIT) {
+ temp = WeatherUtils.celsiusToFahrenheit(temp);
+ } else if (reportedUnit == FAHRENHEIT && mWeatherUnit == CELSIUS) {
+ temp = WeatherUtils.fahrenheitToCelsius(temp);
+ }
+
+ mCachedInfo.temp = temp;
+ mCachedInfo.tempUnit = mWeatherUnit;
+ mCachedInfo.city = c.getString(2);
+ mCachedInfo.condition = c.getString(3);
+ } finally {
+ c.close();
+ }
+ }
+ }
+
+ private void fireCallback() {
+ for (Callback callback : mCallbacks) {
+ callback.onWeatherChanged(mCachedInfo);
+ }
+ }
+
+ private class WeatherContentObserver extends ContentObserver {
+
+ public WeatherContentObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ if (uri != null) {
+ if (uri.compareTo(WeatherContract.WeatherColumns.CURRENT_WEATHER_URI) == 0) {
+ queryWeather();
+ fireCallback();
+ } else if (uri.compareTo(mWeatherTempetarureUri) == 0) {
+ queryWeatherTempUnit();
+ fixCachedWeatherInfo();
+ fireCallback();
+ } else {
+ super.onChange(selfChange, uri);
+ }
+ }
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onChange(selfChange, null);
+ }
+ }
+
+ private void queryWeatherTempUnit() {
+ try {
+ mWeatherUnit = CMSettings.Global.getInt(mContext.getContentResolver(),
+ CMSettings.Global.WEATHER_TEMPERATURE_UNIT);
+ } catch (CMSettings.CMSettingNotFoundException e) {
+ //CMSettingsProvider should have taken care of setting a default value for this setting
+ //so how is that we ended up here?? We need to set a valid temp unit anyway to keep
+ //this going
+ mWeatherUnit = WeatherContract.WeatherColumns.TempUnit.CELSIUS;
+ }
+ }
+
+ private void fixCachedWeatherInfo() {
+ if (mCachedInfo.tempUnit == CELSIUS && mWeatherUnit == FAHRENHEIT) {
+ mCachedInfo.temp = WeatherUtils.celsiusToFahrenheit(mCachedInfo.temp);
+ mCachedInfo.tempUnit = FAHRENHEIT;
+ } else if (mCachedInfo.tempUnit == FAHRENHEIT && mWeatherUnit == CELSIUS) {
+ mCachedInfo.temp = WeatherUtils.fahrenheitToCelsius(mCachedInfo.temp);
+ mCachedInfo.tempUnit = CELSIUS;
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index af38f5f..b6e131a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -50,9 +50,12 @@ import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.phone.ScrimController;
+import com.android.systemui.statusbar.phone.ViewLinker;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.ScrollAdapter;
+import cyanogenmod.power.PerformanceManager;
+
import java.util.ArrayList;
import java.util.HashSet;
@@ -61,7 +64,8 @@ import java.util.HashSet;
*/
public class NotificationStackScrollLayout extends ViewGroup
implements SwipeHelper.Callback, ExpandHelper.Callback, ScrollAdapter,
- ExpandableView.OnHeightChangedListener, NotificationGroupManager.OnGroupChangeListener {
+ ExpandableView.OnHeightChangedListener, NotificationGroupManager.OnGroupChangeListener,
+ ViewLinker.ViewLinkerParent {
private static final String TAG = "NotificationStackScrollLayout";
private static final boolean DEBUG = false;
@@ -208,6 +212,7 @@ public class NotificationStackScrollLayout extends ViewGroup
private boolean mDelegateToScrollView;
private boolean mDisallowScrollingInThisMotion;
private long mGoToFullShadeDelay;
+
private ViewTreeObserver.OnPreDrawListener mChildrenUpdater
= new ViewTreeObserver.OnPreDrawListener() {
@Override
@@ -231,6 +236,7 @@ public class NotificationStackScrollLayout extends ViewGroup
private boolean mForceNoOverlappingRendering;
private NotificationOverflowContainer mOverflowContainer;
private final ArrayList<Pair<ExpandableNotificationRow, Boolean>> mTmpList = new ArrayList<>();
+ private ViewLinker.ViewLinkerCallback mLinkerCallback;
public NotificationStackScrollLayout(Context context) {
this(context, null);
@@ -839,6 +845,7 @@ public class NotificationStackScrollLayout extends ViewGroup
&& !mOnlyScrollingInThisMotion) {
horizontalSwipeWantsIt = mSwipeHelper.onTouchEvent(ev);
}
+
return horizontalSwipeWantsIt || scrollerWantsIt || expandWantsIt || super.onTouchEvent(ev);
}
@@ -2875,6 +2882,23 @@ public class NotificationStackScrollLayout extends ViewGroup
return !mForceNoOverlappingRendering && super.hasOverlappingRendering();
}
+ @Override
+ public void registerLinker(ViewLinker.ViewLinkerCallback callback) {
+ mLinkerCallback = callback;
+ }
+
+ @Override
+ public void setAlpha(float alpha) {
+ super.setAlpha(alpha);
+ mLinkerCallback.onAlphaChanged(alpha);
+ }
+
+ @Override
+ public void setTranslationX(float translationX) {
+ super.setTranslationX(translationX);
+ mLinkerCallback.onTranslationXChanged(translationX);
+ }
+
/**
* A listener that is notified when some child locations might have changed.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index cf696a1..93995f8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -42,6 +42,8 @@ public class StackScrollAlgorithm {
private static final int MAX_ITEMS_IN_BOTTOM_STACK = 3;
private static final int MAX_ITEMS_IN_TOP_STACK = 3;
+ private static final int DEFAULT_CORNER_RADIUS = 2;
+
public static final float DIMMED_SCALE = 0.95f;
private int mPaddingBetweenElements;
@@ -72,6 +74,7 @@ public class StackScrollAlgorithm {
private int mMaxNotificationHeight;
private boolean mScaleDimmed;
private HeadsUpManager mHeadsUpManager;
+ private boolean mPerformClipping;
public StackScrollAlgorithm(Context context) {
initConstants(context);
@@ -128,6 +131,12 @@ public class StackScrollAlgorithm {
R.dimen.notification_collapse_second_card_padding);
mScaleDimmed = context.getResources().getDisplayMetrics().densityDpi
>= DisplayMetrics.DENSITY_420;
+
+ // We don't want to clip the notification if a theme overrides the corner radius with
+ // a value larger than the default.
+ mPerformClipping = context.getResources()
+ .getDimension(R.dimen.notification_material_rounded_rect_radius) <=
+ DEFAULT_CORNER_RADIUS * context.getResources().getDisplayMetrics().density;
}
public boolean shouldScaleDimmed() {
@@ -228,8 +237,7 @@ public class StackScrollAlgorithm {
// In the unlocked shade we have to clip a little bit higher because of the rounded
// corners of the notifications, but only if we are not fully overlapped by
// the top card.
- float clippingCorrection = state.dimmed
- ? 0
+ float clippingCorrection = state.dimmed ? (mPerformClipping ? 0 : newHeight)
: mRoundedRectCornerRadius * state.scale;
clipHeight += clippingCorrection;
}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
index a2b062c..0ae34bf 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
@@ -155,7 +155,7 @@ public class DemoModeFragment extends PreferenceFragment implements OnPreference
getContext().sendBroadcast(intent);
intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_CLOCK);
- intent.putExtra("hhmm", "0600");
+ intent.putExtra("hhmm", "1230");
getContext().sendBroadcast(intent);
intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_NETWORK);
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java b/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
index 37ac098..53fbef7 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/QsTuner.java
@@ -15,14 +15,23 @@
*/
package com.android.systemui.tuner;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.ClipData;
+import android.content.ClipDescription;
import android.content.Context;
import android.content.DialogInterface;
+import android.graphics.Canvas;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings.Secure;
+import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.util.Log;
import android.view.DragEvent;
@@ -30,11 +39,9 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnDragListener;
-import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.FrameLayout;
@@ -42,6 +49,8 @@ import android.widget.ScrollView;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
+import com.android.systemui.qs.QSDragPanel;
+import com.android.systemui.qs.QSPage;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.QSTile.Host.Callback;
@@ -52,6 +61,7 @@ import com.android.systemui.statusbar.phone.QSTileHost;
import com.android.systemui.statusbar.policy.SecurityController;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
public class QsTuner extends Fragment implements Callback {
@@ -59,16 +69,13 @@ public class QsTuner extends Fragment implements Callback {
private static final String TAG = "QsTuner";
private static final int MENU_RESET = Menu.FIRST;
+ private static final int MENU_EDIT = Menu.FIRST + 1;
private DraggableQsPanel mQsPanel;
private CustomHost mTileHost;
- private FrameLayout mDropTarget;
-
private ScrollView mScrollRoot;
- private FrameLayout mAddTarget;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -78,6 +85,7 @@ public class QsTuner extends Fragment implements Callback {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_RESET, 0, com.android.internal.R.string.reset);
+ menu.add(0, MENU_EDIT, 0, "toggle edit");
}
public void onResume() {
@@ -93,8 +101,11 @@ public class QsTuner extends Fragment implements Callback {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
+ case MENU_EDIT:
+ mQsPanel.setEditing(!mQsPanel.isEditing());
+ break;
case MENU_RESET:
- mTileHost.reset();
+ mTileHost.resetTiles();
break;
case android.R.id.home:
getFragmentManager().popBackStack();
@@ -105,7 +116,7 @@ public class QsTuner extends Fragment implements Callback {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
+ Bundle savedInstanceState) {
mScrollRoot = (ScrollView) inflater.inflate(R.layout.tuner_qs, container, false);
mQsPanel = new DraggableQsPanel(getContext());
@@ -116,10 +127,6 @@ public class QsTuner extends Fragment implements Callback {
mQsPanel.refreshAllTiles();
((ViewGroup) mScrollRoot.findViewById(R.id.all_details)).addView(mQsPanel, 0);
- mDropTarget = (FrameLayout) mScrollRoot.findViewById(R.id.remove_target);
- setupDropTarget();
- mAddTarget = (FrameLayout) mScrollRoot.findViewById(R.id.add_target);
- setupAddTarget();
return mScrollRoot;
}
@@ -129,89 +136,38 @@ public class QsTuner extends Fragment implements Callback {
super.onDestroyView();
}
- private void setupDropTarget() {
- QSTileView tileView = new QSTileView(getContext());
- QSTile.State state = new QSTile.State();
- state.visible = true;
- state.icon = ResourceIcon.get(R.drawable.ic_delete);
- state.label = getString(com.android.internal.R.string.delete);
- tileView.onStateChanged(state);
- mDropTarget.addView(tileView);
- mDropTarget.setVisibility(View.GONE);
- new DragHelper(tileView, new DropListener() {
- @Override
- public void onDrop(String sourceText) {
- mTileHost.remove(sourceText);
- }
- });
- }
-
- private void setupAddTarget() {
- QSTileView tileView = new QSTileView(getContext());
- QSTile.State state = new QSTile.State();
- state.visible = true;
- state.icon = ResourceIcon.get(R.drawable.ic_add_circle_qs);
- state.label = getString(R.string.add_tile);
- tileView.onStateChanged(state);
- mAddTarget.addView(tileView);
- tileView.setClickable(true);
- tileView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- mTileHost.showAddDialog();
- }
- });
+ @Override
+ public void onTilesChanged() {
+ mQsPanel.setTiles(mTileHost.getTiles());
}
- public void onStartDrag() {
- mDropTarget.post(new Runnable() {
- @Override
- public void run() {
- mDropTarget.setVisibility(View.VISIBLE);
- mAddTarget.setVisibility(View.GONE);
- }
- });
+ @Override
+ public void setEditing(boolean editing) {
+ mQsPanel.setEditing(editing);
}
- public void stopDrag() {
- mDropTarget.post(new Runnable() {
- @Override
- public void run() {
- mDropTarget.setVisibility(View.GONE);
- mAddTarget.setVisibility(View.VISIBLE);
- }
- });
+ @Override
+ public boolean isEditing() {
+ return mTileHost.isEditing();
}
@Override
- public void onTilesChanged() {
- mQsPanel.setTiles(mTileHost.getTiles());
+ public void goToSettingsPage() {
}
- private static int getLabelResource(String spec) {
- if (spec.equals("wifi")) return R.string.quick_settings_wifi_label;
- else if (spec.equals("bt")) return R.string.quick_settings_bluetooth_label;
- else if (spec.equals("inversion")) return R.string.quick_settings_inversion_label;
- else if (spec.equals("cell")) return R.string.quick_settings_cellular_detail_title;
- else if (spec.equals("airplane")) return R.string.airplane_mode;
- else if (spec.equals("dnd")) return R.string.quick_settings_dnd_label;
- else if (spec.equals("rotation")) return R.string.quick_settings_rotation_locked_label;
- else if (spec.equals("flashlight")) return R.string.quick_settings_flashlight_label;
- else if (spec.equals("location")) return R.string.quick_settings_location_label;
- else if (spec.equals("cast")) return R.string.quick_settings_cast_title;
- else if (spec.equals("hotspot")) return R.string.quick_settings_hotspot_label;
- return 0;
+ @Override
+ public void resetTiles() {
}
private static class CustomHost extends QSTileHost {
public CustomHost(Context context) {
super(context, null, null, null, null, null, null, null, null, null,
- null, null, new BlankSecurityController());
+ null, null, new BlankSecurityController(), null);
}
@Override
- protected QSTile<?> createTile(String tileSpec) {
+ public QSTile<?> createTile(String tileSpec) {
return new DraggableTile(this, tileSpec);
}
@@ -232,97 +188,6 @@ public class QsTuner extends Fragment implements Callback {
setTiles(order);
}
- public void remove(String tile) {
- MetricsLogger.action(getContext(), MetricsLogger.TUNER_QS_REMOVE, tile);
- List<String> tiles = new ArrayList<>(mTileSpecs);
- tiles.remove(tile);
- setTiles(tiles);
- }
-
- public void add(String tile) {
- MetricsLogger.action(getContext(), MetricsLogger.TUNER_QS_ADD, tile);
- List<String> tiles = new ArrayList<>(mTileSpecs);
- tiles.add(tile);
- setTiles(tiles);
- }
-
- public void reset() {
- Secure.putStringForUser(getContext().getContentResolver(),
- TILES_SETTING, "default", ActivityManager.getCurrentUser());
- }
-
- private void setTiles(List<String> tiles) {
- Secure.putStringForUser(getContext().getContentResolver(), TILES_SETTING,
- TextUtils.join(",", tiles), ActivityManager.getCurrentUser());
- }
-
- public void showAddDialog() {
- List<String> tiles = mTileSpecs;
- int numBroadcast = 0;
- for (int i = 0; i < tiles.size(); i++) {
- if (tiles.get(i).startsWith(IntentTile.PREFIX)) {
- numBroadcast++;
- }
- }
- String[] defaults =
- getContext().getString(R.string.quick_settings_tiles_default).split(",");
- final String[] available = new String[defaults.length + 1
- - (tiles.size() - numBroadcast)];
- final String[] availableTiles = new String[available.length];
- int index = 0;
- for (int i = 0; i < defaults.length; i++) {
- if (tiles.contains(defaults[i])) {
- continue;
- }
- int resource = getLabelResource(defaults[i]);
- if (resource != 0) {
- availableTiles[index] = defaults[i];
- available[index++] = getContext().getString(resource);
- } else {
- availableTiles[index] = defaults[i];
- available[index++] = defaults[i];
- }
- }
- available[index++] = getContext().getString(R.string.broadcast_tile);
- new AlertDialog.Builder(getContext())
- .setTitle(R.string.add_tile)
- .setItems(available, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- if (which < available.length - 1) {
- add(availableTiles[which]);
- } else {
- showBroadcastTileDialog();
- }
- }
- }).show();
- }
-
- public void showBroadcastTileDialog() {
- final EditText editText = new EditText(getContext());
- new AlertDialog.Builder(getContext())
- .setTitle(R.string.broadcast_tile)
- .setView(editText)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- String action = editText.getText().toString();
- if (isValid(action)) {
- add(IntentTile.PREFIX + action + ')');
- }
- }
- }).show();
- }
-
- private boolean isValid(String action) {
- for (int i = 0; i < action.length(); i++) {
- char c = action.charAt(i);
- if (!Character.isAlphabetic(c) && !Character.isDigit(c) && c != '.') {
- return false;
- }
- }
- return true;
- }
-
private static class BlankSecurityController implements SecurityController {
@Override
public boolean hasDeviceOwner() {
@@ -373,8 +238,7 @@ public class QsTuner extends Fragment implements Callback {
}
}
- private static class DraggableTile extends QSTile<QSTile.State>
- implements DropListener {
+ public static class DraggableTile extends QSTile<QSTile.State> {
private String mSpec;
private QSTileView mView;
@@ -391,7 +255,7 @@ public class QsTuner extends Fragment implements Callback {
}
@Override
- public boolean supportsDualTargets() {
+ public boolean hasDualTargetsDetails() {
return "wifi".equals(mSpec) || "bt".equals(mSpec);
}
@@ -416,7 +280,7 @@ public class QsTuner extends Fragment implements Callback {
}
private String getLabel() {
- int resource = getLabelResource(mSpec);
+ int resource = QSTileHost.getLabelResource(mSpec);
if (resource != 0) {
return mContext.getString(resource);
}
@@ -443,6 +307,7 @@ public class QsTuner extends Fragment implements Callback {
else if (mSpec.equals("location")) return R.drawable.ic_signal_location_enable;
else if (mSpec.equals("cast")) return R.drawable.ic_qs_cast_on;
else if (mSpec.equals("hotspot")) return R.drawable.ic_hotspot_enable;
+ else if (mSpec.equals("adb_network")) return R.drawable.ic_qs_network_adb_on;
return R.drawable.android;
}
@@ -460,81 +325,19 @@ public class QsTuner extends Fragment implements Callback {
}
@Override
- public void onDrop(String sourceText) {
- ((CustomHost) mHost).replace(mSpec, sourceText);
- }
-
- }
-
- private class DragHelper implements OnDragListener {
-
- private final View mView;
- private final DropListener mListener;
-
- public DragHelper(View view, DropListener dropListener) {
- mView = view;
- mListener = dropListener;
- mView.setOnDragListener(this);
- }
-
- @Override
- public boolean onDrag(View v, DragEvent event) {
- switch (event.getAction()) {
- case DragEvent.ACTION_DRAG_ENTERED:
- mView.setBackgroundColor(0x77ffffff);
- break;
- case DragEvent.ACTION_DRAG_ENDED:
- stopDrag();
- case DragEvent.ACTION_DRAG_EXITED:
- mView.setBackgroundColor(0x0);
- break;
- case DragEvent.ACTION_DROP:
- stopDrag();
- String text = event.getClipData().getItemAt(0).getText().toString();
- mListener.onDrop(text);
- break;
- }
- return true;
+ public String toString() {
+ return mSpec;
}
-
}
- public interface DropListener {
- void onDrop(String sourceText);
- }
+ private class DraggableQsPanel extends QSDragPanel {
- private class DraggableQsPanel extends QSPanel implements OnTouchListener {
public DraggableQsPanel(Context context) {
super(context);
- mBrightnessView.setVisibility(View.GONE);
- }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- for (TileRecord r : mRecords) {
- new DragHelper(r.tileView, (DraggableTile) r.tile);
- r.tileView.setTag(r.tile);
- r.tileView.setOnTouchListener(this);
-
- for (int i = 0; i < r.tileView.getChildCount(); i++) {
- r.tileView.getChildAt(i).setClickable(false);
- }
- }
+ setEditing(true);
}
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- String tileSpec = (String) ((DraggableTile) v.getTag()).mSpec;
- ClipData data = ClipData.newPlainText(tileSpec, tileSpec);
- v.startDrag(data, new View.DragShadowBuilder(v), null, 0);
- onStartDrag();
- return true;
- }
- return false;
- }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/StatusBarIconBlacklistFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarIconBlacklistFragment.java
new file mode 100644
index 0000000..c339541
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarIconBlacklistFragment.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.systemui.tuner;
+
+import android.annotation.Nullable;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
+import android.preference.PreferenceGroup;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.StatusBarIconController;
+
+public class StatusBarIconBlacklistFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.tuner_statusbar_icons);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ registerPrefs(getPreferenceScreen());
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ unregisterPrefs(getPreferenceScreen());
+ }
+
+ private void registerPrefs(PreferenceGroup group) {
+ TunerService tunerService = TunerService.get(getContext());
+ final int N = group.getPreferenceCount();
+ for (int i = 0; i < N; i++) {
+ Preference pref = group.getPreference(i);
+ if (pref instanceof StatusBarSwitch) {
+ tunerService.addTunable((TunerService.Tunable) pref, StatusBarIconController.ICON_BLACKLIST);
+ } else if (pref instanceof PreferenceGroup) {
+ registerPrefs((PreferenceGroup) pref);
+ }
+ }
+ }
+
+ private void unregisterPrefs(PreferenceGroup group) {
+ TunerService tunerService = TunerService.get(getContext());
+ final int N = group.getPreferenceCount();
+ for (int i = 0; i < N; i++) {
+ Preference pref = group.getPreference(i);
+ if (pref instanceof TunerService.Tunable) {
+ tunerService.removeTunable((TunerService.Tunable) pref);
+ } else if (pref instanceof PreferenceGroup) {
+ registerPrefs((PreferenceGroup) pref);
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
index c84f618..401fb0e 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java
@@ -16,7 +16,9 @@
package com.android.systemui.tuner;
import android.app.Activity;
+import android.app.Fragment;
import android.os.Bundle;
+import android.view.MenuItem;
public class TunerActivity extends Activity {
@@ -27,4 +29,43 @@ public class TunerActivity extends Activity {
.commit();
}
+ /**
+ * Base class for direct entry points into
+ * tuner fragments
+ */
+ private static abstract class FragmentTunerActivityBase extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ getFragmentManager().beginTransaction().replace(android.R.id.content,
+ getFragment()).commit();
+ }
+
+ protected abstract Fragment getFragment();
+
+ @Override
+ public final boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ public static final class DemoModeActivity extends FragmentTunerActivityBase {
+ @Override
+ protected Fragment getFragment() {
+ return new DemoModeFragment();
+ }
+ }
+
+ public static final class StatusBarIconActivity extends FragmentTunerActivityBase {
+ @Override
+ protected Fragment getFragment() {
+ return new StatusBarIconBlacklistFragment();
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java
index 71b5de5..0bc663b 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java
@@ -15,8 +15,6 @@
*/
package com.android.systemui.tuner;
-import static com.android.systemui.BatteryMeterView.SHOW_PERCENT_SETTING;
-
import android.app.AlertDialog;
import android.app.FragmentTransaction;
import android.content.DialogInterface;
@@ -46,18 +44,13 @@ public class TunerFragment extends PreferenceFragment {
private static final String TAG = "TunerFragment";
- private static final String KEY_QS_TUNER = "qs_tuner";
+ private static final String KEY_STATUSBAR_BLACKLIST = "statusbar_icon_blacklist";
private static final String KEY_DEMO_MODE = "demo_mode";
- private static final String KEY_BATTERY_PCT = "battery_pct";
public static final String SETTING_SEEN_TUNER_WARNING = "seen_tuner_warning";
private static final int MENU_REMOVE = Menu.FIRST + 1;
- private final SettingObserver mSettingObserver = new SettingObserver();
-
- private SwitchPreference mBatteryPct;
-
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -65,11 +58,12 @@ public class TunerFragment extends PreferenceFragment {
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
setHasOptionsMenu(true);
- findPreference(KEY_QS_TUNER).setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ findPreference(KEY_STATUSBAR_BLACKLIST).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.replace(android.R.id.content, new QsTuner(), "QsTuner");
+ ft.replace(android.R.id.content, new StatusBarIconBlacklistFragment(),
+ "StatusBarBlacklist");
ft.addToBackStack(null);
ft.commit();
return true;
@@ -85,7 +79,6 @@ public class TunerFragment extends PreferenceFragment {
return true;
}
});
- mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT);
if (Settings.Secure.getInt(getContext().getContentResolver(), SETTING_SEEN_TUNER_WARNING,
0) == 0) {
new AlertDialog.Builder(getContext())
@@ -104,9 +97,6 @@ public class TunerFragment extends PreferenceFragment {
@Override
public void onResume() {
super.onResume();
- updateBatteryPct();
- getContext().getContentResolver().registerContentObserver(
- System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver);
registerPrefs(getPreferenceScreen());
MetricsLogger.visibility(getContext(), MetricsLogger.TUNER, true);
@@ -115,7 +105,6 @@ public class TunerFragment extends PreferenceFragment {
@Override
public void onPause() {
super.onPause();
- getContext().getContentResolver().unregisterContentObserver(mSettingObserver);
unregisterPrefs(getPreferenceScreen());
MetricsLogger.visibility(getContext(), MetricsLogger.TUNER, false);
@@ -169,33 +158,4 @@ public class TunerFragment extends PreferenceFragment {
}
return super.onOptionsItemSelected(item);
}
-
- private void updateBatteryPct() {
- mBatteryPct.setOnPreferenceChangeListener(null);
- mBatteryPct.setChecked(System.getInt(getContext().getContentResolver(),
- SHOW_PERCENT_SETTING, 0) != 0);
- mBatteryPct.setOnPreferenceChangeListener(mBatteryPctChange);
- }
-
- private final class SettingObserver extends ContentObserver {
- public SettingObserver() {
- super(new Handler());
- }
-
- @Override
- public void onChange(boolean selfChange, Uri uri, int userId) {
- super.onChange(selfChange, uri, userId);
- updateBatteryPct();
- }
- }
-
- private final OnPreferenceChangeListener mBatteryPctChange = new OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- final boolean v = (Boolean) newValue;
- MetricsLogger.action(getContext(), MetricsLogger.TUNER_BATTERY_PERCENTAGE, v);
- System.putInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, v ? 1 : 0);
- return true;
- }
- };
}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java
index 50234b2..3e7477c 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java
@@ -31,6 +31,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
+import android.text.TextUtils;
import android.util.ArrayMap;
import com.android.systemui.BatteryMeterView;
@@ -40,6 +41,7 @@ import com.android.systemui.SystemUI;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.statusbar.phone.SystemUIDialog;
+import cyanogenmod.providers.CMSettings;
import java.util.ArrayList;
import java.util.HashMap;
@@ -84,17 +86,31 @@ public class TunerService extends SystemUI {
}
private void addTunable(Tunable tunable, String key) {
+ addTunableByProvider(tunable, key, false);
+ }
+
+ public void addTunableByProvider(Tunable tunable, String key, boolean cm) {
if (!mTunableLookup.containsKey(key)) {
mTunableLookup.put(key, new ArrayList<Tunable>());
}
mTunableLookup.get(key).add(tunable);
- Uri uri = Settings.Secure.getUriFor(key);
+ Uri uri;
+ if (!cm) {
+ uri = Settings.Secure.getUriFor(key);
+ } else {
+ uri = CMSettings.Secure.getUriFor(key);
+ }
if (!mListeningUris.containsKey(uri)) {
mListeningUris.put(uri, key);
mContentResolver.registerContentObserver(uri, false, mObserver, mCurrentUser);
}
// Send the first state.
- String value = Settings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ String value;
+ if (cm) {
+ value = CMSettings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ } else {
+ value = Settings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ }
tunable.onTuningChanged(key, value);
}
@@ -116,7 +132,18 @@ public class TunerService extends SystemUI {
public void reloadSetting(Uri uri) {
String key = mListeningUris.get(uri);
- String value = Settings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+
+ // Handle possible null keys
+ if (TextUtils.isEmpty(key)) {
+ return;
+ }
+
+ String value;
+ if (uri.getAuthority().equals(CMSettings.AUTHORITY)) {
+ value = CMSettings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ } else {
+ value = Settings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ }
for (Tunable tunable : mTunableLookup.get(key)) {
tunable.onTuningChanged(key, value);
}
@@ -124,8 +151,14 @@ public class TunerService extends SystemUI {
private void reloadAll() {
for (String key : mTunableLookup.keySet()) {
- String value = Settings.Secure.getStringForUser(mContentResolver, key,
- mCurrentUser);
+ String value;
+ Uri uri = CMSettings.Secure.getUriFor(key);
+ if (uri.getAuthority() != null && uri.getAuthority().equals(CMSettings.AUTHORITY)) {
+ value = CMSettings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
+ } else {
+ value = Settings.Secure.getStringForUser(mContentResolver, key,
+ mCurrentUser);
+ }
for (Tunable tunable : mTunableLookup.get(key)) {
tunable.onTuningChanged(key, value);
}
@@ -135,13 +168,17 @@ public class TunerService extends SystemUI {
public void clearAll() {
// A couple special cases.
Settings.Global.putString(mContentResolver, DemoMode.DEMO_MODE_ALLOWED, null);
- Settings.System.putString(mContentResolver, BatteryMeterView.SHOW_PERCENT_SETTING, null);
Intent intent = new Intent(DemoMode.ACTION_DEMO);
intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_EXIT);
mContext.sendBroadcast(intent);
for (String key : mTunableLookup.keySet()) {
- Settings.Secure.putString(mContentResolver, key, null);
+ Uri uri = CMSettings.Secure.getUriFor(key);
+ if (uri.getAuthority() != null && uri.getAuthority().equals(CMSettings.AUTHORITY)) {
+ CMSettings.Secure.putString(mContentResolver, key, null);
+ } else {
+ Settings.Secure.putString(mContentResolver, key, null);
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
index 180d918..baa5321 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
@@ -256,6 +256,11 @@ public class StorageNotification extends SystemUI {
}
private void onPublicVolumeStateChangedInternal(VolumeInfo vol) {
+ // Do not notify for volumes on non-removable disks
+ if (vol.disk.isNonRemovable()) {
+ return;
+ }
+
Log.d(TAG, "Notifying about public volume: " + vol.toString());
final Notification notif;
@@ -322,7 +327,7 @@ public class StorageNotification extends SystemUI {
// Don't annoy when user dismissed in past. (But make sure the disk is adoptable; we
// used to allow snoozing non-adoptable disks too.)
- if (rec.isSnoozed() && disk.isAdoptable()) {
+ if (rec == null || (rec.isSnoozed() && disk.isAdoptable())) {
return null;
}
@@ -359,6 +364,11 @@ public class StorageNotification extends SystemUI {
.setContentIntent(browseIntent)
.setCategory(Notification.CATEGORY_SYSTEM)
.setPriority(Notification.PRIORITY_LOW);
+ // USB disks notification can be persistent
+ if (disk.isUsb()) {
+ builder.setOngoing(mContext.getResources().getBoolean(
+ R.bool.config_persistUsbDriveNotification));
+ }
// Non-adoptable disks can't be snoozed.
if (disk.isAdoptable()) {
builder.setDeleteIntent(buildSnoozeIntent(vol.getFsUuid()));
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index e9f1095..9fda531 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -31,6 +31,7 @@ import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.ColorDrawable;
@@ -42,6 +43,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
+import android.provider.Settings;
import android.provider.Settings.Global;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -104,7 +106,6 @@ public class VolumeDialog {
private final SpTexts mSpTexts;
private final SparseBooleanArray mDynamic = new SparseBooleanArray();
private final KeyguardManager mKeyguard;
- private final AudioManager mAudioManager;
private final int mExpandButtonAnimationDuration;
private final ZenFooter mZenFooter;
private final LayoutTransition mLayoutTransition;
@@ -128,15 +129,15 @@ public class VolumeDialog {
private boolean mPendingStateChanged;
private boolean mPendingRecheckAll;
private long mCollapseTime;
+ private int mLastActiveStream;
public VolumeDialog(Context context, int windowType, VolumeDialogController controller,
- ZenModeController zenModeController, Callback callback) {
+ ZenModeController zenModeController, Callback callback) {
mContext = context;
mController = controller;
mCallback = callback;
mSpTexts = new SpTexts(mContext);
mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
- mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mDialog = new CustomDialog(mContext);
@@ -163,7 +164,7 @@ public class VolumeDialog {
window.setAttributes(lp);
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
- mActiveSliderTint = loadColorStateList(R.color.system_accent_color);
+ mActiveSliderTint = loadColorStateList(R.color.volume_slider_active);
mInactiveSliderTint = loadColorStateList(R.color.volume_slider_inactive);
mDialog.setContentView(R.layout.volume_dialog);
mDialogView = (ViewGroup) mDialog.findViewById(R.id.volume_dialog);
@@ -177,19 +178,19 @@ public class VolumeDialog {
mDialogContentView.setLayoutTransition(mLayoutTransition);
mMotion = new VolumeDialogMotion(mDialog, mDialogView, mDialogContentView, mExpandButton,
new VolumeDialogMotion.Callback() {
- @Override
- public void onAnimatingChanged(boolean animating) {
- if (animating) return;
- if (mPendingStateChanged) {
- mHandler.sendEmptyMessage(H.STATE_CHANGED);
- mPendingStateChanged = false;
- }
- if (mPendingRecheckAll) {
- mHandler.sendEmptyMessage(H.RECHECK_ALL);
- mPendingRecheckAll = false;
- }
- }
- });
+ @Override
+ public void onAnimatingChanged(boolean animating) {
+ if (animating) return;
+ if (mPendingStateChanged) {
+ mHandler.sendEmptyMessage(H.STATE_CHANGED);
+ mPendingStateChanged = false;
+ }
+ if (mPendingRecheckAll) {
+ mHandler.sendEmptyMessage(H.RECHECK_ALL);
+ mPendingRecheckAll = false;
+ }
+ }
+ });
addRow(AudioManager.STREAM_RING,
R.drawable.ic_volume_ringer, R.drawable.ic_volume_ringer_mute, true);
@@ -272,11 +273,15 @@ public class VolumeDialog {
row.settingsButton.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom,
- int oldLeft, int oldTop, int oldRight, int oldBottom) {
- final boolean moved = oldLeft != left || oldTop != top;
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ final boolean moved = mLastActiveStream != mActiveStream ||
+ oldLeft != left || oldTop != top;
if (D.BUG) Log.d(TAG, "onLayoutChange moved=" + moved
+ " old=" + new Rect(oldLeft, oldTop, oldRight, oldBottom).toShortString()
- + " new=" + new Rect(left,top,right,bottom).toShortString());
+ + "," + mLastActiveStream
+ + " new=" + new Rect(left,top,right,bottom).toShortString()
+ + "," + mActiveStream);
+ mLastActiveStream = mActiveStream;
if (moved) {
for (int i = 0; i < mDialogContentView.getChildCount(); i++) {
final View c = mDialogContentView.getChildAt(i);
@@ -362,6 +367,8 @@ public class VolumeDialog {
row.header = (TextView) row.view.findViewById(R.id.volume_row_header);
mSpTexts.add(row.header);
row.slider = (SeekBar) row.view.findViewById(R.id.volume_row_slider);
+ row.slider.setProgressTintMode(PorterDuff.Mode.SRC_ATOP);
+ row.slider.setThumbTintMode(PorterDuff.Mode.SRC_ATOP);
row.slider.setOnSeekBarChangeListener(new VolumeSeekBarChangeListener(row));
// forward events above the slider into the slider
@@ -597,13 +604,17 @@ public class VolumeDialog {
final VolumeRow row = mRows.get(i);
if (row.ss == null || !row.ss.dynamic) continue;
if (!mDynamic.get(row.stream)) {
- mRows.remove(i);
- mDialogContentView.removeView(row.view);
- mDialogContentView.removeView(row.space);
+ removeRow(row);
}
}
}
+ private void removeRow(VolumeRow volumeRow) {
+ mRows.remove(volumeRow);
+ mDialogContentView.removeView(volumeRow.view);
+ mDialogContentView.removeView(volumeRow.space);
+ }
+
private void onStateChangedH(State state) {
final boolean animating = mMotion.isAnimating();
if (D.BUG) Log.d(TAG, "onStateChangedH animating=" + animating);
@@ -624,6 +635,8 @@ public class VolumeDialog {
}
}
+ updateNotificationRowH();
+
if (mActiveStream != state.activeStream) {
mActiveStream = state.activeStream;
updateRowsH();
@@ -635,11 +648,23 @@ public class VolumeDialog {
updateFooterH();
}
+ private void updateNotificationRowH() {
+ VolumeRow notificationRow = findRow(AudioManager.STREAM_NOTIFICATION);
+ if (notificationRow != null) {
+ if (mState.linkedNotification) {
+ removeRow(notificationRow);
+ }
+ } else if (!mState.linkedNotification) {
+ addRow(AudioManager.STREAM_NOTIFICATION,
+ R.drawable.ic_volume_notification, R.drawable.ic_volume_notification_mute,
+ true);
+ }
+ }
+
private void updateFooterH() {
if (D.BUG) Log.d(TAG, "updateFooterH");
final boolean wasVisible = mZenFooter.getVisibility() == View.VISIBLE;
- final boolean visible = mState.zenMode != Global.ZEN_MODE_OFF
- && mAudioManager.isStreamAffectedByRingerMode(mActiveStream);
+ final boolean visible = mState.zenMode != Global.ZEN_MODE_OFF;
if (wasVisible != visible && !visible) {
prepareForCollapse();
}
@@ -663,8 +688,9 @@ public class VolumeDialog {
final boolean isSystemStream = row.stream == AudioManager.STREAM_SYSTEM;
final boolean isAlarmStream = row.stream == AudioManager.STREAM_ALARM;
final boolean isMusicStream = row.stream == AudioManager.STREAM_MUSIC;
- final boolean isRingVibrate = isRingStream
- && mState.ringerModeInternal == AudioManager.RINGER_MODE_VIBRATE;
+ final boolean isNotificationStream = row.stream == AudioManager.STREAM_NOTIFICATION;
+ final boolean isVibrate = mState.ringerModeInternal == AudioManager.RINGER_MODE_VIBRATE;
+ final boolean isRingVibrate = isRingStream && isVibrate;
final boolean isRingSilent = isRingStream
&& mState.ringerModeInternal == AudioManager.RINGER_MODE_SILENT;
final boolean isZenAlarms = mState.zenMode == Global.ZEN_MODE_ALARMS;
@@ -672,8 +698,9 @@ public class VolumeDialog {
final boolean isZenPriority = mState.zenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
final boolean isRingZenNone = (isRingStream || isSystemStream) && isZenNone;
final boolean isRingLimited = isRingStream && isZenPriority;
- final boolean zenMuted = isZenAlarms ? (isRingStream || isSystemStream)
- : isZenNone ? (isRingStream || isSystemStream || isAlarmStream || isMusicStream)
+ final boolean zenMuted = isZenAlarms ? (isRingStream || isSystemStream || isNotificationStream)
+ : isZenNone ? (isRingStream || isSystemStream || isAlarmStream || isMusicStream || isNotificationStream)
+ : isVibrate ? (isNotificationStream)
: false;
// update slider max
@@ -708,12 +735,12 @@ public class VolumeDialog {
row.icon.setAlpha(iconEnabled ? 1 : 0.5f);
final int iconRes =
isRingVibrate ? R.drawable.ic_volume_ringer_vibrate
- : isRingSilent || zenMuted ? row.cachedIconRes
- : ss.routedToBluetooth ?
+ : isRingSilent || zenMuted ? row.cachedIconRes
+ : ss.routedToBluetooth ?
(ss.muted ? R.drawable.ic_volume_media_bt_mute
: R.drawable.ic_volume_media_bt)
- : mAutomute && ss.level == 0 ? row.iconMuteRes
- : (ss.muted ? row.iconMuteRes : row.iconRes);
+ : mAutomute && ss.level == 0 ? row.iconMuteRes
+ : (ss.muted ? row.iconMuteRes : row.iconRes);
if (iconRes != row.cachedIconRes) {
if (row.cachedIconRes != 0 && isRingVibrate) {
mController.vibrate();
@@ -723,11 +750,11 @@ public class VolumeDialog {
}
row.iconState =
iconRes == R.drawable.ic_volume_ringer_vibrate ? Events.ICON_STATE_VIBRATE
- : (iconRes == R.drawable.ic_volume_media_bt_mute || iconRes == row.iconMuteRes)
+ : (iconRes == R.drawable.ic_volume_media_bt_mute || iconRes == row.iconMuteRes)
? Events.ICON_STATE_MUTE
- : (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes)
+ : (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes)
? Events.ICON_STATE_UNMUTE
- : Events.ICON_STATE_UNKNOWN;
+ : Events.ICON_STATE_UNKNOWN;
row.icon.setContentDescription(ss.name);
// update slider
@@ -934,6 +961,12 @@ public class VolumeDialog {
}
};
+ public void cleanup() {
+ mController.removeCallback(mControllerCallbackH);
+ mZenFooter.cleanup();
+ mAccessibility.cleanup();
+ }
+
private final class H extends Handler {
private static final int SHOW = 1;
private static final int DISMISS = 2;
@@ -1056,36 +1089,21 @@ public class VolumeDialog {
public void init() {
mMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
- mDialogView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
- @Override
- public void onViewDetachedFromWindow(View v) {
- if (D.BUG) Log.d(TAG, "onViewDetachedFromWindow");
- // noop
- }
-
- @Override
- public void onViewAttachedToWindow(View v) {
- if (D.BUG) Log.d(TAG, "onViewAttachedToWindow");
- updateFeedbackEnabled();
- }
- });
- mDialogView.setAccessibilityDelegate(this);
- mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
- @Override
- public void onAccessibilityStateChanged(boolean enabled) {
- updateFeedbackEnabled();
- }
- });
+ mDialogView.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
updateFeedbackEnabled();
}
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
- AccessibilityEvent event) {
+ AccessibilityEvent event) {
rescheduleTimeoutH();
return super.onRequestSendAccessibilityEvent(host, child, event);
}
+ public void cleanup() {
+ mDialogView.removeOnAttachStateChangeListener(mOnAttachStateChangeListener);
+ }
+
private void updateFeedbackEnabled() {
mFeedbackEnabled = computeFeedbackEnabled();
}
@@ -1101,6 +1119,21 @@ public class VolumeDialog {
}
return false;
}
+
+ private OnAttachStateChangeListener mOnAttachStateChangeListener =
+ new OnAttachStateChangeListener() {
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ if (D.BUG) Log.d(TAG, "onViewDetachedFromWindow");
+ // noop
+ }
+
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ if (D.BUG) Log.d(TAG, "onViewAttachedToWindow");
+ updateFeedbackEnabled();
+ }
+ };
}
private static class VolumeRow {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
index 1083f40..742b18b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
@@ -43,7 +43,7 @@ public class VolumeDialogComponent implements VolumeComponent {
private final Context mContext;
private final VolumeDialogController mController;
private final ZenModeController mZenModeController;
- private final VolumeDialog mDialog;
+ private VolumeDialog mDialog;
private final VolumePolicy mVolumePolicy = new VolumePolicy(
true, // volumeDownToEnterSilent
true, // volumeUpToExitSilent
@@ -138,4 +138,11 @@ public class VolumeDialogComponent implements VolumeComponent {
}
};
+ public void recreateDialog() {
+ if (mDialog != null) mDialog.cleanup();
+
+ mDialog = new VolumeDialog(mContext, WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY,
+ mController, mZenModeController, mVolumeDialogCallback);
+ applyConfiguration();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
index 32d6805..9269c1c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
@@ -29,6 +29,7 @@ import android.database.ContentObserver;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.IVolumeController;
+import android.media.ToneGenerator;
import android.media.VolumePolicy;
import android.media.session.MediaController.PlaybackInfo;
import android.media.session.MediaSession.Token;
@@ -54,6 +55,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import cyanogenmod.providers.CMSettings;
+
/**
* Source of truth for all state / events related to the volume dialog. No presentation.
*
@@ -67,6 +70,9 @@ public class VolumeDialogController {
private static final int DYNAMIC_STREAM_START_INDEX = 100;
private static final int VIBRATE_HINT_DURATION = 50;
+ private static final int FREE_DELAY = 10000;
+ private static final int BEEP_DURATION = 150;
+
private static final int[] STREAMS = {
AudioSystem.STREAM_ALARM,
AudioSystem.STREAM_BLUETOOTH_SCO,
@@ -102,10 +108,13 @@ public class VolumeDialogController {
private VolumePolicy mVolumePolicy;
private boolean mShowDndTile = true;
+ private ToneGenerator mToneGenerators[];
+
public VolumeDialogController(Context context, ComponentName component) {
mContext = context.getApplicationContext();
Events.writeEvent(mContext, Events.EVENT_COLLECTION_STARTED);
mComponent = component;
+ mToneGenerators = new ToneGenerator[AudioSystem.getNumStreamTypes()];
mWorkerThread = new HandlerThread(VolumeDialogController.class.getSimpleName());
mWorkerThread.start();
mWorker = new W(mWorkerThread.getLooper());
@@ -289,6 +298,7 @@ public class VolumeDialogController {
final boolean fromKey = (flags & AudioManager.FLAG_FROM_KEY) != 0;
final boolean showVibrateHint = (flags & AudioManager.FLAG_SHOW_VIBRATE_HINT) != 0;
final boolean showSilentHint = (flags & AudioManager.FLAG_SHOW_SILENT_HINT) != 0;
+ final boolean playSound = (flags & AudioManager.FLAG_PLAY_SOUND) != 0;
boolean changed = false;
if (showUI) {
changed |= updateActiveStreamW(stream);
@@ -308,6 +318,19 @@ public class VolumeDialogController {
if (showSilentHint) {
mCallbacks.onShowSilentHint();
}
+ if (playSound) {
+ if ((flags & AudioManager.FLAG_PLAY_SOUND) != 0) {
+ mWorker.removeMessages(W.PLAY_SOUND);
+ mWorker.sendMessageDelayed(mWorker.obtainMessage(W.PLAY_SOUND, stream, flags),
+ AudioSystem.PLAY_SOUND_DELAY);
+ }
+
+ if ((flags & AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE) != 0) {
+ mWorker.removeMessages(W.PLAY_SOUND);
+ onStopSoundsW();
+ }
+
+ }
if (changed && fromKey) {
Events.writeEvent(mContext, Events.EVENT_KEY, stream, lastAudibleStreamVolume);
}
@@ -348,6 +371,7 @@ public class VolumeDialogController {
updateZenModeW();
updateEffectsSuppressorW(mNoMan.getEffectsSuppressor());
updateZenModeConfigW();
+ updateLinkNotificationConfigW();
mCallbacks.onStateChanged(mState);
}
@@ -400,6 +424,16 @@ public class VolumeDialogController {
return stream == AudioManager.STREAM_RING || stream == AudioManager.STREAM_NOTIFICATION;
}
+ private boolean updateLinkNotificationConfigW() {
+ boolean linkNotificationWithVolume = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.VOLUME_LINK_NOTIFICATION, 1) == 1;
+ if (mState.linkedNotification == linkNotificationWithVolume) {
+ return false;
+ }
+ mState.linkedNotification = linkNotificationWithVolume;
+ return true;
+ }
+
private boolean updateZenModeConfigW() {
final ZenModeConfig zenModeConfig = getZenModeConfig();
if (Objects.equals(mState.zenModeConfig, zenModeConfig)) return false;
@@ -556,6 +590,9 @@ public class VolumeDialogController {
private static final int NOTIFY_VISIBLE = 12;
private static final int USER_ACTIVITY = 13;
private static final int SHOW_SAFETY_WARNING = 14;
+ private static final int PLAY_SOUND = 15;
+ private static final int STOP_SOUNDS = 16;
+ private static final int FREE_RESOURCES = 17;
W(Looper looper) {
super(looper);
@@ -578,6 +615,9 @@ public class VolumeDialogController {
case NOTIFY_VISIBLE: onNotifyVisibleW(msg.arg1 != 0); break;
case USER_ACTIVITY: onUserActivityW(); break;
case SHOW_SAFETY_WARNING: onShowSafetyWarningW(msg.arg1); break;
+ case PLAY_SOUND: onPlaySoundW(msg.arg1, msg.arg2); break;
+ case STOP_SOUNDS: onStopSoundsW(); break;
+ case FREE_RESOURCES: onFreeResourcesW(); break;
}
}
}
@@ -707,6 +747,66 @@ public class VolumeDialogController {
}
+ protected void onPlaySoundW(int streamType, int flags) {
+
+ // If preference is no sound - just exit here
+ if (CMSettings.System.getInt(mContext.getContentResolver(),
+ CMSettings.System.VOLUME_ADJUST_SOUNDS_ENABLED, 1) == 0) {
+ return;
+ }
+
+ if (mWorker.hasMessages(W.STOP_SOUNDS)) {
+ mWorker.removeMessages(W.STOP_SOUNDS);
+ // Force stop right now
+ onStopSoundsW();
+ }
+
+ ToneGenerator toneGen = getOrCreateToneGeneratorW(streamType);
+ if (toneGen != null) {
+ toneGen.startTone(ToneGenerator.TONE_PROP_BEEP);
+ mWorker.sendMessageDelayed(mWorker.obtainMessage(W.STOP_SOUNDS), BEEP_DURATION);
+ }
+
+ mWorker.removeMessages(W.FREE_RESOURCES);
+ mWorker.sendMessageDelayed(mWorker.obtainMessage(W.FREE_RESOURCES), FREE_DELAY);
+ }
+
+ protected void onStopSoundsW() {
+ int numStreamTypes = AudioSystem.getNumStreamTypes();
+ for (int i = numStreamTypes - 1; i >= 0; i--) {
+ ToneGenerator toneGen = mToneGenerators[i];
+ if (toneGen != null) {
+ toneGen.stopTone();
+ }
+ }
+ }
+
+ private ToneGenerator getOrCreateToneGeneratorW(int streamType) {
+ if (mToneGenerators[streamType] == null) {
+ try {
+ mToneGenerators[streamType] = new ToneGenerator(streamType,
+ ToneGenerator.MAX_VOLUME);
+ } catch (RuntimeException e) {
+ if (false) {
+ Log.d(TAG, "ToneGenerator constructor failed with "
+ + "RuntimeException: " + e);
+ }
+ }
+ }
+ return mToneGenerators[streamType];
+ }
+
+ protected void onFreeResourcesW() {
+ synchronized (this) {
+ for (int i = mToneGenerators.length - 1; i >= 0; i--) {
+ if (mToneGenerators[i] != null) {
+ mToneGenerators[i].release();
+ }
+ mToneGenerators[i] = null;
+ }
+ }
+ }
+
private final class SettingObserver extends ContentObserver {
private final Uri SERVICE_URI = Settings.Secure.getUriFor(
Settings.Secure.VOLUME_CONTROLLER_SERVICE_COMPONENT);
@@ -714,6 +814,8 @@ public class VolumeDialogController {
Settings.Global.getUriFor(Settings.Global.ZEN_MODE);
private final Uri ZEN_MODE_CONFIG_URI =
Settings.Global.getUriFor(Settings.Global.ZEN_MODE_CONFIG_ETAG);
+ private final Uri VOLUME_LINK_NOTIFICATION_URI =
+ Settings.Secure.getUriFor(Settings.Secure.VOLUME_LINK_NOTIFICATION);
public SettingObserver(Handler handler) {
super(handler);
@@ -723,6 +825,8 @@ public class VolumeDialogController {
mContext.getContentResolver().registerContentObserver(SERVICE_URI, false, this);
mContext.getContentResolver().registerContentObserver(ZEN_MODE_URI, false, this);
mContext.getContentResolver().registerContentObserver(ZEN_MODE_CONFIG_URI, false, this);
+ mContext.getContentResolver().registerContentObserver(VOLUME_LINK_NOTIFICATION_URI,
+ false, this);
onChange(true, SERVICE_URI);
}
@@ -750,6 +854,9 @@ public class VolumeDialogController {
if (ZEN_MODE_CONFIG_URI.equals(uri)) {
changed = updateZenModeConfigW();
}
+ if (VOLUME_LINK_NOTIFICATION_URI.equals(uri)) {
+ changed = updateLinkNotificationConfigW();
+ }
if (changed) {
mCallbacks.onStateChanged(mState);
}
@@ -868,6 +975,13 @@ public class VolumeDialogController {
@Override
public void onRemoteVolumeChanged(Token token, int flags) {
+ // If an inactive session changed the remoteVolume, bail
+ // since we don't have any active streams to update
+ if (!mRemoteStreams.containsKey(token)) {
+ Log.i(TAG, "onRemoteVolumeChanged called on inactive" +
+ "stream. Ignoring");
+ return;
+ }
final int stream = mRemoteStreams.get(token);
final boolean showUI = (flags & AudioManager.FLAG_SHOW_UI) != 0;
boolean changed = updateActiveStreamW(stream);
@@ -947,6 +1061,7 @@ public class VolumeDialogController {
public String effectsSuppressorName;
public ZenModeConfig zenModeConfig;
public int activeStream = NO_ACTIVE_STREAM;
+ public boolean linkedNotification;
public State copy() {
final State rt = new State();
@@ -960,6 +1075,7 @@ public class VolumeDialogController {
rt.effectsSuppressorName = effectsSuppressorName;
if (zenModeConfig != null) rt.zenModeConfig = zenModeConfig.copy();
rt.activeStream = activeStream;
+ rt.linkedNotification = linkedNotification;
return rt;
}
@@ -989,6 +1105,7 @@ public class VolumeDialogController {
sep(sb, indent); sb.append("effectsSuppressorName:").append(effectsSuppressorName);
sep(sb, indent); sb.append("zenModeConfig:").append(zenModeConfig);
sep(sb, indent); sb.append("activeStream:").append(activeStream);
+ sep(sb, indent); sb.append("linkedNotification:").append(linkedNotification);
if (indent > 0) sep(sb, indent);
return sb.append('}').toString();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index 2688813..fa0de7d 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -27,6 +27,7 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
+import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.media.AudioManager;
import android.media.session.MediaSessionManager;
@@ -63,6 +64,8 @@ public class VolumeUI extends SystemUI {
private VolumeDialogComponent mVolumeComponent;
+ private Configuration mConfiguration;
+
@Override
public void start() {
mEnabled = mContext.getResources().getBoolean(R.bool.enable_volume_ui);
@@ -80,6 +83,7 @@ public class VolumeUI extends SystemUI {
mContext, Settings.Secure.VOLUME_CONTROLLER_SERVICE_COMPONENT,
new ServiceMonitorCallbacks());
mVolumeControllerService.start();
+ mConfiguration = new Configuration(mContext.getResources().getConfiguration());
}
private VolumeComponent getVolumeComponent() {
@@ -91,6 +95,20 @@ public class VolumeUI extends SystemUI {
super.onConfigurationChanged(newConfig);
if (!mEnabled) return;
getVolumeComponent().onConfigurationChanged(newConfig);
+
+ if (isThemeChange(newConfig)) {
+ mContext.recreateTheme();
+ mVolumeComponent.recreateDialog();
+ }
+ mConfiguration.setTo(newConfig);
+ }
+
+ private boolean isThemeChange(Configuration newConfig) {
+ if (mConfiguration != null) {
+ int changes = mConfiguration.updateFrom(newConfig);
+ return (changes & ActivityInfo.CONFIG_THEME_RESOURCE) != 0;
+ }
+ return false;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
index af7ee08..0fb80c0 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
@@ -69,17 +69,19 @@ public class ZenFooter extends LinearLayout {
mSpTexts.add(mEndNowButton);
}
+ private ZenModeController.Callback mZenModeCallback = new ZenModeController.Callback() {
+ @Override
+ public void onZenChanged(int zen) {
+ setZen(zen);
+ }
+ @Override
+ public void onConfigChanged(ZenModeConfig config) {
+ setConfig(config);
+ }
+ };
+
public void init(final ZenModeController controller) {
- controller.addCallback(new ZenModeController.Callback() {
- @Override
- public void onZenChanged(int zen) {
- setZen(zen);
- }
- @Override
- public void onConfigChanged(ZenModeConfig config) {
- setConfig(config);
- }
- });
+ controller.addCallback(mZenModeCallback);
mEndNowButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -142,4 +144,8 @@ public class ZenFooter extends LinearLayout {
mSpTexts.update();
}
+ public void cleanup() {
+ mController.removeCallback(mZenModeCallback);
+ }
+
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
index 07ec843..ddf623a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
@@ -70,9 +70,7 @@ public class ZenModePanel extends LinearLayout {
private static final int SECONDS_MS = 1000;
private static final int MINUTES_MS = 60 * SECONDS_MS;
- private static final int[] MINUTE_BUCKETS = DEBUG
- ? new int[] { 0, 1, 2, 5, 15, 30, 45, 60, 120, 180, 240, 480 }
- : ZenModeConfig.MINUTE_BUCKETS;
+ private static final int[] MINUTE_BUCKETS = ZenModeConfig.MINUTE_BUCKETS;
private static final int MIN_BUCKET_MINUTES = MINUTE_BUCKETS[0];
private static final int MAX_BUCKET_MINUTES = MINUTE_BUCKETS[MINUTE_BUCKETS.length - 1];
private static final int DEFAULT_BUCKET_INDEX = Arrays.binarySearch(MINUTE_BUCKETS, 60);
@@ -421,8 +419,13 @@ public class ZenModePanel extends LinearLayout {
mZenIntroductionCustomize.setVisibility(zenImportant ? VISIBLE : GONE);
}
final String warning = computeAlarmWarningText(zenNone);
- mZenAlarmWarning.setVisibility(warning != null ? VISIBLE : GONE);
+ final int oldVis = mZenAlarmWarning.getVisibility();
+ final int newVis = warning != null ? VISIBLE : GONE;
+ mZenAlarmWarning.setVisibility(newVis);
mZenAlarmWarning.setText(warning);
+ if (newVis != oldVis) {
+ requestLayout();
+ }
}
private String computeAlarmWarningText(boolean zenNone) {
@@ -603,13 +606,6 @@ public class ZenModePanel extends LinearLayout {
if (DEBUG) Log.d(mTag, "bind i=" + mZenConditions.indexOfChild(row) + " first=" + first
+ " condition=" + conditionId);
tag.rb.setEnabled(enabled);
- final boolean checked = (mSessionExitCondition != null
- || mAttachedZen != Global.ZEN_MODE_OFF)
- && (sameConditionId(mSessionExitCondition, tag.condition));
- if (checked != tag.rb.isChecked()) {
- if (DEBUG) Log.d(mTag, "bind checked=" + checked + " condition=" + conditionId);
- tag.rb.setChecked(checked);
- }
tag.rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
diff --git a/packages/SystemUI/src/com/viewpagerindicator/CirclePageIndicator.java b/packages/SystemUI/src/com/viewpagerindicator/CirclePageIndicator.java
new file mode 100644
index 0000000..4286983
--- /dev/null
+++ b/packages/SystemUI/src/com/viewpagerindicator/CirclePageIndicator.java
@@ -0,0 +1,527 @@
+/*
+ * Copyright (C) 2011 Patrik Akerfeldt
+ * Copyright (C) 2011 Jake Wharton
+ *
+ * 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.viewpagerindicator;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.drawable.Drawable;
+import android.support.v4.view.MotionEventCompat;
+import android.support.v4.view.ViewConfigurationCompat;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import com.android.systemui.R;
+
+import static android.graphics.Paint.ANTI_ALIAS_FLAG;
+import static android.widget.LinearLayout.HORIZONTAL;
+import static android.widget.LinearLayout.VERTICAL;
+
+/**
+ * Draws circles (one for each view). The current view position is filled and
+ * others are only stroked.
+ */
+public class CirclePageIndicator extends View implements PageIndicator {
+ private static final int INVALID_POINTER = -1;
+
+ private float mRadius;
+ private final Paint mPaintPageFill = new Paint(ANTI_ALIAS_FLAG);
+ private final Paint mPaintStroke = new Paint(ANTI_ALIAS_FLAG);
+ private final Paint mPaintFill = new Paint(ANTI_ALIAS_FLAG);
+ private ViewPager mViewPager;
+ private ViewPager.OnPageChangeListener mListener;
+ private int mCurrentPage;
+ private int mSnapPage;
+ private float mPageOffset;
+ private int mScrollState;
+ private int mOrientation;
+ private boolean mCentered;
+ private boolean mSnap;
+
+ private int mTouchSlop;
+ private float mLastMotionX = -1;
+ private int mActivePointerId = INVALID_POINTER;
+ private boolean mIsDragging;
+
+ private Bitmap mSettingsIcon;
+ private boolean mEditing;
+
+ public CirclePageIndicator(Context context) {
+ this(context, null);
+ }
+
+ public CirclePageIndicator(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CirclePageIndicator(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ if (isInEditMode()) return;
+
+ //Load defaults from resources
+ final Resources res = getResources();
+ final int defaultPageColor = res.getColor(R.color.default_circle_indicator_page_color);
+ final int defaultFillColor = res.getColor(R.color.default_circle_indicator_fill_color);
+ final int defaultOrientation = res.getInteger(R.integer.default_circle_indicator_orientation);
+ final int defaultStrokeColor = res.getColor(R.color.default_circle_indicator_stroke_color);
+ final float defaultStrokeWidth = res.getDimension(R.dimen.default_circle_indicator_stroke_width);
+ final float defaultRadius = res.getDimension(R.dimen.default_circle_indicator_radius);
+ final boolean defaultCentered = res.getBoolean(R.bool.default_circle_indicator_centered);
+ final boolean defaultSnap = res.getBoolean(R.bool.default_circle_indicator_snap);
+
+ //Retrieve styles attributes
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CirclePageIndicator, defStyle, 0);
+
+ mCentered = a.getBoolean(R.styleable.CirclePageIndicator_centered, defaultCentered);
+ mOrientation = a.getInt(R.styleable.CirclePageIndicator_android_orientation, defaultOrientation);
+ mPaintPageFill.setStyle(Style.FILL);
+ mPaintPageFill.setColor(a.getColor(R.styleable.CirclePageIndicator_pageColor, defaultPageColor));
+ mPaintStroke.setStyle(Style.STROKE);
+ mPaintStroke.setColor(a.getColor(R.styleable.CirclePageIndicator_strokeColor, defaultStrokeColor));
+ mPaintStroke.setStrokeWidth(a.getDimension(R.styleable.CirclePageIndicator_strokeWidth, defaultStrokeWidth));
+ mPaintFill.setStyle(Style.FILL);
+ mPaintFill.setColor(a.getColor(R.styleable.CirclePageIndicator_indicatorFillColor, defaultFillColor));
+ mRadius = a.getDimension(R.styleable.CirclePageIndicator_radius, defaultRadius);
+ mSnap = a.getBoolean(R.styleable.CirclePageIndicator_snap, defaultSnap);
+
+ Drawable background = a.getDrawable(R.styleable.CirclePageIndicator_android_background);
+ if (background != null) {
+ setBackgroundDrawable(background);
+ }
+
+ a.recycle();
+
+ final ViewConfiguration configuration = ViewConfiguration.get(context);
+ mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);
+
+ mSettingsIcon = BitmapFactory.decodeResource(res, R.drawable.ic_mini_settings);
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return false;
+ }
+
+ public void setCentered(boolean centered) {
+ mCentered = centered;
+ invalidate();
+ }
+
+ public boolean isCentered() {
+ return mCentered;
+ }
+
+ public void setPageColor(int pageColor) {
+ mPaintPageFill.setColor(pageColor);
+ invalidate();
+ }
+
+ public int getPageColor() {
+ return mPaintPageFill.getColor();
+ }
+
+ public void setFillColor(int fillColor) {
+ mPaintFill.setColor(fillColor);
+ invalidate();
+ }
+
+ public int getFillColor() {
+ return mPaintFill.getColor();
+ }
+
+ public void setOrientation(int orientation) {
+ switch (orientation) {
+ case HORIZONTAL:
+ case VERTICAL:
+ mOrientation = orientation;
+ requestLayout();
+ break;
+
+ default:
+ throw new IllegalArgumentException("Orientation must be either HORIZONTAL or VERTICAL.");
+ }
+ }
+
+ public int getOrientation() {
+ return mOrientation;
+ }
+
+ public void setStrokeColor(int strokeColor) {
+ mPaintStroke.setColor(strokeColor);
+ invalidate();
+ }
+
+ public int getStrokeColor() {
+ return mPaintStroke.getColor();
+ }
+
+ public void setStrokeWidth(float strokeWidth) {
+ mPaintStroke.setStrokeWidth(strokeWidth);
+ invalidate();
+ }
+
+ public float getStrokeWidth() {
+ return mPaintStroke.getStrokeWidth();
+ }
+
+ public void setRadius(float radius) {
+ mRadius = radius;
+ invalidate();
+ }
+
+ public float getRadius() {
+ return mRadius;
+ }
+
+ public void setSnap(boolean snap) {
+ mSnap = snap;
+ invalidate();
+ }
+
+ public boolean isSnap() {
+ return mSnap;
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ if (mViewPager == null) {
+ return;
+ }
+ final int count = mViewPager.getAdapter().getCount();
+ if (count == 0) {
+ return;
+ }
+
+ if (mCurrentPage >= count) {
+ setCurrentItem(count - 1);
+ return;
+ }
+
+ int longSize;
+ int longPaddingBefore;
+ int longPaddingAfter;
+ int shortPaddingBefore;
+ if (mOrientation == HORIZONTAL) {
+ longSize = getWidth();
+ longPaddingBefore = getPaddingLeft();
+ longPaddingAfter = getPaddingRight();
+ shortPaddingBefore = getPaddingTop();
+ } else {
+ longSize = getHeight();
+ longPaddingBefore = getPaddingTop();
+ longPaddingAfter = getPaddingBottom();
+ shortPaddingBefore = getPaddingLeft();
+ }
+
+ final float threeRadius = mRadius * 3;
+ final float shortOffset = shortPaddingBefore + mRadius;
+ float longOffset = longPaddingBefore + mRadius;
+ if (mCentered) {
+ longOffset += ((longSize - longPaddingBefore - longPaddingAfter) / 2.0f) - ((count * threeRadius) / 2.0f);
+ }
+
+ float dX;
+ float dY;
+
+ float pageFillRadius = mRadius;
+ if (mPaintStroke.getStrokeWidth() > 0) {
+ pageFillRadius -= mPaintStroke.getStrokeWidth() / 2.0f;
+ }
+
+ //Draw stroked circles
+ for (int iLoop = 0; iLoop < count; iLoop++) {
+ float drawLong = longOffset + (iLoop * threeRadius);
+ if (mOrientation == HORIZONTAL) {
+ dX = drawLong;
+ dY = shortOffset;
+ } else {
+ dX = shortOffset;
+ dY = drawLong;
+ }
+ // Only paint fill if not completely transparent
+ if (mPaintPageFill.getAlpha() > 0) {
+ if (mEditing && iLoop == 0) {
+ canvas.drawBitmap(mSettingsIcon,
+ (int) (dX - mRadius),
+ (int) (dY - mRadius),
+ mPaintPageFill);
+ } else {
+ canvas.drawCircle(dX, dY, (float) (pageFillRadius / 1.5f), mPaintPageFill);
+ }
+ }
+
+ // Only paint stroke if a stroke width was non-zero
+ if (pageFillRadius != mRadius) {
+ canvas.drawCircle(dX, dY, mRadius, mPaintStroke);
+ }
+ }
+
+ //Draw the filled circle according to the current scroll
+ float cx = (mSnap ? mSnapPage : mCurrentPage) * threeRadius;
+ if (!mSnap) {
+ cx += mPageOffset * threeRadius;
+ }
+ if (mOrientation == HORIZONTAL) {
+ dX = longOffset + cx;
+ dY = shortOffset;
+ } else {
+ dX = shortOffset;
+ dY = longOffset + cx;
+ }
+ canvas.drawCircle(dX, dY, mRadius, mPaintFill);
+ }
+
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (super.onTouchEvent(ev)) {
+ return true;
+ }
+ if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {
+ return false;
+ }
+
+ final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
+ mLastMotionX = ev.getX();
+ break;
+
+ case MotionEvent.ACTION_MOVE: {
+ final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ final float x = MotionEventCompat.getX(ev, activePointerIndex);
+ final float deltaX = x - mLastMotionX;
+
+ if (!mIsDragging) {
+ if (Math.abs(deltaX) > mTouchSlop) {
+ mIsDragging = true;
+ }
+ }
+
+ if (mIsDragging) {
+ mLastMotionX = x;
+ if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) {
+ mViewPager.fakeDragBy(deltaX);
+ }
+ }
+
+ break;
+ }
+
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP:
+ if (!mIsDragging) {
+ final int count = mViewPager.getAdapter().getCount();
+ final int width = getWidth();
+ final float halfWidth = width / 2f;
+ final float sixthWidth = width / 6f;
+
+ if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) {
+ if (action != MotionEvent.ACTION_CANCEL) {
+ mViewPager.setCurrentItem(mCurrentPage - 1);
+ }
+ return true;
+ } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) {
+ if (action != MotionEvent.ACTION_CANCEL) {
+ mViewPager.setCurrentItem(mCurrentPage + 1);
+ }
+ return true;
+ }
+ }
+
+ mIsDragging = false;
+ mActivePointerId = INVALID_POINTER;
+ if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();
+ break;
+
+ case MotionEventCompat.ACTION_POINTER_DOWN: {
+ final int index = MotionEventCompat.getActionIndex(ev);
+ mLastMotionX = MotionEventCompat.getX(ev, index);
+ mActivePointerId = MotionEventCompat.getPointerId(ev, index);
+ break;
+ }
+
+ case MotionEventCompat.ACTION_POINTER_UP:
+ final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+ final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
+ if (pointerId == mActivePointerId) {
+ final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
+ mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
+ }
+ mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId));
+ break;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void setViewPager(ViewPager view) {
+ if (mViewPager == view) {
+ return;
+ }
+ if (mViewPager != null) {
+ mViewPager.setOnPageChangeListener(null);
+ }
+ if (view.getAdapter() == null) {
+ throw new IllegalStateException("ViewPager does not have adapter instance.");
+ }
+ mViewPager = view;
+ mViewPager.setOnPageChangeListener(this);
+ invalidate();
+ }
+
+ @Override
+ public void setViewPager(ViewPager view, int initialPosition) {
+ setViewPager(view);
+ setCurrentItem(initialPosition);
+ }
+
+ @Override
+ public void setCurrentItem(int item) {
+ if (mViewPager == null) {
+ throw new IllegalStateException("ViewPager has not been bound.");
+ }
+ mViewPager.setCurrentItem(item);
+ mCurrentPage = item;
+ invalidate();
+ }
+
+ @Override
+ public void notifyDataSetChanged() {
+ invalidate();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ mScrollState = state;
+
+ if (mListener != null) {
+ mListener.onPageScrollStateChanged(state);
+ }
+ }
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ mCurrentPage = position;
+ mPageOffset = positionOffset;
+ invalidate();
+
+ if (mListener != null) {
+ mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ if (mSnap || mScrollState == ViewPager.SCROLL_STATE_IDLE) {
+ mCurrentPage = position;
+ mSnapPage = position;
+ invalidate();
+ }
+
+ if (mListener != null) {
+ mListener.onPageSelected(position);
+ }
+ }
+
+ @Override
+ public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {
+ mListener = listener;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see android.view.View#onMeasure(int, int)
+ */
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ if (mOrientation == HORIZONTAL) {
+ setMeasuredDimension(measureLong(widthMeasureSpec), measureShort(heightMeasureSpec));
+ } else {
+ setMeasuredDimension(measureShort(widthMeasureSpec), measureLong(heightMeasureSpec));
+ }
+ }
+
+ /**
+ * Determines the width of this view
+ *
+ * @param measureSpec
+ * A measureSpec packed into an int
+ * @return The width of the view, honoring constraints from measureSpec
+ */
+ private int measureLong(int measureSpec) {
+ int result;
+ int specMode = MeasureSpec.getMode(measureSpec);
+ int specSize = MeasureSpec.getSize(measureSpec);
+
+ if ((specMode == MeasureSpec.EXACTLY) || (mViewPager == null)) {
+ //We were told how big to be
+ result = specSize;
+ } else {
+ //Calculate the width according the views count
+ final int count = mViewPager.getAdapter().getCount();
+ result = (int)(getPaddingLeft() + getPaddingRight()
+ + (count * 2 * mRadius) + (count - 1) * mRadius + 1);
+ //Respect AT_MOST value if that was what is called for by measureSpec
+ if (specMode == MeasureSpec.AT_MOST) {
+ result = Math.min(result, specSize);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Determines the height of this view
+ *
+ * @param measureSpec
+ * A measureSpec packed into an int
+ * @return The height of the view, honoring constraints from measureSpec
+ */
+ private int measureShort(int measureSpec) {
+ int result;
+ int specMode = MeasureSpec.getMode(measureSpec);
+ int specSize = MeasureSpec.getSize(measureSpec);
+
+ if (specMode == MeasureSpec.EXACTLY) {
+ //We were told how big to be
+ result = specSize;
+ } else {
+ //Measure the height
+ result = (int)(2 * mRadius + getPaddingTop() + getPaddingBottom() + 1);
+ //Respect AT_MOST value if that was what is called for by measureSpec
+ if (specMode == MeasureSpec.AT_MOST) {
+ result = Math.min(result, specSize);
+ }
+ }
+ return result;
+ }
+
+ public void setEditing(boolean editing) {
+ mEditing = editing;
+ invalidate();
+ }
+}
diff --git a/packages/SystemUI/src/com/viewpagerindicator/PageIndicator.java b/packages/SystemUI/src/com/viewpagerindicator/PageIndicator.java
new file mode 100644
index 0000000..c08c00a
--- /dev/null
+++ b/packages/SystemUI/src/com/viewpagerindicator/PageIndicator.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2011 Patrik Akerfeldt
+ * Copyright (C) 2011 Jake Wharton
+ *
+ * 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.viewpagerindicator;
+
+import android.support.v4.view.ViewPager;
+
+/**
+ * A PageIndicator is responsible to show an visual indicator on the total views
+ * number and the current visible view.
+ */
+public interface PageIndicator extends ViewPager.OnPageChangeListener {
+ /**
+ * Bind the indicator to a ViewPager.
+ *
+ * @param view
+ */
+ void setViewPager(ViewPager view);
+
+ /**
+ * Bind the indicator to a ViewPager.
+ *
+ * @param view
+ * @param initialPosition
+ */
+ void setViewPager(ViewPager view, int initialPosition);
+
+ /**
+ * <p>Set the current page of both the ViewPager and indicator.</p>
+ *
+ * <p>This <strong>must</strong> be used if you need to set the page before
+ * the views are drawn on screen (e.g., default start page).</p>
+ *
+ * @param item
+ */
+ void setCurrentItem(int item);
+
+ /**
+ * Set a page change listener which will receive forwarded events.
+ *
+ * @param listener
+ */
+ void setOnPageChangeListener(ViewPager.OnPageChangeListener listener);
+
+ /**
+ * Notify the indicator that the fragment list has changed.
+ */
+ void notifyDataSetChanged();
+}
diff --git a/packages/SystemUI/tests/Android.mk b/packages/SystemUI/tests/Android.mk
index 6a7201c..25581e3 100644
--- a/packages/SystemUI/tests/Android.mk
+++ b/packages/SystemUI/tests/Android.mk
@@ -31,6 +31,11 @@ LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
LOCAL_PACKAGE_NAME := SystemUITests
LOCAL_STATIC_JAVA_LIBRARIES := mockito-target Keyguard
+LOCAL_STATIC_JAVA_LIBRARIES += org.cyanogenmod.platform.internal \
+ android-support-v7-palette \
+ android-support-v4 \
+ uicommon
+
# sign this with platform cert, so this test is allowed to inject key events into
# UI it doesn't own. This is necessary to allow screenshots to be taken
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
index 00b8de2..7df96a9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
@@ -103,9 +103,10 @@ public class CallbackHandlerTest extends AndroidTestCase {
int type = R.drawable.stat_sys_data_fully_connected_1x;
int qsType = R.drawable.ic_qs_signal_1x;
boolean wide = true;
+ boolean showSeparateRoamIndicator = false;
int subId = 5;
mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, typeDescription,
- description, wide, subId);
+ description, wide, showSeparateRoamIndicator, subId);
waitForCallbacks();
ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
@@ -117,11 +118,13 @@ public class CallbackHandlerTest extends AndroidTestCase {
ArgumentCaptor<String> typeContentArg = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<Boolean> wideArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Boolean> showSeparateRoamIndicatorArg =
+ ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Integer> subIdArg = ArgumentCaptor.forClass(Integer.class);
Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(),
qsArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(), inArg.capture(),
outArg.capture(), typeContentArg.capture(), descArg.capture(), wideArg.capture(),
- subIdArg.capture());
+ showSeparateRoamIndicatorArg.capture(), subIdArg.capture());
assertEquals(status, statusArg.getValue());
assertEquals(qs, qsArg.getValue());
assertEquals(type, (int) typeIconArg.getValue());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 30c08cd..5e87ea1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -59,8 +59,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
protected NetworkControllerImpl mNetworkController;
protected MobileSignalController mMobileSignalController;
protected PhoneStateListener mPhoneStateListener;
- private SignalStrength mSignalStrength;
- private ServiceState mServiceState;
+ protected SignalStrength mSignalStrength;
+ protected ServiceState mServiceState;
protected ConnectivityManager mMockCm;
protected WifiManager mMockWm;
protected SubscriptionManager mMockSm;
@@ -234,7 +234,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
mPhoneStateListener.onSignalStrengthsChanged(mSignalStrength);
}
- private void updateServiceState() {
+ protected void updateServiceState() {
Log.d(TAG, "Sending Service State: " + mServiceState);
mPhoneStateListener.onServiceStateChanged(mServiceState);
}
@@ -245,6 +245,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
}
public void updateDataConnectionState(int dataState, int dataNetType) {
+ when(mServiceState.getDataNetworkType()).thenReturn(dataNetType);
mPhoneStateListener.onDataConnectionStateChanged(dataState, dataNetType);
}
@@ -279,6 +280,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
+ ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(Integer.class).capture());
IconState iconState = iconArg.getValue();
assertEquals("Visibility in, quick settings", visible, iconState.visible);
@@ -305,6 +307,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
+ ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(Integer.class).capture());
IconState iconState = iconArg.getValue();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index 0ec8802..3e0da3c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -114,6 +114,21 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
TelephonyIcons.QS_DATA_4G);
}
+ public void testDataChangeWithoutConnectionState() {
+ setupDefaultSignal();
+ updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
+ TelephonyManager.NETWORK_TYPE_LTE);
+
+ verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */],
+ TelephonyIcons.QS_DATA_LTE);
+
+ Mockito.when(mServiceState.getDataNetworkType())
+ .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA);
+ updateServiceState();
+ verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */],
+ TelephonyIcons.QS_DATA_H);
+ }
+
public void testDataActivity() {
setupDefaultSignal();
diff --git a/packages/VpnDialogs/res/values-as-rIN/strings.xml b/packages/VpnDialogs/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-as-rIN/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-ast-rES/strings.xml b/packages/VpnDialogs/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..7b17f14
--- /dev/null
+++ b/packages/VpnDialogs/res/values-ast-rES/strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <string name="prompt">Solicitú de conexón</string>
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <string name="warning"><xliff:g id="app">%s</xliff:g> quier facer una conexón VPN
+ que permite monitorear el tráficu. Aceuta namái si confíes na fonte.
+ <![CDATA[
+ <br />
+ <br />
+ <img src="vpn_icon" />
+ ]]> apaez arriba na pantalla cuando VPN ta activa.
+ </string>
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <string name="legacy_title">VPN coneutada</string>
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <string name="configure">Configurar</string>
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">Desconeutar</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="session">Sesión:</string>
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="duration">Duración:</string>
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <string name="data_transmitted">Unvióse:</string>
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <string name="data_received">Recibióse:</string>
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+ <string name="data_value_format">
+ <xliff:g id="number">%1$s</xliff:g> bytes /
+ <xliff:g id="number">%2$s</xliff:g> paquetes
+    </string>
+</resources>
diff --git a/packages/VpnDialogs/res/values-be/strings.xml b/packages/VpnDialogs/res/values-be/strings.xml
new file mode 100644
index 0000000..4903231
--- /dev/null
+++ b/packages/VpnDialogs/res/values-be/strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <string name="prompt">Запыт на злучэнне</string>
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <string name="warning"><xliff:g id="app">%s</xliff:g>хоча ўсталяваць злучэнне VPN
+ гэта дазваляе яму кантраляваць сеткавы трафік. Працягвайце, калі вы давяраеце крыніцы.
+ <![CDATA[
+ <br />
+ <br />
+ <img src="vpn_icon" />
+ ]]>адлюстроўваецца ў верхняй частцы экрана, калі VPN-актыўны.
+ </string>
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <string name="legacy_title">VPN падключаны</string>
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <string name="configure">Налады</string>
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">Адключыцца</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="session">Сэсія:</string>
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="duration">Працягласць:</string>
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <string name="data_transmitted">Дасланыя:</string>
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <string name="data_received">Атрымана:</string>
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+ <string name="data_value_format">
+ <xliff:g id="number">%1$s</xliff:g> байт /
+ <xliff:g id="number">%2$s</xliff:g> пакетаў
+ </string>
+</resources>
diff --git a/packages/VpnDialogs/res/values-br-rFR/strings.xml b/packages/VpnDialogs/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-br-rFR/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-bs-rBA/strings.xml b/packages/VpnDialogs/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-bs-rBA/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-csb-rPL/strings.xml b/packages/VpnDialogs/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-csb-rPL/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-cy/strings.xml b/packages/VpnDialogs/res/values-cy/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-cy/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-en-rPT/strings.xml b/packages/VpnDialogs/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-en-rPT/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-eo/strings.xml b/packages/VpnDialogs/res/values-eo/strings.xml
new file mode 100644
index 0000000..946765c
--- /dev/null
+++ b/packages/VpnDialogs/res/values-eo/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">Malkonekti</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-es-rCO/strings.xml b/packages/VpnDialogs/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-es-rCO/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-es-rMX/strings.xml b/packages/VpnDialogs/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-es-rMX/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-frp-rIT/strings.xml b/packages/VpnDialogs/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-frp-rIT/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-fy-rNL/strings.xml b/packages/VpnDialogs/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-fy-rNL/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-ga-rIE/strings.xml b/packages/VpnDialogs/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-ga-rIE/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-gd-rGB/strings.xml b/packages/VpnDialogs/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-gd-rGB/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-ku/strings.xml b/packages/VpnDialogs/res/values-ku/strings.xml
new file mode 100644
index 0000000..65b6380
--- /dev/null
+++ b/packages/VpnDialogs/res/values-ku/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <string name="legacy_title">VPN پەیوەستکراوە</string>
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <string name="configure">رێکخستن</string>
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">پچڕاندنی پەیوەندی</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="session">دانشتن:</string>
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="duration">ماوه‌:</string>
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <string name="data_transmitted">گەیشت:</string>
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <string name="data_received">گەیشت:</string>
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+ <string name="data_value_format">
+ <xliff:g id="number">%1$s</xliff:g> بایت /
+ <xliff:g id="number">%2$s</xliff:g> گیرفانەکان
+ </string>
+</resources>
diff --git a/packages/VpnDialogs/res/values-lb/strings.xml b/packages/VpnDialogs/res/values-lb/strings.xml
new file mode 100644
index 0000000..f598ac6
--- /dev/null
+++ b/packages/VpnDialogs/res/values-lb/strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <string name="prompt">Connectiounsufro</string>
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <string name="warning"><xliff:g id="app">%s</xliff:g> wëll eng VPN-Connectioun opstellen, wouduerch den Netzwierktrafic kann iwwerwaacht ginn. Acceptéier dat just, wann s du der Quell vertraus.
+ <![CDATA[
+ <br />
+ <br />
+ <img src="vpn_icon" />
+ ]]> erschéngt uewen um Schierm, wa VPN aktiv ass.
+ </string>
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <string name="legacy_title">VPN connectéiert</string>
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <string name="configure">Astellen</string>
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">Deconnectéieren</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="session">Sëtzung:</string>
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="duration">Dauer:</string>
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <string name="data_transmitted">Geschéckt:</string>
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <string name="data_received">Empfaangen:</string>
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+ <string name="data_value_format">
+ <xliff:g id="number">%1$s</xliff:g> Bytes /
+ <xliff:g id="number">%2$s</xliff:g> Päck
+    </string>
+</resources>
diff --git a/packages/VpnDialogs/res/values-oc-rFR/strings.xml b/packages/VpnDialogs/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-oc-rFR/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-or-rIN/strings.xml b/packages/VpnDialogs/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..4afbe1f
--- /dev/null
+++ b/packages/VpnDialogs/res/values-or-rIN/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+</resources>
diff --git a/packages/VpnDialogs/res/values-ug/strings.xml b/packages/VpnDialogs/res/values-ug/strings.xml
new file mode 100644
index 0000000..f85983d
--- /dev/null
+++ b/packages/VpnDialogs/res/values-ug/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2011 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Dialog title to identify the request from a VPN application. [CHAR LIMIT=60] -->
+ <string name="prompt">باغلىنىش ئىلتىماسى</string>
+ <!-- Dialog message to warn about the risk of using a VPN application. [CHAR LIMIT=NONE] -->
+ <string name="warning"><xliff:g id="app">%s</xliff:g> سىزنىڭ VPN ئۇلىنىشىنى بېكىتىشىڭىزنى تەلەپ قىلىدۇ، تورنى نازارەت قىلدۇ. ئەگەر سىز ئىشەنسىڭىز يول قويۇڭ.
+<![CDATA[<br /><br /><img src="vpn_icon" />]]> ئېكراننىڭ چوققىسىدا كۆرۈنسە، VPN نىڭ ئاكتىپ ئىكەنلىكىنى بىلدۈرىدۇ. </string>
+ <!-- Dialog title for built-in VPN. [CHAR LIMIT=40] -->
+ <string name="legacy_title">VPN باغلاندى</string>
+ <!-- Button label to configure the current VPN session. [CHAR LIMIT=20] -->
+ <string name="configure">سەپلىمە</string>
+ <!-- Button label to disconnect the current VPN session. [CHAR LIMIT=20] -->
+ <string name="disconnect">ئۈز</string>
+ <!-- Label for the name of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="session">سۆزلىشىش</string>
+ <!-- Label for the duration of the current VPN session. [CHAR LIMIT=20] -->
+ <string name="duration">داۋاملىشىش ۋاقتى:</string>
+ <!-- Label for the network usage of data transmitted over VPN. [CHAR LIMIT=20] -->
+ <string name="data_transmitted">ئەۋەتىلگىنى:</string>
+ <!-- Label for the network usage of data received over VPN. [CHAR LIMIT=20] -->
+ <string name="data_received">تاپشۇرۇۋالغىنى:</string>
+ <!-- Formatted string for the network usage over VPN. [CHAR LIMIT=40] -->
+ <string name="data_value_format"><xliff:g id="NUMBER_0">%1$s</xliff:g> بايت/<xliff:g id="NUMBER_1">%2$s</xliff:g> بوغچا</string>
+</resources>
diff --git a/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java b/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java
index e970367..96d29fd 100644
--- a/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java
+++ b/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java
@@ -185,7 +185,6 @@ public class WapPushManager extends Service {
WapPushManDBHelper dbh = getDatabase(mContext);
SQLiteDatabase db = dbh.getReadableDatabase();
WapPushManDBHelper.queryData lastapp = dbh.queryLastApp(db, app_id, content_type);
- db.close();
if (lastapp == null) {
Log.w(LOG_TAG, "no receiver app found for " + app_id + ":" + content_type);
@@ -284,7 +283,6 @@ public class WapPushManager extends Service {
ret = true;
}
- db.close();
return ret;
}
@@ -308,7 +306,6 @@ public class WapPushManager extends Service {
WapPushManDBHelper.queryData lastapp = dbh.queryLastApp(db, x_app_id, content_type);
if (lastapp == null) {
- db.close();
return false;
}
@@ -328,7 +325,6 @@ public class WapPushManager extends Service {
+ package_name + "." + class_name
+ ", sq:" + lastapp.installOrder);
- db.close();
return num > 0;
}
@@ -346,7 +342,6 @@ public class WapPushManager extends Service {
+ " and class_name=\'" + class_name + "\'";
int num_removed = db.delete(APPID_TABLE_NAME, where, null);
- db.close();
if (LOCAL_LOGV) Log.v(LOG_TAG, "deleted " + num_removed + " rows:"
+ x_app_id + ":" + content_type + " "
+ package_name + "." + class_name);
@@ -399,7 +394,6 @@ public class WapPushManager extends Service {
if (LOCAL_LOGV) Log.v(LOG_TAG, "verifyData app id: " + x_app_id + " content type: " +
content_type + " lastapp: " + lastapp);
- db.close();
if (lastapp == null) return false;
@@ -430,7 +424,6 @@ public class WapPushManager extends Service {
SQLiteDatabase db = dbh.getReadableDatabase();
boolean ret = dbh.queryLastApp(db, x_app_id, content_type) != null;
- db.close();
return ret;
}
diff --git a/packages/WallpaperCropper/res/layout/actionbar_set_wallpaper.xml b/packages/WallpaperCropper/res/layout/actionbar_set_wallpaper.xml
index 54f8ff3..97cd620 100644
--- a/packages/WallpaperCropper/res/layout/actionbar_set_wallpaper.xml
+++ b/packages/WallpaperCropper/res/layout/actionbar_set_wallpaper.xml
@@ -32,5 +32,5 @@
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:text="@string/wallpaper_instructions"
- android:textColor="@android:color/white" />
+ android:textColor="@color/set_wallpaper_text_color" />
</FrameLayout>
diff --git a/packages/WallpaperCropper/res/values-as-rIN/strings.xml b/packages/WallpaperCropper/res/values-as-rIN/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-as-rIN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-ast-rES/strings.xml b/packages/WallpaperCropper/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..caa847e
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-ast-rES/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="crop_wallpaper">Recortar el fondu de pantalla</string>
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <string name="wallpaper_instructions">Afitar fondu de pantalla</string>
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+ <string name="wallpaper_load_fail">Nun pudo cargase la imaxe como fondu de pantalla</string>
+</resources>
diff --git a/packages/WallpaperCropper/res/values-be/strings.xml b/packages/WallpaperCropper/res/values-be/strings.xml
new file mode 100644
index 0000000..d8cce31
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-be/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="crop_wallpaper">Абрэзаць шпалеру</string>
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <string name="wallpaper_instructions">Усталяваць шпалеру</string>
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+ <string name="wallpaper_load_fail">Не атрымалася загрузіць выяву</string>
+</resources>
diff --git a/packages/WallpaperCropper/res/values-br-rFR/strings.xml b/packages/WallpaperCropper/res/values-br-rFR/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-br-rFR/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-bs-rBA/strings.xml b/packages/WallpaperCropper/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-bs-rBA/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-csb-rPL/strings.xml b/packages/WallpaperCropper/res/values-csb-rPL/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-csb-rPL/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-cy/strings.xml b/packages/WallpaperCropper/res/values-cy/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-cy/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-en-rPT/strings.xml b/packages/WallpaperCropper/res/values-en-rPT/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-en-rPT/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-eo/strings.xml b/packages/WallpaperCropper/res/values-eo/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-eo/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-es-rCO/strings.xml b/packages/WallpaperCropper/res/values-es-rCO/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-es-rCO/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-es-rMX/strings.xml b/packages/WallpaperCropper/res/values-es-rMX/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-es-rMX/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-frp-rIT/strings.xml b/packages/WallpaperCropper/res/values-frp-rIT/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-frp-rIT/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-fy-rNL/strings.xml b/packages/WallpaperCropper/res/values-fy-rNL/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-fy-rNL/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-ga-rIE/strings.xml b/packages/WallpaperCropper/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-ga-rIE/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-gd-rGB/strings.xml b/packages/WallpaperCropper/res/values-gd-rGB/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-gd-rGB/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-ku/strings.xml b/packages/WallpaperCropper/res/values-ku/strings.xml
new file mode 100644
index 0000000..973d055
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-ku/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="crop_wallpaper">بڕینی وێنەی پشتەوە</string>
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <string name="wallpaper_instructions">دانانی وێنەی پشتەوە</string>
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+ <string name="wallpaper_load_fail">نەتوانرا وێنەی پشتەوە دابنرێت</string>
+</resources>
diff --git a/packages/WallpaperCropper/res/values-lb/strings.xml b/packages/WallpaperCropper/res/values-lb/strings.xml
new file mode 100644
index 0000000..b4c6af6
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-lb/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="crop_wallpaper">Hannergrondbild schneiden</string>
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <string name="wallpaper_instructions">Hannergrondbild setzen</string>
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+ <string name="wallpaper_load_fail">D\'Bild konnt net als Hannergrondbild geluede ginn</string>
+</resources>
diff --git a/packages/WallpaperCropper/res/values-oc-rFR/strings.xml b/packages/WallpaperCropper/res/values-oc-rFR/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-oc-rFR/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-or-rIN/strings.xml b/packages/WallpaperCropper/res/values-or-rIN/strings.xml
new file mode 100644
index 0000000..0e609fe
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-or-rIN/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+</resources>
diff --git a/packages/WallpaperCropper/res/values-ug/strings.xml b/packages/WallpaperCropper/res/values-ug/strings.xml
new file mode 100644
index 0000000..e28e735
--- /dev/null
+++ b/packages/WallpaperCropper/res/values-ug/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2013 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="crop_wallpaper">تام قەغەز كەس</string>
+ <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
+ <string name="wallpaper_instructions">تام قەغەز تەڭشىكى</string>
+ <!-- Error message when an image is selected as a wallpaper,
+ but the wallpaper cropper cannot load it. The user will
+ usually see this when using another app and trying to set
+ an image as the wallpaper -->
+ <string name="wallpaper_load_fail">سۈرەتنى تام قەغەز سۈپىتىدە يۈكلىيەلمىدى</string>
+</resources>
diff --git a/packages/WallpaperCropper/res/values/cm_colors.xml b/packages/WallpaperCropper/res/values/cm_colors.xml
new file mode 100644
index 0000000..bfb2994
--- /dev/null
+++ b/packages/WallpaperCropper/res/values/cm_colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod 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>
+
+ <color name="set_wallpaper_text_color">@android:color/white</color>
+</resources>